इस दस्तावेज़ में, हार्डवेयर की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए परफ़ॉर्मेंस ट्यूनिंग के बारे में बताया गया है.
OpenGLRenderer (libhwui) प्रॉपर्टी
इस दस्तावेज़ में, Android के 2D हार्डवेयर-ऐक्सलरेटेड रेंडरिंग पाइपलाइन को कंट्रोल करने के लिए प्रॉपर्टी के बारे में बताया गया है. इन प्रॉपर्टी को device.mk
में PRODUCT_PROPERTY_OVERRIDES
के तौर पर सेट करें.
Android के सभी वर्शन के लिए प्रॉपर्टी
प्रॉपर्टी | टाइप | डिफ़ॉल्ट मान | ब्यौरा |
---|---|---|---|
ro.zygote.disable_gl_preload |
boolean |
false |
इस फ़्लैग की मदद से, बूट होने के समय Zygote में EGL/GL ड्राइवर को प्रीलोड करने की सुविधा चालू या बंद की जा सकती है.
इस प्रॉपर्टी के false होने पर, Zygote eglGetDisplay(EGL_DEFAULT_DISPLAY) को लागू करके GL ड्राइवर को पहले से लोड कर देता है. इससे Zygote में डाइनैमिक लाइब्रेरी कोड लोड होता है, ताकि इसे अन्य सभी प्रोसेस के साथ शेयर किया जा सके. अगर ड्राइवर, शेयर करने की सुविधा के साथ काम नहीं करता है, तो इस प्रॉपर्टी को true पर सेट करें. |
Android 8.0 और इससे पुराने वर्शन के लिए प्रॉपर्टी
प्रॉपर्टी | टाइप | डिफ़ॉल्ट मान | ब्यौरा |
---|---|---|---|
ro.hwui.disable_scissor_opt |
boolean |
false |
इस कुकी से, सीज़र ऑप्टिमाइज़ेशन की सुविधा चालू या बंद होती है. इस सुविधा के बंद होने पर, OpenGLRenderer, GL सीज़र टेस्ट को चालू रखता है और ज़रूरत के हिसाब से सीज़र रेक्ट में बदलाव करता है. कुछ जीपीयू (उदाहरण के लिए, SGX 540) कैंची वाले रेक्ट को बार-बार बदलने पर बेहतर परफ़ॉर्म करते हैं. ऐसा तब होता है, जब कैंची वाले टेस्ट को बार-बार चालू या बंद किया जाता है. |
ro.hwui.texture_cache_size |
float |
24 |
यह हर प्रोसेस के लिए टेक्सचर कैश का साइज़ मेगाबाइट में तय करता है. हमारा सुझाव है कि आप ऐसी कैश मेमोरी का इस्तेमाल करें जिसमें 32-बिट टेक्सचर की कई स्क्रीन सेव की जा सकें. उदाहरण के लिए, 1280x800 डिसप्ले पर, फ़ुल स्क्रीन बफ़र में करीब 4 एमबी का डेटा इस्तेमाल होता है. इसलिए, कैश मेमोरी कम से कम 20 एमबी होनी चाहिए. |
ro.hwui.layer_cache_size |
float |
16 |
इससे हर प्रोसेस के लिए लेयर के कैश मेमोरी का साइज़ मेगाबाइट में तय किया जाता है. हमारा सुझाव है कि आप इतनी बड़ी कैश मेमोरी का इस्तेमाल करें कि उसमें 32 बिट में स्क्रीन के साइज़ से चार गुना डेटा सेव किया जा सके. उदाहरण के लिए, 1280x800 डिसप्ले पर, फ़ुल स्क्रीन बफ़र में करीब 4 एमबी का इस्तेमाल होता है. इसलिए, कैश मेमोरी कम से कम 16 एमबी होनी चाहिए. |
ro.hwui.gradient_cache_size |
float |
0.5 |
इससे हर प्रोसेस के लिए ग्रेडिएंट कैश का साइज़ मेगाबाइट में तय किया जाता है. एक ग्रेडिएंट आम तौर पर, 1 केबी से 4 केबी मेमोरी लेता है. हमारा सुझाव है कि आप ऐसी कैश मेमोरी का इस्तेमाल करें जिसमें कम से कम 12 ग्रेडिएंट सेव किए जा सकें. |
ro.hwui.patch_cache_size |
integer |
128 |
यह हर प्रोसेस के लिए, नौ पैच वाली इमेज की कैश मेमोरी का साइज़ किलोबाइट में तय करता है. इस कैश मेमोरी में सिर्फ़ वर्टेक्स डेटा होता है. इसलिए, इसे छोटा रखा जा सकता है. हर वर्टेक्स में चार फ़्लोट या 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 |
यह डिफ़ॉल्ट फ़ॉन्ट कैश मेमोरी की चौड़ाई को पिक्सल में तय करता है. ऊपरी बाउंड इस बात पर निर्भर करता है कि जीपीयू कितनी तेज़ी से टेक्सचर अपलोड कर सकता है. हमारा सुझाव है कि कम से कम 1024 पिक्सल और ज़्यादा से ज़्यादा 2048 पिक्सल वाली इमेज का इस्तेमाल करें. साथ ही, दो की घात वाली वैल्यू का इस्तेमाल करें. |
ro.hwui.text_small_cache_height |
integer |
256 |
यह डिफ़ॉल्ट फ़ॉन्ट कैश की ऊंचाई को पिक्सल में तय करता है. ऊपरी बाउंड इस बात पर निर्भर करता है कि जीपीयू कितनी तेज़ी से टेक्सचर अपलोड कर सकता है. हमारा सुझाव है कि कम से कम 256 पिक्सल और ज़्यादा से ज़्यादा 1024 पिक्सल का इस्तेमाल करें. |
ro.hwui.text_large_cache_width |
integer |
2048 |
यह बड़े फ़ॉन्ट की कैश मेमोरी की चौड़ाई को पिक्सल में तय करता है. इस कैश मेमोरी का इस्तेमाल उन ग्लिफ़ के लिए किया जाता है जो डिफ़ॉल्ट फ़ॉन्ट कैश मेमोरी में फ़िट नहीं हो पाते. ऊपरी बाउंड इस बात पर निर्भर करता है कि जीपीयू कितनी तेज़ी से टेक्सचर अपलोड कर सकता है. हमारा सुझाव है कि कम से कम 2048 पिक्सल और ज़्यादा से ज़्यादा 4096 पिक्सल वाली इमेज का इस्तेमाल करें. साथ ही, दो की घात वाली वैल्यू का इस्तेमाल करें. |
ro.hwui.text_large_cache_height |
integer |
512 |
इससे बड़े फ़ॉन्ट की कैश मेमोरी की ऊंचाई पिक्सल में तय होती है. बड़े फ़ॉन्ट की कैश मेमोरी का इस्तेमाल उन ग्लिफ़ के लिए भी किया जाता है जो डिफ़ॉल्ट फ़ॉन्ट की कैश मेमोरी में फ़िट नहीं हो पाते. ऊपरी बाउंड इस बात पर निर्भर करता है कि जीपीयू कितनी तेज़ी से टेक्सचर अपलोड कर सकता है. हमारा सुझाव है कि आप कम से कम 512 पिक्सल और ज़्यादा से ज़्यादा 2048 पिक्सल वाली इमेज का इस्तेमाल करें. साथ ही, दो की घात वाली वैल्यू का इस्तेमाल करें. |
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 |
इस विकल्प की मदद से, OpenGL ES 3.0 हार्डवेयर पर PBO के इस्तेमाल को चालू या बंद किया जा सकता है. रेंडरर, एसिंक्रोनस टेक्सचर अपलोड करने के लिए PBO का इस्तेमाल करता है. खास तौर पर, फ़ॉन्ट कैश के लिए. यह प्रॉपर्टी हमेशा चालू रहनी चाहिए. हालांकि, अगर PBO की वजह से डेटा खराब होता है या परफ़ॉर्मेंस ठीक नहीं रहती है, तो ब्रिंगअप या डेवलपमेंट के दौरान इसे बंद किया जा सकता है. इसलिए, प्रॉपर्टी को सिर्फ़ पढ़ा नहीं जा सकता. |