پیکربندی 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 تنظیم کنید.

ویژگی های اندروید 8.0 و پایین تر

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

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

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

ro.hwui.texture_cache_size float 24 اندازه کش بافت در هر فرآیند را بر حسب مگابایت تعریف می کند. توصیه می‌کنیم از یک کش به اندازه کافی بزرگ برای نگهداری چندین صفحه نمایش با بافت‌های 32 بیتی استفاده کنید (به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه از حدود 4 مگابایت استفاده می‌کند، بنابراین کش باید حداقل 20 مگابایت باشد.)
ro.hwui.layer_cache_size float 16 اندازه حافظه پنهان لایه‌های هر فرآیند را بر حسب مگابایت تعریف می‌کند. توصیه می کنیم از کش به اندازه کافی بزرگ استفاده کنید تا 4 برابر صفحه نمایش را در 32 بیت نگه دارد. به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه از حدود 4 مگابایت استفاده می کند، بنابراین کش باید حداقل 16 مگابایت باشد.
ro.hwui.gradient_cache_size 0.5 float اندازه حافظه پنهان شیب هر فرآیند را بر حسب مگابایت تعریف می کند. یک گرادیان منفرد معمولا بین 1 تا 4 کیلوبایت حافظه را اشغال می کند. توصیه می شود از کش به اندازه کافی بزرگ استفاده کنید تا حداقل دوازده گرادیان را در خود جای دهد.
ro.hwui.patch_cache_size integer 128 اندازه حافظه نهان 9 وصله در هر فرآیند را بر حسب کیلوبایت تعریف می کند. این کش فقط داده های راس را نگه می دارد و بنابراین می توان آن را کوچک نگه داشت. هر رأس از 4 شناور یا 16 بایت ساخته شده است.
ro.hwui.path_cache_size float 4 اندازه حافظه پنهان مسیرهای هر فرآیند را به مگابایت تعریف می کند. ما توصیه می کنیم از یک کش به اندازه کافی بزرگ استفاده کنید تا حداقل یک صفحه نمایش از بافت های 32 بیتی را در خود جای دهد. به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه از حدود 4 مگابایت استفاده می کند، بنابراین کش باید حداقل 4 مگابایت باشد.
ro.hwui.shape_cache_size float 1 اندازه حافظه پنهان هر فرآیند را بر حسب مگابایت تعریف می کند. این مقدار توسط چندین کش مانند دایره ها و مستطیل های گرد استفاده می شود. توصیه می کنیم از یک کش به اندازه کافی بزرگ استفاده کنید تا حداقل یک صفحه نمایش 8 بیتی را در خود جای دهد. به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه از حدود 1 مگابایت استفاده می کند، بنابراین حافظه نهان باید حداقل 1 مگابایت باشد.
ro.hwui.drop_shadow_cache_size float 2 اندازه کش سایه‌ها را بر حسب مگابایت تعیین می‌کند. توصیه می کنیم از یک کش به اندازه کافی بزرگ برای نگهداری دو صفحه نمایش با بافت های 8 بیتی استفاده کنید. به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه از حدود 1 مگابایت استفاده می کند، بنابراین کش باید حداقل 2 مگابایت باشد.
ro.hwui.r_buffer_cache_size float 2 اندازه حافظه نهان بافر رندر در هر فرآیند را بر حسب مگابایت تعریف می کند. توصیه می شود از کش به اندازه کافی بزرگ برای نگه داشتن دو برابر صفحه در 8 بیت استفاده کنید. به عنوان مثال، در یک صفحه نمایش 1280x800، یک بافر تمام صفحه از حدود 1 مگابایت استفاده می کند، بنابراین کش باید حداقل 2 مگابایت باشد. اگر دستگاه از بافرهای استنسیل 4 بیتی یا 1 بیتی پشتیبانی کند، حافظه پنهان می تواند کوچکتر باشد.
ro.hwui.texture_cache_flush_rate float 0.6 درصدی از کش بافت را که باید پس از فلاش کردن حافظه حفظ شود، تعیین می کند. فلاش های حافظه زمانی فعال می شوند که سیستم نیاز به بازیابی حافظه در همه برنامه ها داشته باشد. توصیه می کنیم در چنین شرایطی حدود 50 درصد از حافظه پنهان را آزاد کنید.
ro.hwui.text_small_cache_width integer 1024 عرض حافظه پنهان فونت پیش فرض را بر حسب پیکسل تعریف می کند. کران بالا بستگی به این دارد که GPU با چه سرعتی می تواند بافت ها را آپلود کند. توصیه می کنیم حداقل از 1024 پیکسل و حداکثر 2048 پیکسل استفاده کنید. همچنین باید از توان دو مقدار استفاده کنید.
ro.hwui.text_small_cache_height integer 256 ارتفاع حافظه پنهان فونت پیش فرض را بر حسب پیکسل تعیین می کند. کران بالا بستگی به این دارد که GPU با چه سرعتی می تواند بافت ها را آپلود کند. توصیه می کنیم از حداقل 256 پیکسل اما حداکثر 1024 پیکسل استفاده کنید.
ro.hwui.text_large_cache_width integer 2048 عرض حافظه پنهان فونت بزرگ را بر حسب پیکسل تعریف می کند. این حافظه نهان برای حروف‌های بسیار بزرگ برای قرار گرفتن در حافظه پنهان فونت پیش‌فرض استفاده می‌شود. کران بالا بستگی به این دارد که GPU با چه سرعتی می تواند بافت ها را آپلود کند. استفاده از حداقل 2048 پیکسل اما حداکثر 4096 پیکسل را توصیه می کنیم. همچنین باید از توان دو مقدار استفاده کنید.
ro.hwui.text_large_cache_height integer 512 ارتفاع حافظه پنهان فونت بزرگ را بر حسب پیکسل تعریف می کند. حافظه پنهان فونت بزرگ برای حروف‌های حروف خیلی بزرگ برای قرار گرفتن در حافظه پنهان فونت پیش‌فرض استفاده می‌شود. کران بالا بستگی به این دارد که GPU با چه سرعتی می تواند بافت ها را آپلود کند. توصیه می کنیم حداقل از 512 پیکسل اما حداکثر 2048 پیکسل استفاده کنید. همچنین باید از توان دو مقدار استفاده کنید.
hwui.text_gamma_correction string lookup تکنیک تصحیح گامای متن را انتخاب می کند. چهار گزینه ممکن وجود دارد:
  • lookup3 : تصحیح بر اساس جداول جستجو. تصحیح گاما برای متن سیاه و سفید متفاوت است (آستانه های زیر را ببینید).
  • lookup : تصحیح بر اساس یک جدول جستجوی واحد.
  • shader3 : اصلاحی که توسط یک سایه زن GLSL اعمال می شود. تصحیح گاما برای متن سیاه و سفید متفاوت است (آستانه های زیر را ببینید).
  • shader : اصلاحی که توسط یک سایه زن GLSL اعمال می شود.
تصحیحات گامای جستجو در GPUهایی با ریاضیات سایه زن محدود بهترین عملکرد را دارند. اصلاحات گامای سایه زن برای صرفه جویی در حافظه بهتر است. توصیه می‌کنیم از تکنیک 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 باعث خرابی یا عملکرد وحشتناک شود، می‌تواند در حین ایجاد یا توسعه غیرفعال شود. به همین دلیل است که ملک فقط خواندنی نیست.