Cấu hình OpenGLRenderer

Tài liệu này mô tả cách điều chỉnh hiệu suất để tối ưu hoá hiệu suất phần cứng.

Thuộc tính OpenGLRenderer (libhwui)

Tài liệu này mô tả các thuộc tính để 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 dưới dạng 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 Bật hoặc 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 thuộc tính này là false, Zygote sẽ tải trước trình điều khiển GL bằng cách gọi eglGetDisplay(EGL_DEFAULT_DISPLAY). Thao tác này sẽ 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 true.

Thuộc tí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

Bật hoặc tắt tính năng tối ưu hoá kéo. Giá trị được chấp nhận là truefalse. Khi tính năng tối ưu hoá đường cắt được bật, OpenGLRenderer sẽ cố gắng giảm thiểu việc cắt bằng cách chọn lọc bật và tắt kiểm thử đường cắt GL.

Khi bị vô hiệu hoá, OpenGLRenderer sẽ giữ cho kiểm thử kéo GL được bật và thay đổi rect kéo khi cần. Một số GPU (ví dụ: SGX 540) hoạt động tốt hơn khi thay đổi hình chữ nhật kéo thường xuyên hơn là bật hoặc tắt kiểm tra kéo thường xuyên.

ro.hwui.texture_cache_size float 24 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm kết cấu trên mỗi quy trình. Bạn nên sử dụng bộ nhớ đệ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, một 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ó kích thước 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 lớp cho mỗi quy trình. Bạn nên sử dụng bộ nhớ đệm có kích thước đủ 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, vì vậy, bộ nhớ đệm phải có kích thước tối thiểu là 16 MB.
ro.hwui.gradient_cache_size float 0.5 Xác định kích thước (tính bằng megabyte) của bộ nhớ đệm độ dốc trên mỗi quy trình. Một dải chuyển màu thường chiếm từ 1 KB đến 4 KB bộ nhớ. Bạn nên sử dụng bộ nhớ đệm đủ lớn để chứa ít nhất 12 độ dốc.
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-patch cho mỗi quy trình. Bộ nhớ đệm này chỉ lưu giữ dữ liệu đỉnh, vì vậy bạn có thể giữ cho bộ nhớ đệm này có kích thước nhỏ. Mỗi đỉnh bao gồm 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 để 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, một 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ó kích thước 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 dùng bởi một số bộ nhớ đệm, 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, bộ đệm toàn màn hình sử dụng khoảng 1 MB, vì vậy, bộ nhớ đệm phải có kích thước 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 2 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, vì vậy, bộ nhớ đệm phải có kích thước 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 kết xuất trên mỗi quy trình. Bạn nên sử dụng bộ nhớ đệ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, vì vậy, 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ợ bộ đệm khuôn tô 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ớ. Hệ thống sẽ kích hoạt các lệnh xoá bộ nhớ khi cần thu hồi bộ nhớ trên tất cả cá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 độ tải hoạ tiết lên của GPU. Bạn nên sử dụng hình ảnh có kích thước tối thiểu là 1.024 pixel và tối đa là 2.048 pixel. Ngoài ra, hãy sử dụng giá trị là 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 độ tải hoạ tiết lên của GPU. Bạn nên sử dụng kích thước tối thiểu là 256 pixel và tối đa 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ộ nhớ đệm phông chữ lớn. Bộ nhớ đệm này cũng được dùng cho các glyph 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 độ tải hoạ tiết lên của GPU. Bạn nên sử dụng độ phân giải tối thiểu là 2048 pixel và tối đa là 4096 pixel. Ngoài ra, hãy sử dụng giá trị là 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 những glyph 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 độ tải hoạ tiết lên của GPU. Bạn nên sử dụng hình ảnh có kích thước tối thiểu là 512 pixel và tối đa là 2048 pixel. Ngoài ra, hãy sử dụng giá trị luỹ thừa của 2.
hwui.text_gamma_correction string lookup Chọn kỹ thuật chỉnh gamma văn bản. Có 4 lựa chọn có thể:
  • lookup3: Một bản hiệu chỉnh dựa trên bảng tra cứu. Việc điều chỉnh Gamma khác nhau đối với văn bản đen và trắng (xem các ngưỡng như sau).
  • lookup: Một bản hiệu chỉnh dựa trên một bảng tra cứu duy nhất.
  • shader3: Nội dung sửa do chương trình đổ bóng GLSL áp dụng. Việc điều chỉnh Gamma khác nhau đối với văn bản đen và trắng (xem các ngưỡng như sau).
  • shader: Nội dung sửa do chương trình đổ bóng GLSL áp dụng.
Hàm tra cứu hiệu chỉnh gamma hoạt động hiệu quả nhất trên GPU có giới hạn về toán học của chương trình đổ bóng. Việc điều chỉnh 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ự thoả 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 dùng để hiệu chỉnh 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 của thiết bị.
hwui.text_gamma.black_threshold integer 64 Xác định ngưỡng độ chói mà bên dưới đó sẽ áp dụng chế độ hiệu chỉnh gamma đen. Giá trị phải nằm trong khoảng từ 0 đến 255.
hwui.text_gamma.white_threshold integer 192 Xác định ngưỡng độ chói mà trên đó sẽ áp dụng chế độ hiệu chỉnh gamma trắng. Giá trị phải nằm trong khoảng từ 0 đến 255.
hwui.use_gpu_pixel_buffers boolean true Bật hoặc tắt tính năng sử dụng PBO trên phần cứng OpenGL ES 3.0. Trình kết xuất đồ hoạ sử dụng PBO để thực hiện quá trình tải kết cấu không đồng bộ, đặc biệt là đối với bộ nhớ đệm phông chữ. Thuộc tính này phải luôn được bật, nhưng bạn có thể tắt thuộc tính này trong quá trình khởi động hoặc phát triển nếu PBO gây ra lỗi hoặc hiệu suất kém. Đó là lý do thuộc tính này không chỉ có thể đọc.