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

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 android.hardware.graphics.composer3 เวอร์ชัน 3 ตามที่ระบุไว้ในส่วนต่อไปนี้

ดูข้อมูลเพิ่มเติมได้ที่การใช้งานอ้างอิงของ 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

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