เอกสารนี้อธิบายการปรับแต่งประสิทธิภาพที่คุณทำได้เพื่อใช้ฮาร์ดแวร์ให้ได้ประโยชน์สูงสุด
พร็อพเพอร์ตี้ OpenGLRenderer (libhwui)
เอกสารนี้จะแสดงรายการพร็อพเพอร์ตี้ทั้งหมดที่คุณสามารถใช้เพื่อควบคุมไปป์ไลน์การแสดงผลที่เร่งด้วยฮาร์ดแวร์ 2 มิติของ Android ตั้งค่าพร็อพเพอร์ตี้เหล่านี้ใน device.mk
เป็น PRODUCT_PROPERTY_OVERRIDES
พร็อพเพอร์ตี้สำหรับ Android ทุกเวอร์ชัน
พร็อพเพอร์ตี้ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
ro.zygote.disable_gl_preload |
boolean |
false |
ใช้เพื่อเปิด/ปิดใช้การโหลดไดรเวอร์ EGL/GL ล่วงหน้าใน Zygote ขณะบูต เมื่อตั้งค่าพร็อพเพอร์ตี้นี้เป็น "เท็จ" แล้ว Zygote จะโหลดไดรเวอร์ GL ล่วงหน้าโดยการเรียกใช้ eglGetDisplay(EGL_DEFAULT_DISPLAY) เป้าหมายคือโหลดโค้ดไลบรารีแบบไดนามิกใน Zygote เพื่อแชร์กับกระบวนการอื่นๆ ทั้งหมด หากไดรฟ์ไม่รองรับการแชร์ ให้ตั้งค่าพร็อพเพอร์ตี้นี้เป็น "จริง" |
พร็อพเพอร์ตี้สำหรับ Android 8.0 และต่ำกว่า
พร็อพเพอร์ตี้ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
ro.hwui.disable_scissor_opt |
boolean |
false |
ใช้เพื่อเปิดหรือปิดใช้การเพิ่มประสิทธิภาพการตัด ค่าที่ยอมรับคือ true และ false เมื่อเปิดใช้การเพิ่มประสิทธิภาพการครอบตัด OpenGLRenderer จะพยายามลดการใช้การครอบตัดโดยเปิดและปิดการทดสอบการครอบตัด GL แบบเลือก เมื่อปิดใช้การเพิ่มประสิทธิภาพ 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 |
0.5 |
float |
กําหนดขนาด (หน่วยเป็นเมกะไบต์) ของแคชไล่ระดับสีต่อกระบวนการ โดยปกติแล้ว ไล่ระดับสีเดียวจะใช้หน่วยความจําประมาณ 1-4 KB ขอแนะนําให้ใช้แคชที่ใหญ่พอที่จะเก็บไล่ระดับสีได้อย่างน้อย 12 รายการ |
ro.hwui.patch_cache_size |
integer |
128 |
กำหนดขนาดแคช 9 แพตช์เป็นกิโลไบต์ต่อกระบวนการ แคชนี้จะเก็บเฉพาะข้อมูลเวอร์เท็กซ์ จึงมีขนาดเล็กได้ โดยจุดยอดแต่ละจุดจะประกอบด้วยเลขทศนิยม 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 ทําให้ข้อมูลเสียหายหรือประสิทธิภาพแย่มาก ด้วยเหตุนี้พร็อพเพอร์ตี้จึงไม่ใช่แบบอ่านอย่างเดียว |