เอกสารนี้อธิบายการปรับแต่งประสิทธิภาพเพื่อเพิ่มประสิทธิภาพฮาร์ดแวร์
พร็อพเพอร์ตี้ 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-patch ต่อกระบวนการ แคชนี้ จะเก็บเฉพาะข้อมูลจุดยอด คุณจึงทำให้มีขนาดเล็กได้ แต่ละจุดยอดประกอบด้วย โฟลต 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 |
กำหนดเกณฑ์ความสว่างที่ใช้การแก้ไขแกมมาสีขาว ค่าต้องอยู่ในช่วง 0-255 |
hwui.use_gpu_pixel_buffers |
boolean |
true |
เปิดหรือปิดใช้ PBO ในฮาร์ดแวร์ OpenGL ES 3.0 ตัวแสดงผล ใช้ PBO เพื่ออัปโหลดเท็กซ์เจอร์แบบไม่พร้อมกัน โดยเฉพาะอย่างยิ่งสำหรับแคชแบบอักษร คุณควรเปิดใช้พร็อพเพอร์ตี้นี้ไว้เสมอ แต่สามารถปิดใช้ได้ ในระหว่างการเริ่มต้นหรือการพัฒนาหาก PBO ทำให้เกิดความเสียหายหรือประสิทธิภาพต่ำ ด้วยเหตุนี้ พร็อพเพอร์ตี้จึงไม่ใช่แบบอ่านอย่างเดียว |