มีอะไรใหม่ใน WebGPU (Chrome 117)

François Beaufort
François Beaufort

ยกเลิกการตั้งค่าบัฟเฟอร์จุดยอด

การส่ง null แทน GPUBuffer ไปยัง setVertexBuffer() ใน GPURenderPassEncoder หรือ GPURenderBundleEncoder ช่วยให้คุณยกเลิกการตั้งค่าบัฟเฟอร์จุดยอดที่ตั้งค่าไว้ก่อนหน้านี้ในช่องที่กำหนดได้ ดูปัญหา dawn:1675

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

ยกเลิกการตั้งค่ากลุ่มการผูก

การส่ง null แทน GPUBindGroup ไปยัง setBindGroup() ใน GPURenderPassEncoder หรือ GPURenderBundleEncoder ช่วยให้คุณยกเลิกการตั้งค่ากลุ่มการผูกที่ตั้งค่าไว้ก่อนหน้านี้ในช่องที่กำหนดได้ ดูปัญหา dawn:1675

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย

เมธอด createComputePipelineAsync() และ createRenderPipelineAsync() ของ GPUDevice จะแสดงผลสัญญาซึ่งจะได้รับการแก้ไขเมื่อการสร้างไปป์ไลน์เสร็จสมบูรณ์ นับจากนี้ไป ระบบจะปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่อ GPUDevice เป็น lost เพื่อให้อุปกรณ์ที่สูญหายดูเหมือนทำงานได้มากที่สุด ดู ปัญหา dawn:1874

ข้อมูลอัปเดตการสร้างโมดูล Shader SPIR-V

การสร้างโมดูล Shader SPIR-V ด้วย createShaderModule() จะแสดงข้อผิดพลาด TypeError เว้นแต่คุณจะเรียกใช้ Chrome ด้วย แฟล็ก "Unsafe WebGPU Support" เนื่องจาก SPIR-V ไม่ได้เป็นส่วนหนึ่งของข้อกำหนด WebGPU ก่อนการเปลี่ยนแปลงนี้ การใช้ SPIR-V จะทำให้เกิด GPUInternalError แทน ดูการเปลี่ยนแปลง chromium:4711911

การปรับปรุงประสบการณ์ของนักพัฒนาแอป

ข้อความแสดงข้อผิดพลาดในการตรวจสอบความถูกต้องสำหรับการผูกเลย์เอาต์กลุ่มการผูกใน Vertex Shader ได้รับการปรับปรุงสำหรับการผูกบัฟเฟอร์พื้นที่เก็บข้อมูลแบบอ่านและเขียน และการผูกพื้นผิวพื้นที่เก็บข้อมูลแบบเขียนอย่างเดียว ดูปัญหา dawn:1883

การแคชไปป์ไลน์ด้วยเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ

ไปป์ไลน์ที่สร้างด้วย createRenderPipeline({ layout: "auto" }) จะใช้ประโยชน์จากกลไกการแคชใน Chrome แล้ว ซึ่งหมายความว่าไปป์ไลน์เหล่านี้จะสร้างขึ้นอย่างมีประสิทธิภาพมากขึ้นและใช้หน่วยความจำน้อยลง ดู ปัญหา dawn:1933

ข้อมูลอัปเดต Dawn

ตอนนี้ wgpu::RequestAdapterOptionsBackendType เป็นส่วนหนึ่งของ wgpu::RequestAdapterOptions แล้ว เพื่อให้แอปพลิเคชันขอแบ็กเอนด์ที่เฉพาะเจาะจงได้ง่ายขึ้นเมื่อรับอะแดปเตอร์ ดูตัวอย่างต่อไปนี้และ ปัญหา dawn:1875

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

มีการใช้เมธอดเพิ่มเติมหลายรายการสำหรับ Node.js ดูการเปลี่ยนแปลง dawn:142465

C API ของ webgpu.h ได้เปลี่ยนประเภทสำหรับค่าบูลีนจาก stdbool เป็น WGPUBool ซึ่งเป็น uint32_t การเปลี่ยนแปลงนี้มีขึ้นเพื่อให้แน่ใจว่า API มี ABI ที่เทียบเท่าใน C และ C++

ซึ่งครอบคลุมเฉพาะไฮไลต์ที่สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด

มีอะไรใหม่ใน WebGPU

รายการทุกอย่างที่ครอบคลุมในซีรีส์มีอะไรใหม่ใน WebGPU

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113