เอกสารนี้อธิบายการปรับแต่งประสิทธิภาพที่คุณทำได้เพื่อใช้ฮาร์ดแวร์ให้ได้ประโยชน์สูงสุด
พร็อพเพอร์ตี้ 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._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 ทําให้ข้อมูลเสียหายหรือประสิทธิภาพแย่มาก ด้วยเหตุนี้พร็อพเพอร์ตี้จึงไม่ใช่แบบอ่านอย่างเดียว |