پیکربندی OpenGLRenderer

این سند، تنظیم عملکرد برای بهینه‌سازی عملکرد سخت‌افزار را شرح می‌دهد.

ویژگی‌های OpenGLRenderer (libhwui)

این سند ویژگی‌هایی را برای کنترل خط لوله رندر دوبعدی اندروید که توسط سخت‌افزار شتاب‌دهی می‌شود، شرح می‌دهد. این ویژگی‌ها را در device.mk به عنوان PRODUCT_PROPERTY_OVERRIDES تنظیم کنید.

ویژگی‌های همه نسخه‌های اندروید

ملک نوع مقدار پیش‌فرض توضیحات
ro.zygote.disable_gl_preload boolean false فعال یا غیرفعال کردن پیش‌بارگذاری درایورهای EGL/GL در Zygote در زمان بوت. وقتی این ویژگی false باشد، Zygote با فراخوانی eglGetDisplay(EGL_DEFAULT_DISPLAY) درایورهای GL را پیش‌بارگذاری می‌کند. این کار کد کتابخانه پویا را در Zygote بارگذاری می‌کند تا آن را با سایر فرآیندها به اشتراک بگذارد. اگر درایوری از اشتراک‌گذاری پشتیبانی نمی‌کند، این ویژگی را روی true تنظیم کنید.

ویژگی‌های اندروید ۸.۰ و پایین‌تر

ملک نوع مقدار پیش‌فرض توضیحات
ro.hwui.disable_scissor_opt boolean false

بهینه‌سازی قیچی را فعال یا غیرفعال می‌کند. مقادیر پذیرفته شده true و false هستند. وقتی بهینه‌سازی قیچی فعال باشد، OpenGLRenderer با فعال و غیرفعال کردن انتخابی تست قیچی GL، سعی می‌کند قیچی کردن را به حداقل برساند.

وقتی غیرفعال باشد، OpenGLRenderer تست قیچی GL را فعال نگه می‌دارد و در صورت نیاز scissor rect را تغییر می‌دهد. برخی از پردازنده‌های گرافیکی (به عنوان مثال، SGX 540) هنگام تغییر مکرر scissor rect نسبت به فعال یا غیرفعال کردن مکرر تست قیچی، عملکرد بهتری دارند.

ro.hwui.texture_cache_size float 24 اندازه حافظه پنهان بافت هر فرآیند را بر حسب مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه پنهانی به اندازه کافی بزرگ استفاده کنید تا چندین صفحه نمایش با بافت‌های ۳۲ بیتی را در خود جای دهد. به عنوان مثال، در یک صفحه نمایش ۱۲۸۰x۸۰۰، یک بافر تمام صفحه حدود ۴ مگابایت استفاده می‌کند، بنابراین حافظه پنهان باید حداقل ۲۰ مگابایت باشد.
ro.hwui.layer_cache_size float 16 اندازه حافظه پنهان (cache) لایه‌های هر فرآیند را بر حسب مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه پنهانی (cache) به اندازه کافی بزرگ استفاده کنید تا چهار برابر صفحه نمایش را در ۳۲ بیت نگه دارد. به عنوان مثال، در یک صفحه نمایش ۱۲۸۰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 اندازه حافظه پنهان بافرهای رندر هر فرآیند را بر حسب مگابایت تعریف می‌کند. توصیه می‌کنیم از حافظه پنهانی به اندازه کافی بزرگ استفاده کنید تا دو برابر صفحه نمایش را در 8 بیت نگه دارد. به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه حدود 1 مگابایت استفاده می‌کند، بنابراین حافظه پنهان باید حداقل 2 مگابایت باشد. اگر دستگاه از بافرهای استنسیل 4 بیتی یا 1 بیتی پشتیبانی کند، حافظه پنهان می‌تواند کوچکتر باشد.
ro.hwui.texture_cache_flush_rate float 0.6 درصد حافظه نهان بافت را که پس از پاکسازی حافظه حفظ می‌شود، تعریف می‌کند. سیستم زمانی که نیاز به بازیابی حافظه در تمام برنامه‌ها دارد، پاکسازی حافظه را آغاز می‌کند. توصیه می‌کنیم در چنین شرایطی حدود ۵۰٪ از حافظه نهان را آزاد کنید.
ro.hwui.text_small_cache_width integer 1024 عرض حافظه پنهان فونت پیش‌فرض را بر حسب پیکسل تعریف می‌کند. حد بالای آن به سرعت بارگذاری بافت‌ها توسط پردازنده گرافیکی (GPU) بستگی دارد. توصیه می‌کنیم حداقل از 1024 پیکسل و حداکثر از 2048 پیکسل استفاده کنید. همچنین، از مقداری با توان دو استفاده کنید.
ro.hwui.text_small_cache_height integer 256 ارتفاع حافظه پنهان فونت پیش‌فرض را بر حسب پیکسل تعریف می‌کند. حد بالای آن به سرعت بارگذاری بافت‌ها توسط پردازنده گرافیکی (GPU) بستگی دارد. توصیه می‌کنیم حداقل از ۲۵۶ پیکسل و حداکثر از ۱۰۲۴ پیکسل استفاده کنید.
ro.hwui.text_large_cache_width integer 2048 عرض حافظه پنهان فونت بزرگ را بر حسب پیکسل تعریف می‌کند. این حافظه پنهان برای گلیف‌هایی استفاده می‌شود که برای قرار گرفتن در حافظه پنهان فونت پیش‌فرض بسیار بزرگ هستند. حد بالای آن به سرعت بارگذاری بافت‌ها توسط پردازنده گرافیکی (GPU) بستگی دارد. توصیه می‌کنیم حداقل از 2048 پیکسل و حداکثر 4096 پیکسل استفاده کنید. همچنین، از مقداری با توان دو استفاده کنید.
ro.hwui.text_large_cache_height integer 512 ارتفاع حافظه پنهان فونت بزرگ را بر حسب پیکسل تعریف می‌کند. حافظه پنهان فونت بزرگ برای گلیف‌هایی استفاده می‌شود که برای قرار گرفتن در حافظه پنهان فونت پیش‌فرض بسیار بزرگ هستند. حد بالای آن به سرعت بارگذاری بافت‌ها توسط پردازنده گرافیکی (GPU) بستگی دارد. توصیه می‌کنیم حداقل از ۵۱۲ پیکسل و حداکثر ۲۰۴۸ پیکسل استفاده کنید. همچنین، از مقداری با توان دو استفاده کنید.
hwui.text_gamma_correction string lookup تکنیک تصحیح گامای متن را انتخاب می‌کند. چهار انتخاب ممکن وجود دارد:
  • lookup3 : تصحیحی بر اساس جداول جستجو. تصحیح گاما برای متن سیاه و سفید متفاوت است (به آستانه‌های زیر مراجعه کنید).
  • lookup : تصحیحی مبتنی بر یک جدول جستجوی واحد.
  • shader3 : تصحیحی که توسط یک shader GLSL اعمال می‌شود. تصحیح گاما برای متن سیاه و سفید متفاوت است (به آستانه‌های زیر مراجعه کنید).
  • shader : تصحیحی که توسط سایه‌زن GLSL اعمال می‌شود.
تصحیح گامای جستجو در GPUهایی با ریاضیات سایه‌زن محدود بهترین عملکرد را دارد. تصحیح گامای سایه‌زن برای صرفه‌جویی در حافظه بهترین گزینه است. توصیه می‌کنیم از تکنیک lookup پیش‌فرض استفاده کنید که از نظر کیفیت، سرعت و استفاده از حافظه، سازش خوبی را ارائه می‌دهد.
hwui.text_gamma float 1.4 مقدار گامای مورد استفاده برای تصحیح گامای متن را تعریف می‌کند. می‌توانید این مقدار را بر اساس نمایشگر دستگاه تنظیم کنید.
hwui.text_gamma.black_threshold integer 64 آستانه روشنایی که پایین‌تر از آن تصحیح گامای سیاه اعمال می‌شود را تعریف می‌کند. مقدار باید در محدوده ۰-۲۵۵ باشد.
hwui.text_gamma.white_threshold integer 192 آستانه روشنایی که بالاتر از آن تصحیح گامای سفید اعمال می‌شود را تعریف می‌کند. مقدار باید در محدوده 0-255 باشد.
hwui.use_gpu_pixel_buffers boolean true استفاده از PBOها را در سخت‌افزار OpenGL ES 3.0 فعال یا غیرفعال می‌کند. رندرکننده از PBOها برای انجام آپلودهای ناهمزمان بافت، به ویژه برای حافظه پنهان فونت، استفاده می‌کند. این ویژگی باید همیشه فعال بماند، اما اگر PBOها باعث خرابی یا عملکرد ضعیف شوند، می‌توانید آن را در حین راه‌اندازی یا توسعه غیرفعال کنید. به همین دلیل است که این ویژگی فقط خواندنی نیست.