ตั้งแต่ Android 15 เป็นต้นไป ฟีเจอร์อัตราการรีเฟรชแบบปรับได้ (ARR) จะช่วยให้ อัตราการรีเฟรชของจอแสดงผลปรับให้เข้ากับอัตราเฟรมของเนื้อหาได้โดยใช้ขั้นตอน VSync แบบไม่ต่อเนื่อง
ฟีเจอร์ ARR มีประโยชน์ดังนี้
การลดการใช้พลังงาน: โดยค่าเริ่มต้น ARR จะช่วยให้อุปกรณ์ทำงานที่อัตราต่ำกว่าอัตราการรีเฟรชสูงสุด และเปลี่ยนไปใช้อัตราที่สูงขึ้นเฉพาะเมื่อจำเป็นต่อประสบการณ์การใช้งานของผู้ใช้ ซึ่งจะช่วยลดการใช้พลังงานที่ไม่จำเป็น
ลดอาการกระตุก: ARR ช่วยให้ไม่ต้องสลับโหมด ซึ่งเป็นสาเหตุที่ทราบกันดีว่าทำให้เกิดอาการกระตุก
ภาพรวม
ในแผงที่ไม่ใช่ ARR จอแสดงผลจะรีเฟรชตามจังหวะคงที่ซึ่งกำหนดโดย โหมดการแสดงผลที่ใช้งานอยู่
ในแผง ARR อัตรา VSync ของจอแสดงผลและอัตราการรีเฟรชจะแยกออกจากกัน ซึ่งช่วยให้ อัตราการรีเฟรชเปลี่ยนแปลงได้ภายในโหมดการแสดงผลเดียว โดยอิงตามความถี่ในการอัปเดตเนื้อหา แผงสามารถทำงานที่อัตราการรีเฟรชซึ่งเป็นตัวหารของ เอฟเฟกต์ภาพขาด (TE) ของแผง OEM มีความยืดหยุ่นในการใช้ ARR ตาม การแลกเปลี่ยนพลังงานที่ต้องการ
รูปภาพต่อไปนี้เป็นจอแสดงผลที่มี vsyncPeriod
240 Hz และ
minFrameIntervalNs
(อัตราการรีเฟรชสูงสุด) 120 Hz VSync จะเกิดขึ้นทุกๆ
4.16 มิลลิวินาที สามารถแสดงเฟรมได้ทุกๆ หลายเท่าของ VSync หลังจาก
minFrameIntervalNs
จากเฟรมสุดท้าย
รูปที่ 1 ตัวอย่าง ARR
การใช้งาน
Android 15 รองรับ ARR ด้วย API ของ Hardware Composer (HWC) HAL ใหม่และการเปลี่ยนแปลงแพลตฟอร์ม
หากต้องการเปิดใช้ ARR ผู้ผลิตอุปกรณ์ต้องรองรับการเปลี่ยนแปลงเคอร์เนลและระบบใน
อุปกรณ์ที่ใช้ Android 15 ขึ้นไป และใช้ API เวอร์ชัน 3 ของ
android.hardware.graphics.composer3
ตามที่ระบุไว้ในส่วนต่อไปนี้
ดูข้อมูลเพิ่มเติมได้ที่การใช้งานอ้างอิงของ API ของ Pixel ที่รองรับ ARR
DisplayConfiguration.aidl
API ของ
DisplayConfiguration.aidl
จะระบุการกำหนดค่าการแสดงผลโดยใช้แอตทริบิวต์การแสดงผล พร้อมด้วยแอตทริบิวต์ต่อไปนี้สำหรับ ARR
- ไม่บังคับ
vrrConfig
: หากตั้งค่าไว้ ระบบจะเปิดใช้ ARR สำหรับการกำหนดค่าที่เฉพาะเจาะจง หากตั้งค่าเป็นnull
ระบบจะตั้งค่าโหมดการแสดงผลเป็นโหมดที่ไม่ใช่ ARR เช่น อัตราการรีเฟรชหลายรายการ (MRR) แอตทริบิวต์นี้ช่วยให้กำหนดค่า การแสดงผลเป็น MRR หรือ ARR ได้ แต่จะกำหนดค่าทั้ง 2 อย่างพร้อมกันไม่ได้ vsyncPeriod
: อัตรา VSync ของจอแสดงผล ในจอแสดงผล ARR ระบบจะใช้ค่านี้เพื่อหา อัตราการรีเฟรชแบบไม่ต่อเนื่องที่รองรับผู้ให้บริการต้องตั้งค่า
DisplayConfiguration.vsyncPeriod
สำหรับอุปกรณ์ทั้งหมด สำหรับจอแสดงผลที่ไม่ใช่ ARRDisplayConfiguration.vsyncPeriod
คือ อัตราการรีเฟรชจอแสดงผล หากอุปกรณ์รองรับ 120 Hz ค่านี้ต้องเป็น 8.3 มิลลิวินาทีสำหรับจอแสดงผล ARR
DisplayConfiguration.vsyncPeriod
คือความถี่ของสัญญาณ TE หากอุปกรณ์มีminFrameIntervalNs
8.3 มิลลิวินาที แต่ TE is 240 Hz ค่านี้ต้องเป็น 4.16 มิลลิวินาที
VrrConfig.aidl
API ของ
VrrConfig.aidl
มีแอตทริบิวต์ต่อไปนี้
minFrameIntervalNs
: อัตราการรีเฟรชสูงสุดที่จอแสดงผลรองรับNotifyExpectedPresentConfig
: ซึ่งจะกำหนดโดยเวลาที่จอแสดงผลต้องแจ้งล่วงหน้าเกี่ยวกับ เฟรมที่กำลังจะมาถึง
IComposerClient.notifyExpectedPresent
ให้คำแนะนำสำหรับเฟรมที่น่าจะแสดง เพื่อให้จอแสดงผล
ปรับระยะเวลาการรีเฟรชด้วยตนเองได้ตามนั้น frameIntervalNs
แสดงถึง
ความถี่ปัจจุบันที่ตามมาหลังจาก expectedPresentTime
ตัวอย่างเช่น หากมีการเรียกใช้
notifyExpectedPresent
ด้วย expectedPresentTime
N และ
frameIntervalNs
ที่ 16.6 มิลลิวินาที เฟรมถัดไปจะอยู่ที่ N + 16.6 มิลลิวินาที
หลังจากเวลาปัจจุบัน N หลังจากเวลาปัจจุบัน N จังหวะเฟรมจะเป็น 16.6 มิลลิวินาทีจนกว่าจะมีการเปลี่ยนแปลงเพิ่มเติม
IComposerClient.notifyExpectedPresent
จะเรียกใช้ก็ต่อเมื่อตั้งค่า
DisplayConfiguration.notifyExpectedPresentConfig
และหากเกิดเงื่อนไขเวลาข้อใดข้อหนึ่งต่อไปนี้
- เวลาปัจจุบันที่ไม่อยู่ในจังหวะ: เวลาการนำเสนอที่คาดไว้ของเฟรมถัดไป
เบี่ยงเบนจากอัตราการรีเฟรชปกติของจอแสดงผลที่กำหนดโดย
frameIntervalNs
- หมดเวลา: ช่วงเวลาระหว่างเฟรมก่อนหน้ามากกว่าหรือเท่ากับ
notifyExpectedPresentConfig.timeoutNs
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
ให้คำแนะนำเกี่ยวกับจังหวะของเฟรมที่กำลังจะมาถึงในหน่วยนาโนวินาที
การทดสอบ
ใช้
onRefreshRateChangedDebug
สำหรับการแก้ไขข้อบกพร่อง เมธอดนี้จะแจ้งให้ไคลเอ็นต์ทราบว่าอัตราการรีเฟรชของ
จอแสดงผลมีการเปลี่ยนแปลง
ใช้แอปทดสอบ
TouchLatency
สำหรับการทดสอบด้วยตนเองตามที่แสดงในรูปที่ 2
รูปที่ 2 แอปทดสอบ TouchLatency
ในแอปทดสอบ ให้ใช้แถบเลื่อนเพื่อปรับอัตราการแสดงผลเป็นค่าต่างๆ ของ อัตราการรีเฟรชตัวหารของอัตราการรีเฟรชของจอแสดงผล สังเกตว่าอัตราเฟรม เปลี่ยนแปลงตามอัตราที่ขออย่างไร