Android 15 ra mắt tính năng tốc độ làm mới thích ứng (ARR), cho phép tốc độ làm mới màn hình thích ứng với tốc độ khung hình nội dung bằng các bước VSync riêng biệt.
Tính năng ARR mang lại những lợi ích sau:
- Giảm mức tiêu thụ năng lượng: Theo mặc định, ARR cho phép các thiết bị hoạt động ở tốc độ thấp hơn tốc độ làm mới tối đa, chỉ chuyển sang tốc độ cao hơn khi cần thiết cho trải nghiệm người dùng, giúp giảm thiểu mức tiêu thụ năng lượng không cần thiết.
- Giảm hiện tượng giật: ARR loại bỏ nhu cầu chuyển đổi chế độ, đây là nguyên nhân gây ra hiện tượng giật.
Tổng quan
Trên các bảng điều khiển không phải ARR, màn hình sẽ làm mới theo một nhịp cố định do chế độ hiển thị đang hoạt động xác định.
Trên các bảng điều khiển ARR, tốc độ VSync và tốc độ làm mới màn hình được tách rời, cho phép tốc độ làm mới thay đổi trong một chế độ hiển thị dựa trên nhịp cập nhật nội dung. Các bảng điều khiển có thể chạy ở tốc độ làm mới là các số chia của hiệu ứng xé hình (TE) của bảng điều khiển. Các OEM có thể triển khai ARR dựa trên các phương án đánh đổi năng lượng mà họ ưu tiên.
Hình sau đây cho thấy một màn hình có vsyncPeriod là 240 Hz và minFrameIntervalNs (tốc độ làm mới tối đa) là 120 Hz. VSync xảy ra sau mỗi 4,16 ms. Một khung hình có thể được trình bày ở bất kỳ bội số nào của VSync sau minFrameIntervalNs từ khung hình cuối cùng.
Hình 1. Ví dụ về ARR.
Triển khai
Android 15 hỗ trợ ARR với các API HAL Trình soạn phần cứng (HWC) mới và các thay đổi về nền tảng. Để bật ARR, các OEM phải hỗ trợ các thay đổi về kernel và hệ thống trên các thiết bị
chạy Android 15 trở lên, đồng thời triển khai API
android.hardware.graphics.composer3 phiên bản 3, như được liệt kê trong các phần
sau.
Hãy xem cách triển khai tham chiếu của Pixel về các API hỗ trợ ARR để biết thêm thông tin.
DisplayConfiguration.aidl
API DisplayConfiguration.aidl chỉ định cấu hình hiển thị
bằng các thuộc tính hiển thị, cùng với các thuộc tính sau cho ARR:
- Không bắt buộc
vrrConfig: Nếu được đặt, ARR sẽ được bật cho các cấu hình cụ thể. Nếu được đặt thànhnull, chế độ hiển thị sẽ được đặt thành các chế độ không phải ARR, chẳng hạn như tốc độ làm mới nhiều lần (MRR). Với thuộc tính này, một màn hình có thể được định cấu hình là MRR hoặc ARR, nhưng không thể vừa là MRR vừa là ARR. vsyncPeriod: Tốc độ VSync của màn hình. Trên màn hình ARR, giá trị này được dùng để lấy các tốc độ làm mới riêng biệt được hỗ trợ.Nhà cung cấp phải đặt giá trị
DisplayConfiguration.vsyncPeriodcho tất cả các thiết bị. Đối với các màn hình không phải ARR,DisplayConfiguration.vsyncPeriodlà tốc độ làm mới màn hình. Nếu một thiết bị hỗ trợ 120 Hz, thì giá trị này phải là 8,3 ms.Đối với màn hình ARR,
DisplayConfiguration.vsyncPeriodlà tần số tín hiệu TE. Nếu một thiết bị cóminFrameIntervalNslà 8,3 ms nhưng TE là 240 Hz, thì giá trị này phải là 4,16 ms.
VrrConfig.aidl
API VrrConfig.aidl bao gồm các thuộc tính sau:
minFrameIntervalNs: Tốc độ làm mới tối đa mà màn hình có thể hỗ trợ.NotifyExpectedPresentConfig: Thuộc tính này được xác định bằng thời điểm màn hình yêu cầu thông báo trước về một khung hình sắp tới.
IComposerClient.notifyExpectedPresent
cung cấp gợi ý cho một khung hình có khả năng được trình bày, để màn hình có thể điều chỉnh khoảng thời gian tự làm mới cho phù hợp. frameIntervalNs biểu thị nhịp hiện tại theo sau expectedPresentTime. Ví dụ: nếu notifyExpectedPresent được gọi với expectedPresentTime N và frameIntervalNs là 16,6 ms, thì khung hình tiếp theo sẽ là N + 16,6 ms sau thời gian hiện tại N. Sau thời gian hiện tại N, nhịp khung hình là 16,6 ms cho đến khi có các thay đổi khác.
IComposerClient.notifyExpectedPresent chỉ được gọi khi DisplayConfiguration.notifyExpectedPresentConfig được đặt và nếu một trong các điều kiện về thời gian sau đây xảy ra:
- Thời gian hiện tại ngoài nhịp: Thời gian trình bày dự kiến của khung hình tiếp theo khác với tốc độ làm mới thông thường của màn hình do
frameIntervalNsxác định. - Đã vượt quá thời gian chờ: Khoảng thời gian giữa các khung hình trước lớn hơn hoặc bằng
notifyExpectedPresentConfig.timeoutNs.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
cung cấp gợi ý về nhịp cho các khung hình sắp tới tính bằng nano giây.
Thử nghiệm
Sử dụng
onRefreshRateChangedDebug
để gỡ lỗi. Phương thức này thông báo cho máy khách rằng tốc độ làm mới của màn hình đã thay đổi.
Sử dụng ứng dụng kiểm thử
TouchLatency
để kiểm thử thủ công như minh hoạ trong Hình 2:
Hình 2. Ứng dụng kiểm thử TouchLatency.
Trong ứng dụng kiểm thử, hãy dùng thanh trượt để điều chỉnh tốc độ kết xuất thành nhiều giá trị tốc độ làm mới số chia của tốc độ làm mới màn hình. Quan sát cách tốc độ khung hình thay đổi dựa trên tốc độ được yêu cầu.