הגדרת OpenGLRenderer

במסמך הזה מתואר תהליך כוונון הביצועים שמטרתו היא לבצע אופטימיזציה של ביצועי החומרה.

מאפיינים של 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

הפעלה או השבתה של אופטימיזציה של מספריים. הערכים הקבילים הם true ו-false. כשאופטימיזציה של חיתוך מופעלת, OpenGLRenderer מנסה למזער את החיתוך על ידי הפעלה והשבתה סלקטיביות של בדיקת החיתוך ב-GL.

כשההגדרה מושבתת, 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 בחירה בשיטה לתיקון גמא של הטקסט. יש ארבע אפשרויות:
  • lookup3: תיקון שמבוסס על טבלאות חיפוש. תיקון גמא שונה לטקסט שחור ולטקסט לבן (ראו את ערכי הסף בהמשך).
  • lookup: תיקון שמבוסס על טבלת בדיקה אחת.
  • shader3: תיקון שמוחל על ידי GLSL shader. תיקון הגמא שונה לטקסט שחור ולטקסט לבן (ראו את ערכי הסף בהמשך).
  • shader: תיקון שמוחל על ידי GLSL shader.
פונקציית החיפוש של תיקוני גאמה פועלת בצורה הטובה ביותר במעבדים גרפיים עם מתמטיקה מוגבלת של הצללה. תיקוני גמא של Shader הם הדרך הכי טובה לחסוך בזיכרון. מומלץ להשתמש בטכניקה 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 גורם להשחתה או לביצועים ירודים. לכן הנכס לא מוגדר לקריאה בלבד.