پیکربندی 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 را فعال نگه می‌دارد و مستطیل قیچی را درصورت نیاز تغییر می‌دهد. برخی‌از واحدهای پردازش گرافیکی (برای مثال، SGX 540) وقتی مستطیل قیچی را بیشتر از فعال یا غیرفعال کردن مکرر آزمایش قیچی تغییر می‌دهند عملکرد بهتری دارند.

ro.hwui.texture_cache_size float 24 اندازه حافظه نهان بافت را برحسب مگابایت برای هر پردازش تعریف می‌کند. توصیه می‌کنیم از حافظه نهانی‌ای استفاده کنید که به اندازه کافی بزرگ باشد تا چندین صفحه بافت ۳۲ بیتی را در خود جای دهد. برای مثال، در نمایشگر ۱۲۸۰×۸۰۰، میان‌گیر تمام‌صفحه حدود ۴ مگابایت استفاده می‌کند، بنابراین حافظه نهان باید حداقل ۲۰ مگابایت باشد.
ro.hwui.layer_cache_size float 16 اندازه حافظه نهان لایه‌های هر پردازش را برحسب مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه نهانی استفاده کنید که به‌اندازه کافی بزرگ باشد تا بتواند چهار برابر صفحه را در ۳۲ بیت نگه دارد. برای مثال، در نمایشگر ۱۲۸۰x۸۰۰، بافر تمام‌صفحه حدود ۴ مگابایت استفاده می‌کند، بنابراین حافظه نهان باید حداقل ۱۶ مگابایت باشد.
ro.hwui.gradient_cache_size float 0.5 اندازه حافظه نهان گرادیان‌های هر فرایند را برحسب مگابایت تعریف می‌کند. یک گرادیان واحد معمولاً بین ۱ تا ۴ کیلوبایت از حافظه را اشغال می‌کند. توصیه می‌کنیم از حافظه نهانی استفاده کنید که به‌اندازه کافی بزرگ باشد تا حداقل ۱۲ گرادیان را در خود جای دهد.
ro.hwui.patch_cache_size integer 128 اندازه حافظه نهان ۹-تکه‌ای را برحسب کیلوبایت برای هر فرایند تعریف می‌کند. این حافظه پنهان فقط داده‌های رأس را نگه می‌دارد، بنابراین می‌توانید آن را کوچک نگه دارید. هر رأس از ۴ عدد اعشاری یا ۱۶ بایت تشکیل شده است.
ro.hwui.path_cache_size float 4 اندازه حافظه نهان مسیرهای هر فرایند را به مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه نهانه‌ای استفاده کنید که به اندازه کافی بزرگ باشد تا حداقل یک صفحه از بافت‌های ۳۲ بیتی را در خود جای دهد. برای مثال، در نمایشگر ۱۲۸۰x۸۰۰، بافر تمام‌صفحه حدود ۴ مگابایت استفاده می‌کند، بنابراین حافظه نهان باید حداقل ۴ مگابایت باشد.
ro.hwui.shape_cache_size float 1 اندازه حافظه نهان شکل‌های هر پردازش را برحسب مگابایت تعریف می‌کند. این مقدار توسط چندین حافظه نهان، مانند دایره‌ها و مستطیل‌های گرد، استفاده می‌شود. توصیه می‌کنیم از حافظه نهانی استفاده کنید که حداقل یک صفحه ۸ بیتی را در خود جای دهد. برای مثال، در نمایشگر ۱۲۸۰x۸۰۰، بافر تمام‌صفحه حدود ۱ مگابایت استفاده می‌کند، بنابراین حافظه نهان باید حداقل ۱ مگابایت باشد.
ro.hwui.drop_shadow_cache_size float 2 اندازه حافظه پنهان سایه نوشتار برای هر فرایند را برحسب مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه نهانی استفاده کنید که به‌اندازه کافی بزرگ باشد تا بتواند دو صفحه از بافت‌های ۸ بیتی را نگه دارد. برای مثال، در نمایشگر ۱۲۸۰x۸۰۰، بافر تمام‌صفحه حدود ۱ مگابایت استفاده می‌کند، بنابراین حافظه نهان باید حداقل ۲ مگابایت باشد.
ro.hwui.r_buffer_cache_size float 2 اندازه حافظه نهان میان‌گیرهای پردازش رندر را به مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه نهانه‌ای استفاده کنید که به اندازه کافی بزرگ باشد تا دو برابر صفحه را در ۸ بیت نگه دارد. برای مثال، در نمایشگر ۱۲۸۰x۸۰۰، بافر تمام‌صفحه حدود ۱ مگابایت استفاده می‌کند، بنابراین حافظه نهان باید حداقل ۲ مگابایت باشد. اگر دستگاه از بافرهای شابلون ۴ بیتی یا ۱ بیتی پشتیبانی کند، حافظه نهان می‌تواند کوچک‌تر باشد.
ro.hwui.texture_cache_flush_rate float 0.6 درصد حافظه نهان بافت را که پس‌از پاک‌سازی حافظه باید حفظ شود تعریف می‌کند. وقتی سیستم نیاز به بازپس‌گیری حافظه در همه برنامه‌ها داشته باشد، تخلیه حافظه را راه‌اندازی می‌کند. توصیه می‌کنیم در چنین شرایطی حدود ۵۰٪ از حافظه نهان را آزاد کنید.
ro.hwui.text_small_cache_width integer 1024 عرض حافظه نهان قلم پیش‌فرض را به پیکسل تعریف می‌کند. حد بالایی به سرعت بارگذاری بافت‌ها توسط GPU بستگی دارد. توصیه می‌کنیم از حداقل ۱۰۲۴ پیکسل و حداکثر ۲۰۴۸ پیکسل استفاده کنید. همچنین، از مقدار توان دو استفاده کنید.
ro.hwui.text_small_cache_height integer 256 ارتفاع حافظه نهان قلم پیش‌فرض را به پیکسل تعریف می‌کند. حد بالایی به سرعت بارگذاری بافت‌ها توسط GPU بستگی دارد. توصیه می‌کنیم از حداقل ۲۵۶ پیکسل و حداکثر ۱۰۲۴ پیکسل استفاده کنید.
ro.hwui.text_large_cache_width integer 2048 عرض حافظه نهان قلم بزرگ را به پیکسل تعریف می‌کند. این حافظه نهان برای حروف تصویری‌ای که برای قرار گرفتن در حافظه نهان قلم پیش‌فرض خیلی بزرگ هستند استفاده می‌شود. حد بالا به سرعت بارگذاری بافت‌ها توسط GPU بستگی دارد. توصیه می‌کنیم حداقل از ۲۰۴۸ پیکسل و حداکثر از ۴۰۹۶ پیکسل استفاده کنید. همچنین، از مقدار توان دو استفاده کنید.
ro.hwui.text_large_cache_height integer 512 ارتفاع حافظه نهان قلم بزرگ را به پیکسل تعریف می‌کند. از حافظه نهان قلم بزرگ برای حروف تصویری‌ای که برای قرار گرفتن در حافظه نهان قلم پیش‌فرض خیلی بزرگ هستند نیز استفاده می‌شود. حد بالایی به سرعت بارگذاری بافت‌ها توسط GPU بستگی دارد. توصیه می‌کنیم از حداقل ۵۱۲ پیکسل و حداکثر ۲۰۴۸ پیکسل استفاده کنید. همچنین، از مقدار توان دو استفاده کنید.
hwui.text_gamma_correction string lookup تکنیک تصحیح گامای نوشتار را انتخاب می‌کند. چهار انتخاب ممکن وجود دارد:
  • ‫lookup3: اصلاح براساس جدول‌های جستجو. تصحیح گاما برای نوشتار سیاه و سفید متفاوت است (آستانه‌ها را در زیر ببینید).
  • ‫lookup: تصحیحی براساس یک جدول جستجو.
  • shader3: اصلاحی که توسط سایه‌زن GLSL اعمال شده است. تصحیح گاما برای نوشتار سیاه و سفید متفاوت است (آستانه‌ها را در زیر ببینید).
  • shader: اصلاحی که توسط سایه‌زن GLSL اعمال شده است.
عملکرد تابع اصلاحات گاما در واحدهای پردازش گرافیکی با ریاضیات سایه‌زن محدود بهترین عملکرد را دارد. اصلاحات گامای سایه‌زن برای صرفه‌جویی در حافظه بهترین است. توصیه می‌کنیم از تکنیک پیش‌فرض lookup استفاده کنید که ازنظر کیفیت، سرعت، و استفاده از حافظه، سازش خوبی ارائه می‌دهد.
hwui.text_gamma float 1.4 مقدار گامای استفاده‌شده برای تصحیح گامای نوشتار را تعریف می‌کند. می‌توانید این مقدار را براساس نمایشگر دستگاه تنظیم کنید.
hwui.text_gamma.black_threshold integer 64 آستانه درخشندگی را که تصحیح گامای سیاه زیر آن اعمال می‌شود تعریف می‌کند. مقدار باید در محدوده ۰ تا ۲۵۵ باشد.
hwui.text_gamma.white_threshold integer 192 آستانه درخشندگی را تعریف می‌کند که بالاتر از آن تصحیح گامای سفید اعمال می‌شود. مقدار باید در محدوده ۰ تا ۲۵۵ باشد.
hwui.use_gpu_pixel_buffers boolean true استفاده از PBO در سخت‌افزار OpenGL ES 3.0 را فعال یا غیرفعال می‌کند. پردازنده از PBO برای انجام بارگذاری‌های بافت ناهمزمان، به‌ویژه برای حافظه نهان قلم استفاده می‌کند. این دارایی باید همیشه فعال بماند، اما اگر PBO باعث خرابی یا عملکرد ضعیف شود، می‌توانید آن را درطول راه‌اندازی یا توسعه غیرفعال کنید. به همین دلیل است که دارایی فقط خواندنی نیست.