เอกสารนี้อธิบายการปรับแต่งประสิทธิภาพเพื่อเพิ่มประสิทธิภาพของฮาร์ดแวร์
พร็อพเพอร์ตี้ OpenGLRenderer (libhwui)
เอกสารนี้อธิบายพร็อพเพอร์ตี้สำหรับการควบคุมไปป์ไลน์การแสดงผลแบบเร่งด้วยฮาร์ดแวร์ 2 มิติของ 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 |
เปิดหรือปิดใช้การเพิ่มประสิทธิภาพกรรไกร ค่าที่ยอมรับคือ
เมื่อปิดใช้ OpenGLRenderer จะเปิดใช้การทดสอบกรรไกร GL ไว้และเปลี่ยน สี่เหลี่ยมผืนผ้ากรรไกรตามความจำเป็น GPU บางรุ่น (เช่น SGX 540) ทำงานได้ดีกว่าเมื่อเปลี่ยนสี่เหลี่ยมผืนผ้ากรรไกรบ่อยกว่าการเปิดหรือ ปิดใช้การทดสอบกรรไกรบ่อยๆ |
ro.hwui.texture_cache_size |
float |
24 |
กำหนดขนาดแคชของเท็กซ์เจอร์ต่อกระบวนการเป็นเมกะไบต์ เรา ขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บเท็กซ์เจอร์ 32 บิต ได้หลายหน้าจอ เช่น ในจอแสดงผลขนาด 1280x800 บัฟเฟอร์แบบเต็มหน้าจอจะใช้พื้นที่ประมาณ 4 MB ดังนั้นแคชควรมีขนาดอย่างน้อย 20 MB |
ro.hwui.layer_cache_size |
float |
16 |
กำหนดขนาดแคชของเลเยอร์ต่อกระบวนการเป็นเมกะไบต์ เรา ขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บหน้าจอได้ 4 เท่าใน 32 บิต เช่น ในจอแสดงผลขนาด 1280x800 บัฟเฟอร์แบบเต็มหน้าจอจะใช้พื้นที่ประมาณ 4 MB ดังนั้นแคชควรมีขนาดอย่างน้อย 16 MB |
ro.hwui.gradient_cache_size |
float |
0.5 |
กำหนดขนาดแคชของสีไล่ระดับต่อกระบวนการเป็นเมกะไบต์ โดยทั่วไปสีไล่ระดับเดียวจะใช้หน่วยความจำระหว่าง 1 KB ถึง 4 KB เรา ขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บสีไล่ระดับได้ 12 สีขึ้นไป |
ro.hwui.patch_cache_size |
integer |
128 |
กำหนดขนาดแคชของ 9-patches ต่อกระบวนการเป็นกิโลไบต์ แคชนี้จะเก็บเฉพาะข้อมูลจุดยอด ดังนั้นคุณจึงสามารถเก็บไว้ให้มีขนาดเล็กได้ จุดยอดแต่ละจุดประกอบด้วยค่าทศนิยม 4 ค่า หรือ 16 ไบต์ |
ro.hwui.path_cache_size |
float |
4 |
กำหนดขนาดแคชของเส้นทางต่อกระบวนการเป็นเมกะไบต์ เรา ขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บเท็กซ์เจอร์ 32 บิต ได้ 1 หน้าจอขึ้นไป เช่น ในจอแสดงผลขนาด 1280x800 บัฟเฟอร์แบบเต็มหน้าจอจะใช้พื้นที่ประมาณ 4 MB ดังนั้นแคชควรมีขนาดอย่างน้อย 4 MB |
ro.hwui.shape_cache_size |
float |
1 |
กำหนดขนาดแคชของรูปร่างต่อกระบวนการเป็นเมกะไบต์ ค่านี้ ใช้โดยแคชหลายรายการ เช่น วงกลมและสี่เหลี่ยมผืนผ้าที่มีมุมโค้งมน เรา ขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บหน้าจอ 8 บิตได้ 1 หน้าจอขึ้นไป เช่น ในจอแสดงผลขนาด 1280x800 บัฟเฟอร์แบบเต็มหน้าจอจะใช้พื้นที่ประมาณ 1 MB ดังนั้นแคชควรมีขนาดอย่างน้อย 1 MB |
ro.hwui.drop_shadow_cache_size |
float |
2 |
กำหนดขนาดแคชของเงาตกกระทบของข้อความต่อกระบวนการเป็นเมกะไบต์ เราขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บเท็กซ์เจอร์ 8 บิต ได้ 2 หน้าจอขึ้นไป เช่น ในจอแสดงผลขนาด 1280x800 บัฟเฟอร์แบบเต็มหน้าจอจะใช้พื้นที่ประมาณ 1 MB ดังนั้นแคชควรมีขนาดอย่างน้อย 2 MB |
ro.hwui.r_buffer_cache_size |
float |
2 |
กำหนดขนาดแคชของบัฟเฟอร์การแสดงผลต่อกระบวนการเป็นเมกะไบต์ เรา ขอแนะนำให้ใช้แคชที่มีขนาดใหญ่พอที่จะเก็บหน้าจอได้ 2 เท่าใน 8 บิต เช่น ในจอแสดงผลขนาด 1280x800 บัฟเฟอร์แบบเต็มหน้าจอจะใช้พื้นที่ประมาณ 1 MB ดังนั้นแคชควรมีขนาดอย่างน้อย 2 MB แคชอาจมีขนาดเล็กลงหากอุปกรณ์ รองรับบัฟเฟอร์สเตนซิล 4 บิตหรือ 1 บิต |
ro.hwui.texture_cache_flush_rate |
float |
0.6 |
กำหนดเปอร์เซ็นต์ของแคชของเท็กซ์เจอร์ที่จะเก็บไว้หลังจากการล้างหน่วยความจำ ระบบจะทริกเกอร์การล้างหน่วยความจำเมื่อต้องการเรียกคืนหน่วยความจำในแอปพลิเคชันทั้งหมด เราขอแนะนำให้ปล่อยแคชประมาณ 50% ในสถานการณ์ดังกล่าว |
ro.hwui.text_small_cache_width |
integer |
1024 |
กำหนดความกว้างแคชของแบบอักษรเริ่มต้นเป็นพิกเซล ขอบเขตบน จะขึ้นอยู่กับความเร็วที่ GPU อัปโหลดเท็กซ์เจอร์ได้ เราขอแนะนำให้ใช้ขนาดอย่างน้อย 1024 พิกเซล แต่ไม่เกิน 2048 พิกเซล นอกจากนี้ ให้ใช้ค่าที่เป็นเลขยกกำลังของ 2 |
ro.hwui.text_small_cache_height |
integer |
256 |
กำหนดความสูงแคชของแบบอักษรเริ่มต้นเป็นพิกเซล ขอบเขตบน จะขึ้นอยู่กับความเร็วที่ GPU อัปโหลดเท็กซ์เจอร์ได้ เราขอแนะนำให้ใช้ขนาดอย่างน้อย 256 พิกเซล แต่ไม่เกิน 1024 พิกเซล |
ro.hwui.text_large_cache_width |
integer |
2048 |
กำหนดความกว้างแคชของแบบอักษรขนาดใหญ่เป็นพิกเซล แคชนี้ใช้สำหรับกลีฟที่มีขนาดใหญ่เกินกว่าจะใส่ในแคชของแบบอักษรเริ่มต้นได้ ขอบเขตบน จะขึ้นอยู่กับความเร็วที่ GPU อัปโหลดเท็กซ์เจอร์ได้ เราขอแนะนำให้ใช้ขนาดอย่างน้อย 2048 พิกเซล แต่ไม่เกิน 4096 พิกเซล นอกจากนี้ ให้ใช้ค่าที่เป็นเลขยกกำลังของ 2 |
ro.hwui.text_large_cache_height |
integer |
512 |
กำหนดความสูงแคชของแบบอักษรขนาดใหญ่เป็นพิกเซล แคชของแบบอักษรขนาดใหญ่ ใช้สำหรับกลีฟที่มีขนาดใหญ่เกินกว่าจะใส่ในแคชของแบบอักษรเริ่มต้นได้ ขอบเขตบนจะขึ้นอยู่กับความเร็วที่ GPU อัปโหลดเท็กซ์เจอร์ได้ เราขอแนะนำให้ใช้ขนาดอย่างน้อย 512 พิกเซล แต่ไม่เกิน 2048 พิกเซล นอกจากนี้ ให้ใช้ค่าที่เป็นเลขยกกำลังของ 2 |
hwui.text_gamma_correction |
string |
lookup |
เลือกเทคนิคการแก้ไขแกมมาของข้อความ โดยมีตัวเลือกที่เป็นไปได้ 4 ตัวเลือก ดังนี้
lookup ซึ่งให้คุณภาพ ความเร็ว และการใช้หน่วยความจำที่สมดุล
|
hwui.text_gamma |
float |
1.4 |
กำหนดค่าแกมมาที่ใช้สำหรับการแก้ไขแกมมาของข้อความ คุณสามารถปรับค่านี้ ตามจอแสดงผลของอุปกรณ์ |
hwui.text_gamma.black_threshold |
integer |
64 |
กำหนดเกณฑ์ความสว่างที่ต่ำกว่าซึ่งจะใช้การแก้ไขแกมมาสีดำ ค่าต้องอยู่ในช่วง 0-255 |
hwui.text_gamma.white_threshold |
integer |
192 |
กำหนดเกณฑ์ความสว่างที่สูงกว่าซึ่งจะใช้การแก้ไขแกมมาสีขาว applied. ค่าต้องอยู่ในช่วง 0-255 |
hwui.use_gpu_pixel_buffers |
boolean |
true |
เปิดหรือปิดใช้บัฟเฟอร์พิกเซลของ GPU ในฮาร์ดแวร์ OpenGL ES 3.0 ตัวแสดงผลใช้ PBO เพื่ออัปโหลดพื้นผิวแบบไม่พร้อมกัน โดยเฉพาะอย่างยิ่งสำหรับแคชแบบอักษร พร็อพเพอร์ตี้นี้ควรเปิดใช้ไว้เสมอ แต่คุณสามารถปิดใช้ ระหว่างการเริ่มต้นระบบหรือการพัฒนาได้หาก PBO ทำให้เกิดการเสียหายหรือประสิทธิภาพไม่ดี นี่จึงเป็นเหตุผลที่พร็อพเพอร์ตี้นี้ไม่ใช่แบบอ่านอย่างเดียว |