במסמך הזה מתואר תהליך כוונון הביצועים שמטרתו היא לבצע אופטימיזציה של ביצועי החומרה.
מאפיינים של OpenGLRenderer (libhwui)
במאמר הזה מתוארים מאפיינים לשליטה בצינור העיבוד של רינדור דו-ממדי עם האצת חומרה ב-Android. מגדירים את המאפיינים האלה ב-device.mk
כ-PRODUCT_PROPERTY_OVERRIDES
.
מאפיינים לכל הגרסאות של Android
נכס | סוג | ערך ברירת מחדל | תיאור |
---|---|---|---|
ro.zygote.disable_gl_preload |
boolean |
false |
ההגדרה הזו מפעילה או משביתה טעינה מראש של דרייברים של EGL/GL ב-Zygote בזמן האתחול.
כשהמאפיין הזה הוא false , Zygote טוען מראש את מנהלי ההתקנים של GL על ידי הפעלת eglGetDisplay(EGL_DEFAULT_DISPLAY) . הפעולה הזו טוענת את קוד הספרייה הדינמית ב-Zygote כדי לשתף אותו עם כל התהליכים האחרים. אם מנהל ההתקן לא תומך בשיתוף, צריך להגדיר את המאפיין הזה לערך true . |
מאפיינים ל-Android מגרסה 8.0 ומטה
נכס | סוג | ערך ברירת מחדל | תיאור |
---|---|---|---|
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 ערכים מסוג float, או 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-bit. לדוגמה, במסך בגודל 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 גורם להשחתה או לביצועים ירודים. לכן הנכס לא מוגדר לקריאה בלבד. |