Cấu hình OpenGLRenderer

Tài liệu này mô tả các biện pháp điều chỉnh hiệu suất mà bạn có thể thực hiện để khai thác tối đa phần cứng.

Thuộc tính OpenGLRenderer (libhwui)

Tài liệu này liệt kê tất cả các thuộc tính mà bạn có thể sử dụng để kiểm soát quy trình kết xuất tăng tốc phần cứng 2D của Android. Đặt các thuộc tính này trong device.mk thành PRODUCT_PROPERTY_OVERRIDES.

Thuộc tính cho tất cả phiên bản Android

Thuộc tính Loại Giá trị mặc định Mô tả
ro.zygote.disable_gl_preload boolean false Dùng để bật/tắt tính năng tải trước trình điều khiển EGL/GL trong Zygote tại thời điểm khởi động. Khi bạn đặt thuộc tính này thành false, Zygote sẽ tải trước trình điều khiển GL bằng cách gọi eglGetDisplay(EGL_DEFAULT_DISPLAY). Mục tiêu là tải mã thư viện động trong Zygote để chia sẻ mã đó với tất cả các quy trình khác. Nếu trình điều khiển không hỗ trợ tính năng chia sẻ, hãy đặt thuộc tính này thành đúng.

Thuộc tính dành cho Android 8.0 trở xuống

Thuộc tính Loại Giá trị mặc định Mô tả
ro.hwui.disable_scissor_opt boolean false

Dùng để bật hoặc tắt tính năng tối ưu hoá cắt. Các giá trị được chấp nhận là true và false. Khi bật tính năng tối ưu hoá kéo cắt, OpenGLRenderer sẽ cố gắng giảm thiểu việc sử dụng tính năng kéo cắt bằng cách bật và tắt kiểm thử kéo cắt GL một cách có chọn lọc.

Khi tính năng tối ưu hoá bị tắt, OpenGLRenderer sẽ bật tính năng kiểm thử kéo cắt GL và thay đổi hình chữ nhật kéo cắt nếu cần. Một số GPU (ví dụ: SGX 540) hoạt động hiệu quả hơn khi thay đổi hình chữ nhật cắt thường xuyên hơn so với việc bật hoặc tắt thường xuyên quy trình kiểm thử cắt.

ro.hwui.texture_cache_size float 24 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm hoạ tiết trên mỗi quy trình. Bạn nên sử dụng bộ nhớ đệm đủ lớn để lưu trữ một số màn hình có kết cấu 32 bit (ví dụ: trên màn hình 1280x800, vùng đệm toàn màn hình sử dụng khoảng 4 MB nên bộ nhớ đệm phải có dung lượng tối thiểu là 20 MB).
ro.hwui.layer_cache_size float 16 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm cho mỗi lớp xử lý. Bạn nên sử dụng bộ nhớ đệm đủ lớn để chứa 4 lần màn hình ở 32 bit. Ví dụ: trên màn hình 1280x800, vùng đệm toàn màn hình sử dụng khoảng 4 MB, vì vậy, bộ nhớ đệm phải có dung lượng tối thiểu là 16 MB.
ro.hwui.gradient_cache_size 0.5 float Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm chuyển màu trên mỗi quy trình. Một hiệu ứng chuyển màu thường chiếm từ 1 đến 4 KB bộ nhớ. Bạn nên sử dụng bộ nhớ đệm đủ lớn để chứa ít nhất 12 màu chuyển tiếp.
ro.hwui.patch_cache_size integer 128 Xác định kích thước (tính bằng kilobyte) của bộ nhớ đệm 9 bản vá cho mỗi quy trình. Bộ nhớ đệm này chỉ chứa dữ liệu đỉnh và do đó có thể được giữ ở mức nhỏ. Mỗi đỉnh được tạo thành từ 4 số thực hoặc 16 byte.
ro.hwui.path_cache_size float 4 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm đường dẫn cho mỗi quy trình. Bạn nên sử dụng bộ nhớ đệm đủ lớn để lưu trữ ít nhất một màn hình có kết cấu 32 bit. Ví dụ: trên màn hình 1280x800, vùng đệm toàn màn hình sử dụng khoảng 4 MB, vì vậy, bộ nhớ đệm phải có dung lượng tối thiểu là 4 MB.
ro.hwui.shape_cache_size float 1 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm hình dạng cho mỗi quy trình. Giá trị này được một số bộ nhớ đệm sử dụng, chẳng hạn như hình tròn và hình chữ nhật bo tròn. Bạn nên sử dụng bộ nhớ đệm đủ lớn để chứa ít nhất một màn hình 8 bit. Ví dụ: trên màn hình 1280x800, vùng đệm toàn màn hình sử dụng khoảng 1 MB, vì vậy, bộ nhớ đệm phải có dung lượng tối thiểu là 1 MB.
ro.hwui.drop_shadow_cache_size float 2 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm bóng đổ văn bản cho mỗi quy trình. Bạn nên sử dụng bộ nhớ đệm đủ lớn để chứa hai màn hình có kết cấu 8 bit. Ví dụ: trên màn hình 1280x800, vùng đệm toàn màn hình sử dụng khoảng 1 MB, vì vậy, bộ nhớ đệm phải có dung lượng tối thiểu là 2 MB.
ro.hwui.r_buffer_cache_size float 2 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm vùng đệm kết xuất trên mỗi quy trình. Bạn nên sử dụng bộ nhớ đệm đủ lớn để lưu trữ gấp đôi màn hình ở 8 bit. Ví dụ: trên màn hình 1280x800, vùng đệm toàn màn hình sử dụng khoảng 1 MB nên bộ nhớ đệm phải có dung lượng tối thiểu là 2 MB. Bộ nhớ đệm có thể nhỏ hơn nếu thiết bị hỗ trợ vùng đệm mô hình 4 bit hoặc 1 bit.
ro.hwui.texture_cache_flush_rate float 0.6 Xác định tỷ lệ phần trăm bộ nhớ đệm kết cấu cần giữ lại sau khi xoá bộ nhớ. Việc xoá bộ nhớ được kích hoạt khi hệ thống cần thu hồi bộ nhớ trên tất cả ứng dụng. Bạn nên giải phóng khoảng 50% bộ nhớ đệm trong những trường hợp như vậy.
ro.hwui.text_small_cache_width integer 1024 Xác định chiều rộng tính bằng pixel của bộ nhớ đệm phông chữ mặc định. Giới hạn trên phụ thuộc vào tốc độ GPU có thể tải kết cấu lên. Bạn nên sử dụng hình ảnh có kích thước tối thiểu 1024 pixel và tối đa 2048 pixel. Bạn cũng nên sử dụng giá trị luỹ thừa của 2.
ro.hwui.text_small_cache_height integer 256 Xác định chiều cao tính bằng pixel của bộ nhớ đệm phông chữ mặc định. Giới hạn trên phụ thuộc vào tốc độ GPU có thể tải kết cấu lên. Bạn nên sử dụng hình ảnh có kích thước tối thiểu 256 pixel và tối đa 1024 pixel.
ro.hwui.text_large_cache_width integer 2048 Xác định chiều rộng tính bằng pixel của bộ nhớ đệm phông chữ lớn. Bộ nhớ đệm này được dùng cho các ký tự quá lớn để vừa với bộ nhớ đệm phông chữ mặc định. Giới hạn trên phụ thuộc vào tốc độ GPU có thể tải kết cấu lên. Bạn nên sử dụng hình ảnh có độ phân giải tối thiểu 2048 pixel và tối đa 4096 pixel. Bạn cũng nên sử dụng giá trị luỹ thừa của 2.
ro.hwui.text_large_cache_height integer 512 Xác định chiều cao tính bằng pixel của bộ nhớ đệm phông chữ lớn. Bộ nhớ đệm phông chữ lớn được dùng cho các ký tự quá lớn để vừa với bộ nhớ đệm phông chữ mặc định. Giới hạn trên phụ thuộc vào tốc độ GPU có thể tải kết cấu lên. Bạn nên sử dụng kích thước tối thiểu là 512 pixel và tối đa là 2048 pixel. Bạn cũng nên sử dụng giá trị luỹ thừa của 2.
hwui.text_gamma_correction string lookup Chọn kỹ thuật chỉnh sửa gamma văn bản. Có 4 lựa chọn:
  • lookup3: Giá trị sửa đổi dựa trên bảng tra cứu. Hiệu ứng chỉnh sửa gamma khác nhau đối với văn bản màu đen và trắng (xem ngưỡng bên dưới).
  • lookup: Giá trị sửa đổi dựa trên một bảng tra cứu duy nhất.
  • shader3: Giá trị sửa lỗi do chương trình đổ bóng GLSL áp dụng. Việc chỉnh sửa gamma sẽ khác nhau đối với văn bản đen và trắng (xem ngưỡng bên dưới).
  • shader: Giá trị sửa lỗi do chương trình đổ bóng GLSL áp dụng.
Hàm sửa lỗi gamma tra cứu hoạt động tốt nhất trên GPU có toán học chương trình đổ bóng bị hạn chế. Sửa lỗi gamma của chương trình đổ bóng là cách tốt nhất để tiết kiệm bộ nhớ. Bạn nên sử dụng kỹ thuật lookup mặc định. Kỹ thuật này mang lại sự cân bằng tốt về chất lượng, tốc độ và mức sử dụng bộ nhớ.
hwui.text_gamma float 1.4 Xác định giá trị gamma dùng để chỉnh sửa gamma văn bản. Bạn có thể điều chỉnh giá trị này dựa trên màn hình mà thiết bị sử dụng.
hwui.text_gamma.black_threshold integer 64 Xác định ngưỡng độ sáng bên dưới ngưỡng này sẽ áp dụng tính năng chỉnh sửa gamma màu đen. Giá trị phải được xác định trong phạm vi 0..255.
hwui.text_gamma.white_threshold integer 192 Xác định ngưỡng độ sáng mà trên đó sẽ áp dụng tính năng sửa lỗi gamma trắng. Giá trị phải được xác định trong phạm vi 0..255.
hwui.use_gpu_pixel_buffers boolean true Dùng để bật hoặc tắt việc sử dụng PBO trên phần cứng OpenGL ES 3.0. Trình kết xuất sử dụng PBO để tải lên kết cấu không đồng bộ, đặc biệt là đối với bộ nhớ đệm phông chữ. Bạn phải luôn bật thuộc tính này nhưng có thể tắt trong quá trình khởi động hoặc phát triển nếu việc sử dụng PBO gây ra lỗi hỏng hoặc hiệu suất kém. Đó là lý do thuộc tính này không phải là thuộc tính chỉ có thể đọc.