อัตราการรีเฟรชแบบปรับอัตโนมัติ

ตั้งแต่ Android 15 เป็นต้นไป ฟีเจอร์อัตราการรีเฟรชแบบปรับได้ (ARR) จะช่วยให้ อัตราการรีเฟรชของจอแสดงผลปรับให้เข้ากับอัตราเฟรมของเนื้อหาได้โดยใช้ขั้นตอน VSync แบบไม่ต่อเนื่อง

ฟีเจอร์ ARR มีประโยชน์ดังนี้

  • การลดการใช้พลังงาน: โดยค่าเริ่มต้น ARR จะช่วยให้อุปกรณ์ทำงานที่อัตราต่ำกว่าอัตราการรีเฟรชสูงสุด และเปลี่ยนไปใช้อัตราที่สูงขึ้นเฉพาะเมื่อจำเป็นต่อประสบการณ์การใช้งานของผู้ใช้ ซึ่งจะช่วยลดการใช้พลังงานที่ไม่จำเป็น

  • ลดอาการกระตุก: ARR ช่วยให้ไม่ต้องสลับโหมด ซึ่งเป็นสาเหตุที่ทราบกันดีว่าทำให้เกิดอาการกระตุก

ภาพรวม

ในแผงที่ไม่ใช่ ARR จอแสดงผลจะรีเฟรชตามจังหวะคงที่ซึ่งกำหนดโดย โหมดการแสดงผลที่ใช้งานอยู่

ในแผง ARR อัตรา VSync ของจอแสดงผลและอัตราการรีเฟรชจะแยกออกจากกัน ซึ่งช่วยให้ อัตราการรีเฟรชเปลี่ยนแปลงได้ภายในโหมดการแสดงผลเดียว โดยอิงตามความถี่ในการอัปเดตเนื้อหา แผงสามารถทำงานที่อัตราการรีเฟรชซึ่งเป็นตัวหารของ เอฟเฟกต์ภาพขาด (TE) ของแผง OEM มีความยืดหยุ่นในการใช้ ARR ตาม การแลกเปลี่ยนพลังงานที่ต้องการ

รูปภาพต่อไปนี้เป็นจอแสดงผลที่มี vsyncPeriod 240 Hz และ minFrameIntervalNs (อัตราการรีเฟรชสูงสุด) 120 Hz VSync จะเกิดขึ้นทุกๆ 4.16 มิลลิวินาที สามารถแสดงเฟรมได้ทุกๆ หลายเท่าของ VSync หลังจาก minFrameIntervalNs จากเฟรมสุดท้าย

arr-example

รูปที่ 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 สำหรับอุปกรณ์ทั้งหมด สำหรับจอแสดงผลที่ไม่ใช่ ARR DisplayConfiguration.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

touchlatency-app

รูปที่ 2 แอปทดสอบ TouchLatency

ในแอปทดสอบ ให้ใช้แถบเลื่อนเพื่อปรับอัตราการแสดงผลเป็นค่าต่างๆ ของ อัตราการรีเฟรชตัวหารของอัตราการรีเฟรชของจอแสดงผล สังเกตว่าอัตราเฟรม เปลี่ยนแปลงตามอัตราที่ขออย่างไร