ตั้งแต่ Android 13 เป็นต้นไป ระบบจะจัดสรรเฟรมบัฟเฟอร์ใหม่ที่ใช้ในระหว่างการคอมโพสิตฝั่งไคลเอ็นต์ทุกครั้งที่ความละเอียดของจอแสดงผลเปลี่ยนแปลง SurfaceFlinger จะทำการจัดสรรนี้ในรอบลบล้างถัดไปหลังจากเปลี่ยนความละเอียด
การจัดการ Framebuffer ระหว่างการสลับความละเอียด
การเปลี่ยนแปลงความละเอียดเกิดขึ้นจากสถานการณ์ใดสถานการณ์หนึ่งต่อไปนี้
- เหตุการณ์ Hotplug ที่เริ่มต้นโดย Hardware Composer (HWC) ซึ่งเกิดขึ้น เมื่อสลับจากจอแสดงผลภายนอกจอหนึ่งไปยังจอแสดงผลภายนอกอีกจอ ที่มีความละเอียดเริ่มต้นแตกต่างกัน - ในระหว่างเหตุการณ์ Hotplug HWC จะปล่อยแฮนเดิลไปยังเฟรมบัฟเฟอร์เก่า เมื่อยกเลิกการจัดสรรข้อมูลการแสดงผลเก่า 
- การสลับโหมดการแสดงผลที่เริ่มต้นโดย SurfaceFlinger ซึ่งเกิดขึ้นเมื่อ คุณเปลี่ยนความละเอียดโดยใช้การตั้งค่าของผู้ใช้ หรือเมื่อแอปเปลี่ยน ความละเอียดโดยใช้ - preferredDisplayModeId- ในระหว่างการสลับโหมดการแสดงผล SurfaceFlinger จะปล่อยแฮนเดิลไปยัง เฟรมบัฟเฟอร์ของไคลเอ็นต์ที่มีอยู่ก่อนที่จะเรียก - setActiveConfigหรือ- setActiveConfigWithConstraints
HWC ต้องปล่อยแฮนเดิลไปยัง Framebuffer เก่าเพื่อป้องกันปัญหาที่ร้ายแรง เช่น การกระจายหน่วยความจำในอุปกรณ์ที่ไม่มีหน่วยความจำ Framebuffer เพียงพอ ซึ่งมีความสำคัญในกรณีต่อไปนี้
- สำหรับเหตุการณ์ Hotplug ให้เรียกใช้ - onHotplugทันทีก่อน
- สำหรับการสลับโหมด ให้โทรหา - setActiveConfigหรือ- setActiveConfigWithConstraintsทันที
การปล่อยแฮนเดิลจะช่วยให้ระบบยกเลิกการจัดสรรหน่วยความจำของ Framebuffer ได้อย่างเต็มที่ ก่อนที่ SurfaceFlinger จะจัดสรร Framebuffer ใหม่ในรอบการลบล้างถัดไป
คำแนะนำสำหรับการจัดการเฟรมบัฟเฟอร์
หาก HWC ไม่ปล่อยแฮนเดิลไปยัง Framebuffer เก่าตามเวลาที่กำหนด การจัดสรร Framebuffer ใหม่ จะเกิดขึ้นก่อนการเลิกจัดสรร Framebuffer เก่า ซึ่งอาจทำให้เกิดปัญหา ร้ายแรงเมื่อการจัดสรรใหม่ล้มเหลวเนื่องจาก การกระจายตัวหรือปัญหาอื่นๆ ที่แย่กว่านั้นคือหาก HWC ไม่ปล่อยแฮนเดิลเหล่านี้เลย อาจทำให้เกิดหน่วยความจำรั่วได้
โปรดทำตามคำแนะนำต่อไปนี้เพื่อหลีกเลี่ยงการจัดสรรที่ล้มเหลวซึ่งก่อให้เกิดความเสียหายอย่างมาก
- หาก HWC ต้องใช้เฟรมบัฟเฟอร์ของไคลเอ็นต์เก่าต่อไปจนกว่าจะได้รับเฟรมบัฟเฟอร์ของไคลเอ็นต์ใหม่ การจองหน่วยความจำให้เพียงพอสำหรับทั้งเฟรมบัฟเฟอร์เก่าและใหม่เป็นสิ่งสำคัญ และอาจต้องเรียกใช้อัลกอริทึมการจัดเรียงข้อมูลใหม่ ในพื้นที่หน่วยความจำของเฟรมบัฟเฟอร์ 
- จัดสรรพูลหน่วยความจำเฉพาะสำหรับเฟรมบัฟเฟอร์ที่แยกจาก หน่วยความจำบัฟเฟอร์กราฟิกที่เหลือ ค่านี้สำคัญเนื่องจากกระบวนการของบุคคลที่สามอาจพยายามจัดสรรหน่วยความจำกราฟิกระหว่างการยกเลิกการจัดสรรและจัดสรรใหม่ของเฟรมบัฟเฟอร์ หากเฟรมบัฟเฟอร์ใช้พูลหน่วยความจำกราฟิกเดียวกันและหากหน่วยความจำกราฟิกเต็ม กระบวนการของบุคคลที่สามจะใช้หน่วยความจำที่เฟรมบัฟเฟอร์จัดสรรไว้ก่อนหน้านี้ได้ ซึ่งอาจ ส่งผลให้มีหน่วยความจำไม่เพียงพอสำหรับการจัดสรรหน่วยความจำใหม่ของ Framebuffer หรือหน่วยความจำ กระจัดกระจาย 
ทดสอบการจัดการเฟรมบัฟเฟอร์
เราขอแนะนำให้ OEM ทดสอบการจัดการหน่วยความจำของเฟรมบัฟเฟอร์ไคลเอ็นต์อย่างเหมาะสมเมื่อมีการสลับความละเอียดของอุปกรณ์ โดยมีรายละเอียดดังนี้
- สำหรับเหตุการณ์การเสียบปลั๊กขณะทำงาน ให้ถอดปลั๊กและเชื่อมต่อจอแสดงผล 2 จอที่แตกต่างกันซึ่งมีความละเอียดต่างกัน 
- สําหรับการสลับโหมด ให้ใช้การทดสอบ - ModeSwitchingTestActivityCTS Verifier เพื่อเริ่มการสลับโหมดสําหรับทดสอบลักษณะการทํางานของหน่วยความจําของเฟรมบัฟเฟอร์ การทดสอบนี้จะช่วยระบุปัญหาที่ตรวจจับได้ยากโดยอัตโนมัติ