Phần cứng Composer (HWC) HAL xác định cách hiệu quả nhất để tổng hợp bộ đệm với phần cứng có sẵn. Là một HAL, việc triển khai nó dành cho từng thiết bị cụ thể và thường được thực hiện bởi OEM phần cứng màn hình.
Giá trị của cách tiếp cận này rất dễ nhận ra khi bạn xem xét các mặt phẳng lớp phủ , kết hợp nhiều bộ đệm trong phần cứng màn hình chứ không phải GPU. Ví dụ: hãy xem xét một điện thoại Android thông thường ở hướng dọc, với thanh trạng thái ở trên cùng, thanh điều hướng ở dưới cùng và nội dung ứng dụng ở mọi nơi khác. Nội dung cho mỗi lớp nằm trong bộ đệm riêng biệt. Bạn có thể xử lý bố cục bằng một trong các phương pháp sau:
- Kết xuất nội dung ứng dụng vào bộ đệm xước, sau đó hiển thị thanh trạng thái trên đó, thanh điều hướng ở trên đó, và cuối cùng chuyển bộ đệm xước sang phần cứng hiển thị.
- Truyền cả ba bộ đệm đến phần cứng màn hình và hướng dẫn nó đọc dữ liệu từ các bộ đệm khác nhau cho các phần khác nhau của màn hình.
Cách tiếp cận thứ hai có thể hiệu quả hơn đáng kể.
Khả năng của bộ xử lý hiển thị thay đổi đáng kể. Số lượng lớp phủ, cho dù các lớp có thể được xoay hoặc pha trộn, và các hạn chế về vị trí và chồng chéo có thể khó thể hiện thông qua một API. Để đáp ứng các tùy chọn này, HWC thực hiện các tính toán sau:
- SurfaceFlinger cung cấp cho HWC một danh sách đầy đủ các lớp và hỏi, "Bạn muốn xử lý điều này như thế nào?"
- HWC phản hồi bằng cách đánh dấu từng lớp là thành phần thiết bị hoặc ứng dụng khách.
- SurfaceFlinger chăm sóc bất kỳ máy khách nào, chuyển bộ đệm đầu ra cho HWC và để HWC xử lý phần còn lại.
Bởi vì các nhà cung cấp phần cứng có thể tùy chỉnh mã ra quyết định, nên có thể đạt được hiệu suất tốt nhất trên mọi thiết bị.
Các mặt phẳng lớp phủ có thể kém hiệu quả hơn thành phần GL khi không có gì trên màn hình thay đổi. Điều này đặc biệt đúng khi nội dung lớp phủ có các pixel trong suốt và các lớp chồng chéo được pha trộn. Trong những trường hợp như vậy, HWC có thể yêu cầu thành phần GLES cho một số hoặc tất cả các lớp và giữ lại bộ đệm tổng hợp. Nếu SurfaceFlinger yêu cầu kết hợp cùng một bộ đệm, HWC có thể hiển thị bộ đệm xước đã được tổng hợp trước đó. Điều này có thể cải thiện tuổi thọ pin của thiết bị không hoạt động.
Các thiết bị Android thường hỗ trợ bốn mặt phẳng lớp phủ. Việc cố gắng kết hợp nhiều lớp hơn các lớp phủ khiến hệ thống sử dụng thành phần GLES cho một số lớp, có nghĩa là số lớp được ứng dụng sử dụng có thể có tác động đo lường được đối với mức tiêu thụ điện năng và hiệu suất.