Cấu hình OpenGLRenderer

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

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 được tăng tốc phần cứng 2D của Android. Đặt các thuộc tính này trong device.mkPRODUCT_PROPERTY_OVERRIDES .

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

Tài sản Kiểu Giá trị mặc định Sự miêu tả
ro.zygote.disable_gl_preload boolean false Được sử dụng để bật/tắt tính năng tải trước trình điều khiển EGL/GL trong Zygote khi khởi động. Khi thuộc tính này được đặt 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ẻ nó với tất cả các quy trình khác. Nếu trình điều khiển không hỗ trợ chia sẻ, hãy đặt thuộc tính này thành true.

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

Tài sản Kiểu Giá trị mặc định Sự miêu tả
ro.hwui.disable_scissor_opt boolean false

Được sử dụng để bật hoặc tắt tối ưu hóa cắt kéo. Các giá trị được chấp nhận là đúng và sai. Khi tối ưu hóa cắt kéo được bật, OpenGLRenderer cố gắng giảm thiểu việc sử dụng cắt kéo bằng cách bật và tắt có chọn lọc thử nghiệm cắt kéo GL.

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

ro.hwui.texture_cache_size float 24 Xác định kích thước, tính bằng megabyte, của bộ đệm kết cấu trên mỗi quy trình. Chúng tôi khuyên bạn nên sử dụng bộ đệm đủ lớn để chứa một số màn hình có kết cấu 32 bit (ví dụ: trên màn hình 1280x800, bộ đệm toàn màn hình sử dụng khoảng 4 MB nên bộ đệm phải có ít nhất 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 của mỗi lớp quy trình. Chúng tôi khuyên bạn nên sử dụng bộ đệm đủ lớn để chứa gấp 4 lần màn hình ở 32 bit. Ví dụ: trên màn hình 1280x800, bộ đệm toàn màn hình sử dụng khoảng 4 MB, do đó bộ đệm phải có ít nhất 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ộ đệm gradient cho mỗi quá trình. Một gradient đơn thường chiếm từ 1 đến 4 KB bộ nhớ. Nên sử dụng bộ nhớ đệm đủ lớn để chứa ít nhất 12 gradient.
ro.hwui.patch_cache_size integer 128 Xác định kích thước, tính bằng kilobyte, của bộ đệm 9 bản vá, cho mỗi quy trình. Bộ đệ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 float 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 trên mỗi đường dẫn quy trình. Chúng tôi khuyên bạn nên sử dụng bộ đệm đủ lớn để chứa í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, bộ đệm toàn màn hình sử dụng khoảng 4 MB, do đó bộ đệm phải có ít nhất 4 MB.
ro.hwui.shape_cache_size float 1 Xác định kích thước, tính bằng megabyte, của bộ đệm hình dạng trên mỗi quy trình. Giá trị này được sử dụng bởi một số bộ đệm như hình tròn và hình chữ nhật tròn. Chúng tôi khuyên bạn nên sử dụng bộ đệ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, bộ đệm toàn màn hình sử dụng khoảng 1 MB, do đó bộ đệm phải có ít nhất 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 trên mỗi quá trình. Chúng tôi khuyên bạn nên sử dụng bộ đệ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, bộ đệm toàn màn hình sử dụng khoảng 1 MB, do đó bộ đệm phải có ít nhất 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ộ đệm bộ đệm kết xuất trên mỗi quy trình. Bạn nên sử dụng bộ đệm đủ lớn để chứa gấp đôi màn hình ở 8 bit. Ví dụ: trên màn hình 1280x800, bộ đệm toàn màn hình sử dụng khoảng 1 MB nên bộ đệm phải có ít nhất 2 MB. Bộ đệm có thể nhỏ hơn nếu thiết bị hỗ trợ bộ đệm stencil 4 bit hoặc 1 bit.
ro.hwui.texture_cache_flush_rate float 0.6 Xác định tỷ lệ phần trăm của bộ đệm kết cấu sẽ được giữ lại sau khi xóa bộ nhớ. Việc xóa bộ nhớ được kích hoạt khi hệ thống cần lấy lại bộ nhớ trên tất cả các ứng dụng. Chúng tôi khuyên bạn nên giải phóng khoảng 50% bộ nhớ đệm trong những tình huống 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ộ đệ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 lên kết cấu. Chúng tôi khuyên bạn nên sử dụng ít nhất 1024 pixel nhưng nhiều nhất là 2048 pixel. Bạn cũng nên sử dụng lũy ​​thừa của hai giá trị.
ro.hwui.text_small_cache_height integer 256 Xác định chiều cao tính bằng pixel của bộ đệ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 lên kết cấu. Chúng tôi khuyên bạn nên sử dụng ít nhất 256 pixel nhưng nhiều nhất là 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ộ đệm phông chữ lớn. Bộ đệm này được sử dụng cho các glyph quá lớn để vừa với bộ đệ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 lên kết cấu. Chúng tôi khuyên bạn nên sử dụng ít nhất 2048 pixel nhưng nhiều nhất là 4096 pixel. Bạn cũng nên sử dụng lũy ​​thừa của hai giá trị.
ro.hwui.text_large_cache_height integer 512 Xác định chiều cao tính bằng pixel của bộ đệm phông chữ lớn. Bộ đệm phông chữ lớn được sử dụng cho các glyph quá lớn để vừa với bộ đệ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 lên kết cấu. Chúng tôi khuyên bạn nên sử dụng ít nhất 512 pixel nhưng nhiều nhất là 2048 pixel. Bạn cũng nên sử dụng lũy ​​thừa của hai giá trị.
hwui.text_gamma_correction string lookup Chọn kỹ thuật hiệu chỉnh gamma văn bản. Có bốn lựa chọn có thể:
  • lookup3 : Một sự điều chỉnh dựa trên các bảng tra cứu. Hiệu chỉnh gamma khác nhau đối với văn bản đen trắng (xem các ngưỡng bên dưới).
  • lookup : Một sự điều chỉnh dựa trên một bảng tra cứu duy nhất.
  • shader3 : Một hiệu chỉnh được áp dụng bởi trình đổ bóng GLSL. Hiệu chỉnh gamma khác nhau đối với văn bản đen trắng (xem các ngưỡng bên dưới).
  • shader : Một hiệu chỉnh được áp dụng bởi shader GLSL.
Tra cứu hiệu chỉnh gamma hoạt động tốt nhất trên GPU có phép toán đổ bóng hạn chế. Hiệu chỉnh gamma Shader là cách tốt nhất để tiết kiệm bộ nhớ. Chúng tôi khuyên bạn nên sử dụng kỹ thuật lookup mặc định để mang lại sự thỏa hiệp 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 được sử dụng để hiệu chỉnh gamma văn bản. Giá trị này có thể được điều chỉnh dựa trên màn hình được thiết bị sử dụng.
hwui.text_gamma.black_threshold integer 64 Xác định ngưỡng độ chói mà dưới đó áp dụng hiệu chỉnh gamma đ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 độ chói mà trên đó áp dụng hiệu chỉnh gamma trắng. Giá trị phải được xác định trong phạm vi 0..255.
hwui.use_gpu_pixel_buffers boolean true Được sử dụng để bật hoặc tắt việc sử dụng PBO trên phần cứng OpenGL ES 3.0. PBO được trình kết xuất sử dụng để thực hiện tải lên kết cấu không đồng bộ, đặc biệt là đối với bộ đệm phông chữ. Thuộc tính này phải luôn được bật nhưng có thể bị vô hiệu hóa trong quá trình đưa vào sử dụng hoặc phát triển nếu việc sử dụng PBO gây ra lỗi hoặc hiệu suất kém. Đây là lý do tại sao thuộc tính không ở chế độ chỉ đọc.