นักแต่งเพลงฮาร์ดแวร์HAL

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

Hardware Composer (HWC) HAL กำหนดวิธีที่มีประสิทธิภาพสูงสุดในการผสมบัฟเฟอร์ด้วยฮาร์ดแวร์ที่มีอยู่ ในฐานะที่เป็น HAL การนำไปใช้งานจะเป็นแบบเฉพาะอุปกรณ์และมักจะทำโดย OEM ฮาร์ดแวร์การแสดงผล

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

  • การแสดงเนื้อหาแอปเป็นบัฟเฟอร์เริ่มต้น จากนั้นแสดงแถบสถานะเหนือเนื้อหา แถบนำทางที่อยู่ด้านบน และสุดท้ายส่งบัฟเฟอร์รอยขีดข่วนไปยังฮาร์ดแวร์แสดงผล
  • การส่งบัฟเฟอร์ทั้งสามไปยังฮาร์ดแวร์แสดงผลและแนะนำให้อ่านข้อมูลจากบัฟเฟอร์ต่างๆ สำหรับส่วนต่างๆ ของหน้าจอ

วิธีหลังสามารถมีประสิทธิภาพมากขึ้นอย่างมีนัยสำคัญ

ความสามารถของตัวประมวลผลการแสดงผลแตกต่างกันอย่างมาก จำนวนการซ้อนทับ ไม่ว่าจะสามารถหมุนหรือผสมเลเยอร์ได้หรือไม่ และข้อจำกัดในการวางตำแหน่งและการทับซ้อนอาจเป็นเรื่องยากที่จะแสดงผ่าน API เพื่อรองรับตัวเลือกเหล่านี้ HWC จะทำการคำนวณดังต่อไปนี้:

  1. SurfaceFlinger ให้รายการเลเยอร์ทั้งหมดแก่ HWC และถามว่า "คุณต้องการจัดการกับสิ่งนี้อย่างไร"
  2. HWC ตอบสนองโดยทำเครื่องหมายแต่ละเลเยอร์เป็นอุปกรณ์หรือองค์ประกอบของไคลเอ็นต์
  3. SurfaceFlinger จะดูแลไคลเอ็นต์ใดๆ โดยส่งบัฟเฟอร์เอาต์พุตไปยัง HWC และให้ HWC จัดการส่วนที่เหลือ

เนื่องจากผู้จำหน่ายฮาร์ดแวร์สามารถกำหนดรหัสสำหรับตัดสินใจเองได้ จึงเป็นไปได้ที่จะได้รับประสิทธิภาพที่ดีที่สุดจากทุกอุปกรณ์

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

โดยทั่วไป อุปกรณ์ Android จะรองรับระนาบโอเวอร์เลย์สี่แบบ การพยายามรวมเลเยอร์มากกว่าการซ้อนทับทำให้ระบบใช้องค์ประกอบ GLES สำหรับบางเลเยอร์ ซึ่งหมายความว่าจำนวนเลเยอร์ที่แอปใช้อาจมีผลกระทบที่วัดได้ต่อการใช้พลังงานและประสิทธิภาพ