โปรแกรมแก้ไขข้อบกพร่อง
การแก้ไขข้อบกพร่องด้วยเลเยอร์การตรวจสอบ
Vulkan ออกแบบมาเพื่อประสิทธิภาพสูงและค่าใช้จ่ายไดรเวอร์ต่ำ โดยค่าเริ่มต้นแล้ว จึงมีเพียงความสามารถในการตรวจสอบข้อผิดพลาดและการแก้ไขข้อบกพร่องที่จำกัดมาก หากคุณทำอะไรผิดพลาด ไดรเวอร์มักจะขัดข้องแทนที่จะ แสดงรหัสข้อผิดพลาด หรือที่แย่กว่านั้นคือไดรเวอร์อาจดูเหมือนทำงานบนกราฟิก การ์ดของคุณได้ แต่กลับล้มเหลวโดยสิ้นเชิงบนกราฟิกการ์ดอื่นๆ
Vulkan มีเลเยอร์การตรวจสอบซึ่งเป็นส่วนของโค้ดที่สามารถแทรกระหว่าง API กับ ไดรเวอร์กราฟิกเพื่อทำสิ่งต่างๆ เช่น การเรียกใช้การตรวจสอบเพิ่มเติมในพารามิเตอร์ฟังก์ชัน และการติดตามปัญหาการจัดการหน่วยความจำ เพื่อให้คุณเปิดใช้การตรวจสอบอย่างละเอียดในระหว่างการพัฒนาได้ คุณเปิดใช้เลเยอร์การตรวจสอบได้ในระหว่าง การพัฒนา และปิดใช้เลเยอร์ดังกล่าวโดยสิ้นเชิงเมื่อเผยแพร่แอปพลิเคชันโดยมี ค่าใช้จ่ายเป็น 0
ใครๆ ก็เขียนเลเยอร์การตรวจสอบได้ แต่ Khronos มีชุดมาตรฐานเดียวที่เรียกว่า VK_LAYER_KHRONOS_validation
ดูเลเยอร์การตรวจสอบ Vulkan ใน Android
จากหน้า Android NDK เพื่อเปิดใช้เลเยอร์การตรวจสอบในแอปพลิเคชัน
RenderDoc
RenderDoc เป็นอีกหนึ่งเครื่องมือโอเพนซอร์สที่มีประสิทธิภาพซึ่งช่วยให้คุณบันทึกเฟรมเพื่อตรวจสอบและวิเคราะห์ได้ ซึ่งเป็นเครื่องมือที่มีประสิทธิภาพมากที่โปรแกรมเมอร์กราฟิกใช้เพื่อแก้ไขข้อบกพร่องของฉากที่เรนเดอร์ โดยรองรับ Vulkan ใน Android ได้ดีแม้ว่าคุณจะต้องตั้งค่าแอปพลิเคชันเป็น debuggable เพื่อให้ทำงานได้
ดูข้อมูลเกี่ยวกับวิธีตั้งค่าและใช้งานในแอปพลิเคชัน Android ได้ที่ฉันจะใช้ RenderDoc ใน Android ได้อย่างไร
คลังการจับภาพ / การเล่นซ้ำ
GFXReconstruct
GFXReconstruct เป็นโปรเจ็กต์โอเพนซอร์สที่ให้บริการเครื่องมือในการบันทึกและ เล่นซ้ำการเรียก API กราฟิกที่แอปพลิเคชันดำเนินการ คุณสามารถเล่นการติดตามที่บันทึกไว้ซ้ำในภายหลังเพื่อสร้างลักษณะการทำงานเฉพาะกราฟิกของแอปพลิเคชันที่จับภาพ ขึ้นมาใหม่ได้ ข้อดีหลักอย่างหนึ่งของ GFXReconstruct คือการช่วยให้คุณ ใช้ในแอปพลิเคชันที่เผยแพร่แล้วได้ (เมื่อปิดandroid:debuggable)
ดูข้อมูลเพิ่มเติมได้ที่ที่เก็บโปรเจ็กต์ ดูข้อมูลการตั้งค่าและการใช้งาน Vulkan ใน Android ได้ที่ การจับภาพและการเล่นซ้ำของ GFXReconstruct API สำหรับ Android
โปรดทราบว่าไฟล์การติดตามไม่สามารถพกพาได้ ซึ่งหมายความว่าคุณไม่สามารถบันทึก ไฟล์ในอุปกรณ์เครื่องหนึ่งและเล่นซ้ำในอุปกรณ์อีกเครื่องหนึ่ง (ที่มีเวอร์ชันระบบปฏิบัติการ ชิปเซ็ต หรือแม้แต่เวอร์ชันไดรเวอร์ที่แตกต่างกัน)
โปรไฟล์
Android GPU Inspector (AGI)
Android GPU Inspector (AGI) คือโปรแกรมสร้างโปรไฟล์กราฟิกที่สร้างขึ้นสำหรับ Android ซึ่งมีโปรไฟล์ระบบและโปรแกรมสร้างโปรไฟล์เฟรม โดยจะให้ข้อมูลการสร้างโปรไฟล์ระดับสูงที่ช่วยให้คุณเข้าใจโปรไฟล์ประสิทธิภาพของเกมและระบุคอขวดได้
หากต้องการดาวน์โหลด AGI และดูวิธีใช้งาน โปรดไปที่เว็บไซต์ Android GPU Inspector
Profiler ของ Android Studio
Android Studio Profiler เป็นเครื่องมือที่มีประโยชน์ในการสร้างโปรไฟล์ประสิทธิภาพของแอป อย่างไรก็ตาม ไม่ได้ออกแบบมาเพื่อการสร้างโปรไฟล์กราฟิกโดยเฉพาะ ซึ่งประกอบด้วย CPU Profiler, Memory Profiler, Network Profiler, Energy Profiler, Power Profiler และ Event Monitor
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าและใช้ Android Studio Profiler ได้ที่ส่วนสร้างโปรไฟล์ประสิทธิภาพของแอป
โปรไฟล์ OEM
เครื่องมือในส่วนนี้เป็นเครื่องมือเฉพาะของ OEM และอาจใช้ไม่ได้ในอุปกรณ์ที่ทำงานบนชิปอื่นๆ
ARM Performance Studio สำหรับอุปกรณ์เคลื่อนที่
Arm Performance Studio for Mobile คือชื่อใหม่ของ Arm Mobile Studio เป็นชุดเครื่องมือที่มี เครื่องมือวิเคราะห์กราฟิก และFrame Advisor เพื่อช่วยคุณระบุและแก้ไขปัญหาด้านประสิทธิภาพใน GPU ของ ARM
ดูข้อมูลเพิ่มเติมได้ที่เว็บไซต์ Arm Performance Studio สำหรับอุปกรณ์เคลื่อนที่
ARM PerfDoc สำหรับ GPU Mali
PerfDoc เป็นเลเยอร์ Vulkan ที่พัฒนาขึ้น เพื่อตรวจสอบแอปพลิเคชันตามแนวทางปฏิบัติแนะนำสำหรับ GPU Mali ของ ARM ตั้งแต่นั้นมา ก็มีการผสานรวมเข้ากับ VK_LAYER_KHRONOS_validation และเป็นส่วนหนึ่งของ เลเยอร์การตรวจสอบมาตรฐานของ Vulkan โดยพื้นฐาน
ดูข้อมูลเกี่ยวกับวิธีใช้ได้ที่ส่วนการแก้ไขข้อบกพร่องด้วยเลเยอร์การตรวจสอบ
Qualcomm Snapdragon Profiler
Qualcomm Snapdragon Profiler เป็นซอฟต์แวร์การจัดทำโปรไฟล์ที่ Qualcomm พัฒนาขึ้นสำหรับ นักพัฒนาแอปพลิเคชันเพื่อวิเคราะห์ประสิทธิภาพของ CPU, GPU, DSP, หน่วยความจำ, พลังงาน, ความร้อน และ เครือข่ายเพื่อระบุคอขวดในชิปเซ็ต
ดูข้อมูลเพิ่มเติมได้ที่ Snapdragon Profiler ใน Qualcomm Developer Network
Samsung GPUWatch
GPUWatch ของ Samsung เป็นเครื่องมือสำหรับสังเกตกิจกรรมของ GPU ในอุปกรณ์ Samsung เครื่องมือนี้แตกต่างจากเครื่องมืออื่นๆ ตรงที่คุณใช้ได้โดยตรงจากอุปกรณ์เคลื่อนที่ จึงสะดวกมากในการ ตรวจสอบประสิทธิภาพของแอปพลิเคชันได้ทันทีแม้ว่าจะไม่มีสิทธิ์เข้าถึง คอมพิวเตอร์โฮสต์เครื่องอื่นก็ตาม
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเปิดใช้ได้ในคู่มือผู้ใช้
PVRTune
PVRTune ของ Imagination Technologies ช่วยให้ นักพัฒนาซอฟต์แวร์สามารถสร้างโปรไฟล์แอปพลิเคชันในฮาร์ดแวร์ PowerVR แบบเรียลไทม์ด้วย ตัวนับและเมตริกที่หลากหลาย นอกจากนี้ยังช่วยให้บันทึกเซสชันเพื่อ การวิเคราะห์ระดับล่างเพิ่มเติมและตรวจหาคอขวดด้านประสิทธิภาพได้ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ PVRTune ได้ที่คู่มือ
เครื่องมือการย้ายข้อมูล
การแปลง Shader จาก GLSL เป็น SPIR-V
Vulkan API คาดหวังให้โปรแกรม Shader อยู่ในรูปแบบไบนารี SPIR-V กลาง ซึ่งแตกต่างจาก OpenGL ES ที่คุณสามารถส่งซอร์สโค้ดที่เขียนใน OpenGL Shading Language (GLSL) เป็นสตริงข้อความได้
NDK r12 ขึ้นไปมีไลบรารีรันไทม์สำหรับการคอมไพล์เชเดอร์ GLSL เป็น SPIR-V ซึ่ง Vulkan ใช้ได้ คอมไพเลอร์ shaderc ใช้เพื่อคอมไพล์โปรแกรม Shader ที่เขียนด้วย GLSL เป็น SPIR-V ได้ หากเกมของคุณใช้ HLSL DirectXShaderCompiler จะรองรับเอาต์พุต SPIR-V
โดยปกติแล้ว คุณจะต้องคอมไพล์โปรแกรม Shader แบบออฟไลน์ซึ่งเป็นส่วนหนึ่งของกระบวนการสร้างชิ้นงานสำหรับเกม และรวมโมดูล SPIR-V เป็นส่วนหนึ่งของชิ้นงานรันไทม์
ดูข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการคอมไพล์ Shader สำหรับแอปพลิเคชัน Vulkan ได้ที่คอมไพเลอร์ Shader ของ Vulkan ใน Android ในส่วน Android NDK
ฟีเจอร์ขั้นสูง
ผสานรวมการเว้นระยะเฟรมของ Android เข้ากับตัวแสดงผล Vulkan
ไลบรารีการเว้นเฟรมของ Android (หรือที่เรียกว่า Swappy) ช่วยให้เกม Vulkan แสดงภาพได้อย่างราบรื่นและเว้นเฟรมได้อย่างถูกต้องเพื่อให้ลูปการแสดงผลของเกมซิงค์กับระบบย่อยการแสดงผลของระบบปฏิบัติการและฮาร์ดแวร์การแสดงผลพื้นฐาน
การเว้นระยะที่ถูกต้องจะช่วยขจัดอาร์ติแฟกต์ภาพที่เรียกว่าภาพขาด เพิ่มประสิทธิภาพการใช้พลังงานผ่านการซิงค์ระหว่างการรีเฟรชการแสดงผลและการนำเสนอเฟรม รวมถึงขจัดความกระตุกด้วยการรักษาอัตราเฟรมให้คงที่ ดูข้อมูลเพิ่มเติม เกี่ยวกับความสำคัญของการเว้นระยะเฟรมได้ที่ส่วนไลบรารีการเว้นระยะเฟรมของ AGDK
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีผสานรวมการเว้นระยะเฟรมเข้ากับเกมได้ที่ ผสานรวมการเว้นระยะเฟรมของ Android เข้ากับโปรแกรมแสดงผล Vulkan
จัดการการวางแนวอุปกรณ์ด้วยการหมุนก่อนของ Vulkan
การจัดการการหมุนของ Surface นอกแอปพลิเคชันอาจไม่ฟรี แม้ในอุปกรณ์ระดับสูงบางรุ่นที่มีหน่วยประมวลผลการแสดงผล (DPU) โดยเฉพาะ ก็ยังคงมีผลกระทบด้านประสิทธิภาพที่วัดได้ และผลกระทบจะขึ้นอยู่กับว่าแอปพลิเคชันของคุณใช้ CPU หรือ GPU
Vulkan ช่วยให้นักพัฒนาแอปสามารถระบุข้อมูลเพิ่มเติมเกี่ยวกับสถานะการแสดงผลให้กับอุปกรณ์ได้มากกว่า OpenGL ข้อมูลดังกล่าวอย่างหนึ่งคือการวางแนวอุปกรณ์และความสัมพันธ์กับการวางแนวพื้นผิวการแสดงผล ความสามารถนี้ช่วยให้คุณใช้การหมุนก่อนเพื่อใช้ประโยชน์จาก Vulkan บน Android ได้อย่างเต็มที่
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีจัดการการหมุนอุปกรณ์ในแอปพลิเคชัน Vulkan อย่างมีประสิทธิภาพได้ที่จัดการการวางแนวอุปกรณ์ด้วยการหมุนก่อนใน Vulkan และแอปพลิเคชันเดโมที่เกี่ยวข้อง
เพิ่มประสิทธิภาพด้วยความแม่นยำที่ลดลง
รูปแบบตัวเลขของข้อมูลกราฟิกและการคำนวณ Shader อาจส่งผล อย่างมากต่อประสิทธิภาพของเกม การคำนวณและข้อมูลส่วนใหญ่ในกราฟิก 3 มิติสมัยใหม่ใช้เลขทศนิยม Vulkan ใน Android ใช้เลขทศนิยมที่มีขนาด 32 หรือ 16 บิต โดยทั่วไปแล้ว ตัวเลขทศนิยมแบบ 32 บิต เรียกว่าความแม่นยำเดี่ยวหรือความแม่นยำ เต็ม แม้ว่าประเภทจุดลอยตัว 64 บิตจะกำหนดไว้ใน Vulkan แต่โดยทั่วไปแล้วระบบจะไม่รองรับและเราไม่แนะนำให้ใช้
ดูข้อมูลเกี่ยวกับวิธีเพิ่มประสิทธิภาพแอปพลิเคชัน Vulkan เพื่อให้ได้ประสิทธิภาพที่ดีที่สุดในการคำนวณเลขคณิตได้ที่ เพิ่มประสิทธิภาพด้วยความแม่นยำที่ลดลง