Android Q+ อาจใช้ Vulkan Graphics API เพื่อเรนเดอร์ UI

Skia ซึ่งเป็นเอ็นจิ้นกราฟิกโอเพ่นซอร์สของ Google มีแบ็กเอนด์ Vulkan Graphics API แบ็กเอนด์นี้อาจนำไปใช้เพื่อแสดง UI ใน Android Q หรือใหม่กว่า

Android เวอร์ชันหลักถัดไปคือ Android 9 มีกำหนดเปิดตัวในเดือนหน้าสำหรับอุปกรณ์หลายเครื่อง แตกต่างจาก Android Oreo ที่การปรับปรุงหลักส่วนใหญ่อยู่ภายใต้ประทุน Android P นำเสนอคุณสมบัติที่ผู้ใช้ต้องเผชิญมากขึ้น เช่น อินเทอร์เฟซผู้ใช้ที่ปรับปรุงใหม่ ท่าทางการนำทาง และความเป็นอยู่แบบดิจิทัล ในขณะที่ยังคงทำงานในโครงการต่อไป เสียงแหลม แต่เบื้องหลัง Google ได้ปรับปรุงวิธีการแสดงผลกราฟิกบน Android ใน Android Oreo นั้น Google ได้เริ่มทดสอบแบ็กเอนด์ที่เร่งด้วยฮาร์ดแวร์ OpenGL กับเอ็นจิ้นกราฟิก Skia ซึ่งเสร็จสมบูรณ์ใน Android P Google ไม่ได้หยุดเพียงแค่นั้น เนื่องจากบริษัทวางแผนที่จะนำ Google ไปใช้ แบ็กเอนด์วัลแคน ของเอ็นจิ้นกราฟิก Skia ซึ่งจะวางจำหน่ายใน Android Q หรือรุ่นที่ใหม่กว่า

หลักฐานเรื่องนี้มาจากก ความคิดเห็น ส่งโดยวิศวกรของ Google เกี่ยวกับ Chromium Gerrit แบบโอเพ่นซอร์ส ความคิดเห็นนี้อ้างอิงถึงรายงานข้อบกพร่องเกี่ยวกับการใช้งาน Vulkan Graphics API สำหรับเบราว์เซอร์ Google Chrome บน Android ที่กำลังจะเกิดขึ้น ความคิดเห็นระบุว่าในอนาคต "จะมีข้อกำหนด" ที่ต้องมี Vulkan API รองรับ Android WebView เมื่อเฟรมเวิร์ก "[Android] กำลังจะเริ่มต้นใช้งาน Vulkan ฮวุย”


การเรนเดอร์กราฟิกใน Android

สำหรับความรู้พื้นฐาน Skia เป็นเอ็นจิ้นกราฟิก 2D โอเพ่นซอร์สที่ใช้ใน Google Chrome, Chrome OS, Android, Flutter และโครงการสำคัญอื่น ๆ Skia เป็นเครื่องมือเรนเดอร์กราฟิกที่ใช้ใน Android เวอร์ชันแรกๆ เพื่อเรนเดอร์ ดู และ ผ้าใบ (คลาสที่ใช้ในการสร้างและวาด UI ในแอพส่วนใหญ่) Android 3.0 Honeycomb แทนที่ Skia บางส่วนด้วย HWUI ซึ่งเป็นไลบรารีที่แปลง คำสั่ง Canvas เข้าสู่คำสั่ง OpenGL ที่เร่งด้วยฮาร์ดแวร์ แม้ว่าไลบรารีกราฟิก 2D Skia ยังคงใช้อยู่ในบางพื้นที่ เช่น เส้นทาง การแรสเตอร์ ในขณะเดียวกัน Google ยังสร้างแบ็กเอนด์ OpenGL สำหรับ Skia อีกด้วย ผลลัพธ์ก็คือการเรียกกราฟิกบางรายการจะถูกส่งไปยังไลบรารี Skia ในขณะที่บางรายการจะไปที่แบ็กเอนด์ OpenGL เพื่อทำความสะอาดสถาปัตยกรรมกราฟิก Google ตัดสินใจว่า HWUI จะพูดคุยกับ Skia ซึ่งตัวมันเองพูดคุยกับแบ็กเอนด์ OpenGL ที่เร่งด้วยฮาร์ดแวร์เพื่อทำการเรนเดอร์ UI ผลลัพธ์ก็คือการเรียกใช้กราฟิกสำหรับกรอบงาน UI จะเป็นไปตามเส้นทางเดียวไม่ใช่สองเส้นทาง

บางท่านอาจจำตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ที่เรียกว่า "ตั้งค่า GPU Renderer" ในตัวอย่างนักพัฒนาซอฟต์แวร์รุ่นแรกๆ ของ Android 8.0 Oreo ตัวเลือกสำหรับนักพัฒนานี้อนุญาตให้คุณบังคับให้ HWUI ใช้ Skia และแบ็กเอนด์ OpenGL ที่เร่งด้วยฮาร์ดแวร์เป็นตัวเรนเดอร์ GPU สำหรับเฟรมเวิร์ก UI ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ถูกลบออกเนื่องจากพฤติกรรมนี้เป็นค่าเริ่มต้นแล้ว

ตัวเลือกนักพัฒนา "ตั้งค่า GPU Renderer" ในตัวอย่างนักพัฒนา Android O

การดำเนินการครั้งต่อไปของ Google เพื่อปรับปรุงการเรนเดอร์กราฟิกคือการเปลี่ยนจากแบ็กเอนด์ที่เร่งด้วยฮาร์ดแวร์ OpenGL ไปเป็นแบ็กเอนด์ที่เร่งด้วยฮาร์ดแวร์ Vulkan มันไม่ใช่การเคลื่อนไหวที่ไม่คาดคิดเลยและเป็นความก้าวหน้าที่สมเหตุสมผล แต่ก็เป็นเรื่องดีที่เห็นว่ากำลังดำเนินการปรับปรุงการเรนเดอร์กราฟิกบน Android แม้ว่าการย้ายจะไม่สามารถแก้ไขสาเหตุของความล่าช้าทุกประการบน Android ได้ แต่ควรลดเวลาการเรนเดอร์เฟรมด้วยการลดการประมวลผลที่ทำโดย CPU เนื่องจากนี่เป็นงานที่อยู่ระหว่างดำเนินการอย่างมาก (ยังไม่เสร็จใน Android P) เราคาดว่าจะเปิดตัวพร้อมกับ Android Q หรือ Android รุ่นอื่นในอนาคต


ตัวอย่างการใช้ Vulkan Graphics API เพื่อเรนเดอร์ UI

เป็นไปได้จริงที่จะทดสอบแบ็กเอนด์ Vulkan สำหรับ Skia บน Android P ทันที มีพารามิเตอร์การแก้ไขข้อบกพร่องที่คุณสามารถตั้งค่าให้บังคับให้ Android ใช้ไปป์ไลน์ Skia Vulkan ได้ เพียงรีบูตหลังจากเพิ่มบรรทัดต่อไปนี้ใน /system/build.prop:

debug.hwui.renderer=skiavk

การเพิ่มบรรทัดนี้บนอุปกรณ์ที่ใช้ Android Oreo จะส่งผลให้เกิดข้อขัดข้อง ดังนั้นเราจึงไม่แนะนำ แม้ว่าอุปกรณ์ของคุณจะบู๊ตด้วยการตั้งค่าสถานะนี้บน Android P แต่ขณะนี้ยังมีข้อบกพร่องอยู่ Google Pixel Launcher ส่วนใหญ่ไม่สามารถแสดงพื้นหลังได้ วิดีโอภาพเคลื่อนไหวในการตั้งค่าไม่สามารถโหลดได้ และมีข้อบกพร่องด้านกราฟิกหลายประการในแถบสถานะและการแจ้งเตือน นอกจากนั้น แอปส่วนใหญ่ แม้แต่วิดีโอ YouTube และเกมอย่าง Doodle Jump ก็ยังโหลดได้ตามปกติ

ขอบคุณมากสำหรับนักพัฒนาที่ได้รับการยอมรับของ XDA ลูก้า020400 สำหรับความช่วยเหลือในการเขียนบทความนี้ สำหรับจัดเตรียมภาพหน้าจอที่แสดงโค้ด libhwui.so ที่แยกส่วน และสำหรับจัดเตรียมแฟล็กการแก้ไขข้อบกพร่องเพื่อทดสอบแบ็กเอนด์ Vulkan


แหล่งที่มา 1: Talkin’ Treble: วิธีที่วิศวกร Android ชนะสงครามการแยกส่วน [อาทเทคนิค]

แหล่งที่มา 2: ไปป์ไลน์กราฟิก Android: จากปุ่มไปจนถึง Framebuffer [บล็อกของ inovex]

ที่มา 3: หน้าเว็บ Skia [Google]

ที่มา 4: ความคิดเห็นโดย Romain Guy, กราฟิก Android และ Kotlin @ Google [เรดดิต]