במסמך הזה מתואר כוונון ביצועים שמטרתו היא אופטימיזציה של ביצועי החומרה.
מאפיינים של OpenGLRenderer (libhwui)
במאמר הזה מתוארים מאפיינים לשליטה בצינור העיבוד של רינדור דו-ממדי עם האצת חומרה ב-Android. צריך להגדיר את המאפיינים האלה ב-device.mk כ-PRODUCT_PROPERTY_OVERRIDES.
מאפיינים לכל הגרסאות של Android
| מאפיין (property) | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
ro.zygote.disable_gl_preload |
boolean |
false |
ההגדרה הזו מפעילה או משביתה טעינה מראש של דרייברים של EGL/GL ב-Zygote בזמן האתחול.
כשהמאפיין הזה הוא false, Zygote טוען מראש את מנהלי ההתקנים של GL על ידי הפעלת eglGetDisplay(EGL_DEFAULT_DISPLAY). הפעולה הזו טוענת את קוד הספרייה הדינמית ב-Zygote כדי לשתף אותו עם כל התהליכים האחרים. אם מנהל ההתקן לא תומך בשיתוף, מגדירים את המאפיין הזה לערך true. |
מאפיינים ל-Android מגרסה 8.0 ומטה
| מאפיין (property) | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
ro.hwui.disable_scissor_opt |
boolean |
false |
הפעלה או השבתה של אופטימיזציה של מספריים. הערכים הקבילים הם כשההגדרה מושבתת, OpenGLRenderer משאיר את בדיקת ה-GL scissor מופעלת ומשנה את ה-scissor rect לפי הצורך. חלק מה-GPU (לדוגמה, SGX 540) פועלים טוב יותר כשמשנים את מלבן הגזירה בתדירות גבוהה יותר מאשר כשמפעילים או משביתים את בדיקת הגזירה בתדירות גבוהה. |
ro.hwui.texture_cache_size |
float |
24 |
מגדיר את הגודל, במגה-בייט, של מטמון הטקסטורה לכל תהליך. אנחנו ממליצים להשתמש במטמון גדול מספיק כדי להכיל כמה מסכים של טקסטורות 32 ביט. לדוגמה, במסך בגודל 1280x800, מאגר זמני למסך מלא תופס נפח של כ-4MB, ולכן גודל המטמון צריך להיות לפחות 20MB. |
ro.hwui.layer_cache_size |
float |
16 |
ההגדרה מגדירה את הגודל, במגה-בייט, של מטמון השכבות לכל תהליך. מומלץ להשתמש במטמון גדול מספיק כדי להכיל פי ארבעה מהמסך ב-32 ביט. לדוגמה, בתצוגה של 1280x800, מאגר זמני למסך מלא תופס נפח של כ-4MB, ולכן צריך להקצות למטמון נפח של 16MB לפחות. |
ro.hwui.gradient_cache_size |
float |
0.5 |
מגדיר את הגודל, במגה-בייט, של מטמון הגרדיאנטים לכל תהליך. A כל מעבר צבעים תופס בדרך כלל בין 1KB ל-4KB של זיכרון. מומלץ להשתמש במטמון גדול מספיק כדי להכיל לפחות 12 מעברי צבע. |
ro.hwui.patch_cache_size |
integer |
128 |
ההגדרה הזו מגדירה את הגודל, בקילובייט, של מטמון 9-patches לכל תהליך. המטמון הזה מכיל רק נתוני קודקודים, כך שאפשר לשמור אותו קטן. כל קודקוד מורכב מ-4 מספרים ממשיים, או מ-16 בייטים. |
ro.hwui.path_cache_size |
float |
4 |
ההגדרה קובעת את הגודל של מטמון הנתיבים לכל תהליך, במגה-בייט. מומלץ להשתמש במטמון גדול מספיק כדי להכיל לפחות מסך אחד של טקסטורות 32 ביט. לדוגמה, בתצוגה של 1280x800, מאגר זמני למסך מלא תופס נפח של כ-4MB, ולכן צריך להקצות למטמון נפח של 4MB לפחות. |
ro.hwui.shape_cache_size |
float |
1 |
מגדיר את הגודל, במגה-בייט, של מטמון הצורות לכל תהליך. הערך הזה משמש כמה מטמונים, כמו עיגולים ומלבנים עם פינות מעוגלות. אנחנו ממליצים להשתמש במטמון גדול מספיק כדי להכיל לפחות מסך אחד של 8 ביט. לדוגמה, במסך ברזולוציה של 1280x800, מאגר זמני למסך מלא תופס נפח של כ-1MB, ולכן גודל המטמון צריך להיות לפחות 1MB. |
ro.hwui.drop_shadow_cache_size |
float |
2 |
מגדיר את הגודל, במגה-בייט, של המטמון של הצללות הטקסט לכל תהליך. מומלץ להשתמש במטמון גדול מספיק כדי להכיל שתי תמונות של טקסטורות ב-8 ביט. לדוגמה, במסך בגודל 1280x800, מאגר זמני למסך מלא תופס נפח של כ-1MB, ולכן צריך להקצות למטמון נפח של לפחות 2MB. |
ro.hwui.r_buffer_cache_size |
float |
2 |
הגדרת הגודל, במגה-בייט, של מטמון מאגרי הרינדור לכל תהליך. מומלץ להשתמש במטמון גדול מספיק כדי להכיל פי שניים מהמסך ב-8 ביט. לדוגמה, במסך בגודל 1280x800, מאגר זמני למסך מלא תופס נפח של כ-1MB, ולכן המטמון צריך להיות לפחות 2MB. גודל המטמון יכול להיות קטן יותר אם המכשיר תומך במאגרי סטנסיל של 4 ביט או ביט אחד. |
ro.hwui.texture_cache_flush_rate |
float |
0.6 |
הגדרה של אחוז המטמון של הטקסטורה שיישמר אחרי ניקוי הזיכרון. המערכת מפעילה ניקוי זיכרון כשצריך לפנות זיכרון בכל האפליקציות. במקרים כאלה, מומלץ לנקות כ-50% מהמטמון. |
ro.hwui.text_small_cache_width |
integer |
1024 |
ההגדרה מגדירה את הרוחב בפיקסלים של מטמון הגופנים שמוגדר כברירת מחדל. הגבול העליון תלוי במהירות שבה המעבד הגרפי יכול להעלות טקסטורות. מומלץ להשתמש ברזולוציה של לפחות 1,024 פיקסלים, אבל לא יותר מ-2,048 פיקסלים. בנוסף, צריך להשתמש בערך שהוא חזקה של 2. |
ro.hwui.text_small_cache_height |
integer |
256 |
הגובה של מטמון הגופנים שמוגדר כברירת מחדל, בפיקסלים. הגבול העליון תלוי במהירות שבה המעבד הגרפי יכול להעלות טקסטורות. מומלץ להשתמש ברזולוציה של לפחות 256 פיקסלים, אבל לא יותר מ-1,024 פיקסלים. |
ro.hwui.text_large_cache_width |
integer |
2048 |
הרוחב של מטמון הגופנים הגדול, בפיקסלים. המטמון הזה משמש גם לסימני גליף גדולים מדי שלא נכנסים למטמון ברירת המחדל של הגופן. הגבול העליון תלוי במהירות שבה המעבד הגרפי יכול להעלות טקסטורות. מומלץ להשתמש בתמונה בגודל של 2048 פיקסלים לפחות, אבל לא יותר מ-4096 פיקסלים. בנוסף, צריך להשתמש בערך שהוא חזקה של 2. |
ro.hwui.text_large_cache_height |
integer |
512 |
הגובה של מטמון הגופנים הגדול בפיקסלים. המטמון של הגופנים הגדולים משמש גם לסימנים גרפיים גדולים מדי שלא נכנסים למטמון הגופנים שמוגדר כברירת מחדל. הגבול העליון תלוי במהירות שבה המעבד הגרפי יכול להעלות טקסטורות. מומלץ להשתמש ברזולוציה של לפחות 512 פיקסלים, אבל לא יותר מ-2,048 פיקסלים. בנוסף, צריך להשתמש בערך שהוא חזקה של 2. |
hwui.text_gamma_correction |
string |
lookup |
בוחרים את שיטת תיקון הגמא של הטקסט. יש ארבע אפשרויות:
lookup המוגדרת כברירת מחדל, שמציעה פשרה טובה מבחינת איכות, מהירות ושימוש בזיכרון.
|
hwui.text_gamma |
float |
1.4 |
הגדרת ערך הגמא שמשמש לתיקון גמא של טקסט. אפשר לשנות את הערך הזה בהתאם לתצוגה של המכשיר. |
hwui.text_gamma.black_threshold |
integer |
64 |
הגדרת סף הבהירות שמתחתיו מוחל תיקון גמא שחור. הערך חייב להיות בטווח 0-255. |
hwui.text_gamma.white_threshold |
integer |
192 |
הגדרת סף הבהירות שמעליו מוחל תיקון גמא לבן. הערך חייב להיות בטווח 0-255. |
hwui.use_gpu_pixel_buffers |
boolean |
true |
ההגדרה הזו מאפשרת להפעיל או להשבית את השימוש ב-PBO בחומרה של OpenGL ES 3.0. הכלי לעיבוד משתמש ב-PBO כדי לבצע העלאות אסינכרוניות של טקסטורות, במיוחד עבור מטמון הגופנים. המאפיין הזה צריך להיות תמיד מופעל, אבל אפשר להשבית אותו במהלך ההפעלה או הפיתוח אם PBO גורם להשחתה או לביצועים ירודים. לכן הנכס לא מוגדר לקריאה בלבד. |