ในฐานรหัสที่ใช้ในการสร้างเวอร์ชัน Mesa 20.2 ไดรเวอร์ RADV Vulkan สำหรับชิป AMD เปลี่ยนเป็นแบ็กเอนด์ เริ่มต้นในการรวบรวม เฉดสี» ACO «พัฒนาโดย Valve เป็นทางเลือกแทนคอมไพเลอร์ LLVM shader
การเปลี่ยนแปลงที่ระบุนี้ เสร็จสิ้นในตอนท้ายของการเพิ่มประสิทธิภาพการทำงานของเกม และเวลาเปิดตัวลดลง
เปลี่ยนแปลง จากตัวควบคุม RADV ไปยังแบ็กเอนด์ใหม่ เป็นไปได้หลังจากเข้าถึงความเท่าเทียมกันในการทำงานของ ACO ด้วยแบ็กเอนด์รุ่นเก่าที่พัฒนาโดย AMD สำหรับไดรเวอร์ AMDGPU ซึ่งยังคงใช้ในไดรเวอร์ RadeonSI OpenGL
การทดสอบโดย Valve แสดงให้เห็นว่า ACO เร็วกว่าคอมไพเลอร์สร้าง AMDGPU shader เกือบสองเท่าและแสดงให้เห็นถึงการเพิ่มขึ้นของ FPS ในบางเกมเมื่อทำงานบนระบบด้วยไดรเวอร์ RADV
ไดรเวอร์ AMD OpenGL และ Vulkan ปัจจุบันใช้คอมไพเลอร์ shader ซึ่งเป็นส่วนหนึ่งของโครงการต้นน้ำ LLVM โปรเจ็กต์นั้นใหญ่มากและมีเป้าหมายที่แตกต่างกันมากมายและการรวบรวมเกมเชดเดอร์ออนไลน์ก็เป็นเพียงหนึ่งในนั้น
สิ่งนี้สามารถนำไปสู่การแลกเปลี่ยนทางการพัฒนาซึ่งการปรับปรุงฟังก์ชันการทำงานเฉพาะเกมนั้นยากกว่าที่เป็นอยู่หรือในกรณีที่คุณลักษณะเฉพาะของเกมมักจะถูกทำลายโดยนักพัฒนา LLVM ที่ทำงานในสิ่งอื่นโดยไม่ได้ตั้งใจ
แบ็กเอนด์ของ ACO มีจุดมุ่งหมายเพื่อให้แน่ใจว่าโค้ดถูกสร้างขึ้นด้วยวิธีที่เหมาะสมที่สุด เป็นไปได้สำหรับแอปเกมและมีความเร็วในการรวบรวมสูงมาก
ACO มันเขียนใน C ++ ได้รับการพัฒนาโดยคำนึงถึงความสามารถในการรวบรวม JIT และใช้สิ่งที่รวดเร็วเพื่อทำซ้ำโครงสร้างข้อมูล หลีกเลี่ยงโครงสร้างตามตัวชี้เช่นรายการและสตริงที่เชื่อมโยงจากการใช้ def การแสดงรหัสระดับกลางขึ้นอยู่กับ SSA (Single Static Allocation) อย่างสมบูรณ์และอนุญาตให้มีการจัดสรรเรกคอร์ดคำนวณเร็กคอร์ดอย่างถูกต้องตาม Shader
การแสดงรหัสระดับกลางขึ้นอยู่กับ SSA (Single Static Allocation) อย่างสมบูรณ์และอนุญาตให้มีการจัดสรรเรกคอร์ดคำนวณเร็กคอร์ดอย่างแม่นยำตาม Shader
ขณะนี้รองรับเฉพาะพิกเซลเท่านั้น (ชิ้นส่วน) และคำนวณเฉดสีบน GPU AMD แบบแยก (dGPU VI +) อย่างไรก็ตาม ACO ได้รวบรวมเฉดสีสำหรับเกมที่ทดสอบทั้งหมดอย่างถูกต้องแล้วรวมถึงเฉดสีที่ซับซ้อนจาก Shadow of the Tomb Raider และ Wolfenstein II
ต้นแบบ ACO ที่เสนอ สำหรับการทดสอบ เร็วกว่าคอมไพเลอร์ AMDGPU shader เกือบสองเท่า และแสดงให้เห็นถึงการเพิ่มขึ้นของ FPS ในบางเกมเมื่อรันบนระบบด้วยคอนโทรลเลอร์ RADV
เพื่อทำความเข้าใจเพิ่มเติมเล็กน้อยเกี่ยวกับความเกี่ยวข้องของการนำโค้ดของ Valve มาใช้สิ่งสำคัญคือต้องอยู่เบื้องหน้า วัตถุประสงค์คือเพื่อรับประกันการสร้างรหัสที่เหมาะสมที่สุดเท่าที่จะเป็นไปได้ สำหรับแอปเกมแชเดอร์รวมถึงความเร็วในการรวบรวมที่สูงมาก
คอมไพเลอร์ shader ที่มีอยู่ใน Mesa ใช้ส่วนประกอบ LLVM พวกเขาไม่อนุญาตให้บรรลุความเร็วในการรวบรวมที่ต้องการและไม่อนุญาตให้มีการควบคุมโฟลว์การควบคุมทั้งหมดซึ่งในอดีตได้ก่อให้เกิดข้อผิดพลาดร้ายแรง
นอกจากนี้ การหลีกเลี่ยง LLVM ทำให้สามารถใช้การวิเคราะห์เชิงรุกได้มากขึ้น ความคลาดเคลื่อนและการจัดการโหลดบันทึกที่ละเอียดขึ้นทำให้การสร้างไฟล์ปฏิบัติการมีประสิทธิภาพมากขึ้น
สุดท้ายก็เป็นเช่นกัน สิ่งสำคัญคือต้องทราบว่าในขณะนี้ ACO ใช้งานได้กับตัวควบคุม Mesa RADV Vulkan เท่านั้น แต่นักพัฒนา ACO ยืนยันว่าขั้นตอนต่อไปคือการเริ่มทำงานเพื่อขยายความสามารถของ ACO เพื่อรองรับไดรเวอร์ OpenGL RadeonSI ดังนั้นในอนาคตและสำหรับไดรเวอร์นี้ ACO สามารถแทนที่คอมไพเลอร์ LLVM shader เริ่มต้นได้
เท่าไหร่ ผู้ที่ต้องการดำเนินการต่อกับแบ็กเอนด์ที่ใช้ก่อนหน้านี้ จากคอมไพเลอร์ LLVM shader พวกเขาสามารถกลับไปที่มันได้พวกเขาเพียงแค่ต้องเปลี่ยนตัวแปร
ตัวแปรสภาพแวดล้อมที่จัดเตรียมไว้เพื่อทำการเปลี่ยนแปลงนี้คือ "RADV_DEBUG = llvm"
และผู้ใช้จะเลือกแบ็กเอนด์ที่จะเล่นเกมได้อย่างไร? ต้องแก้ไขไฟล์อะไรบ้าง