במסמך הזה מוסבר איך לשפר את הביצועים כדי להפיק את המקסימום מהחומרה.
מאפייני 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 |
משמש להפעלה או להשבתה של אופטימיזציית Scissor. הערכים הקבילים הם true ו-false. כשאופטימיזציית scissor מופעלת, OpenGLRenderer מנסה לצמצם את השימוש ב-scissoring על ידי הפעלה וסגירה סלקטיביות של בדיקת ה-GL scissor. כשהאופטימיזציה מושבתת, OpenGLRenderer משאיר את בדיקת ה-GL scissor מופעלת ומשנה את scissor rect לפי הצורך. בחלק ממעבד הגרפיקה (למשל, SGX 540), הביצועים טובים יותר כשמשנים את ריבוע החיתוך בתדירות גבוהה יותר מאשר מפעילים או משביתים את בדיקת החיתוך בתדירות גבוהה. |
ro.hwui.texture_cache_size |
float |
24 |
הגדרת הגודל, במגה-בייט, של מטמון הטקסטורות לכל תהליך. מומלץ להשתמש במטמון גדול מספיק כדי להכיל כמה מסכים של טקסטורות 32 ביט (לדוגמה, במסך 1280x800, מאגר של מסך מלא משתמש בכ-4MB, כך שהמטמון צריך להיות בנפח של 20MB לפחות). |
ro.hwui.layer_cache_size |
float |
16 |
הגדרת הגודל, במגה-בייט, של המטמון של השכבות לכל תהליך. מומלץ להשתמש במטמון גדול מספיק כדי להכיל 4 פעמים את המסך ב-32 ביט. לדוגמה, במסך בגודל 1280x800, מאגר נתונים במסך מלא משתמש בכ-4MB, כך שצריך להגדיר למטמון נפח של 16MB לפחות. |
ro.hwui.gradient_cache_size |
0.5 |
float |
הגדרת הגודל, במגה-בייט, של מטמון המעברים לכל תהליך. בדרך כלל, שיפוע יחיד תופס בין 1 ל-4KB של זיכרון. מומלץ להשתמש במטמון גדול מספיק כדי להכיל לפחות 12 מעברי צבע. |
ro.hwui.patch_cache_size |
integer |
128 |
הגדרת הגודל, בקילובייט, של המטמון של 9 התיקונים לכל תהליך. המטמון הזה מכיל רק נתוני קודקודים, ולכן אפשר לשמור אותו קטן. כל קודקוד מורכב מ-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 ביט שמיועדות לשני מסכים. לדוגמה, במסך בגודל 1280x800, מאגר נתונים במסך מלא משתמש ב-1MB בערך, כך שצריך להגדיר למטמון נפח של 2MB לפחות. |
ro.hwui.r_buffer_cache_size |
float |
2 |
הגדרת הגודל, במגה-בייט, של מטמון מאגרי ה-render לכל תהליך. מומלץ להשתמש במטמון גדול מספיק כדי להכיל פי שניים מהמסך ב-8 ביט. לדוגמה, במסך בגודל 1280x800, מאגר נתונים במסך מלא משתמש ב-1MB בערך, ולכן נפח המטמון צריך להיות לפחות 2MB. אם המכשיר תומך במאגרי סטנסיל של 4 ביט או של ביט אחד, המטמון יכול להיות קטן יותר. |
ro.hwui.texture_cache_flush_rate |
float |
0.6 |
מגדיר את האחוז של מטמון הטקסטורות שצריך לשמור אחרי שטיפה של הזיכרון. שטיפה של זיכרון מופעלת כשהמערכת צריכה לפנות זיכרון בכל האפליקציות. במקרים כאלה, מומלץ לפנות כ-50% מהמטמון. |
ro.hwui.text_small_cache_width |
integer |
1024 |
הגדרת רוחב מטמון הגופנים שמוגדר כברירת מחדל בפיקסלים. הגבול העליון תלוי במהירות שבה ה-GPU יכול להעלות טקסטורות. מומלץ להשתמש בתמונה בגודל של 1,024 פיקסלים לפחות, אבל לא יותר מ-2,048 פיקסלים. מומלץ גם להשתמש בערך של חזקה של שתיים. |
ro.hwui.text_small_cache_height |
integer |
256 |
הגדרת הגובה בפיקסלים של מטמון הגופנים שמוגדר כברירת מחדל. הגבול העליון תלוי במהירות שבה ה-GPU יכול להעלות טקסטורות. מומלץ להשתמש בתמונה בגודל של 256 פיקסלים לפחות, אבל לא יותר מ-1,024 פיקסלים. |
ro.hwui.text_large_cache_width |
integer |
2048 |
הגדרת הרוחב בפיקסלים של מטמון הגופן הגדול. המטמון הזה משמש לגליפים גדולים מדי מכדי שיוכלו להיכנס למטמון הגופנים שמוגדר כברירת מחדל. הגבול העליון תלוי במהירות שבה ה-GPU יכול להעלות טקסטורות. מומלץ להשתמש בתמונה בגודל של 2,048 פיקסלים לפחות, אבל לא יותר מ-4,096 פיקסלים. מומלץ גם להשתמש בערך של חזקה של שתיים. |
ro.hwui.text_large_cache_height |
integer |
512 |
הגדרת הגובה בפיקסלים של מטמון הגופנים הגדול. מטמון הגופנים הגדול משמש לגליפים גדולים מדי מכדי שיוכלו להיכנס למטמון הגופנים שמוגדר כברירת מחדל. הגבול העליון תלוי במהירות שבה ה-GPU יכול להעלות טקסטורות. מומלץ להשתמש בתמונה בגודל של 512 פיקסלים לפחות, אבל לא יותר מ-2,048 פיקסלים. מומלץ גם להשתמש בערך של חזקה של שתיים. |
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 |
משמש להפעלה או להשבתה של השימוש ב-PBOs בחומרה של OpenGL ES 3.0. ה-PBO משמשים את ה-renderer לביצוע העלאות אסינכררוניות של טקסטורות, במיוחד למטמון הגופנים. תמיד צריך להשאיר את המאפיין הזה מופעל, אבל אפשר להשבית אותו במהלך ההרצה הראשונית או הפיתוח אם השימוש ב-PBO גורם לפגיעה בנתונים או לביצועים גרועים. לכן הנכס לא מוגדר לקריאה בלבד. |