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

François Beaufort
François Beaufort

เลิกตั้งค่าบัฟเฟอร์ Vertex

การส่ง null แทน GPUBuffer ไปยัง setVertexBuffer() ใน GPURenderPassEncoder หรือ GPURenderBundleEncoder ช่วยให้คุณเลิกตั้งค่าบัฟเฟอร์ Vertex ที่ตั้งค่าไว้ก่อนหน้านี้ในช่องที่กำหนดได้ ดูปัญหา 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 ด้วยแฟล็ก "การรองรับ WebGPU ที่ไม่ปลอดภัย" เนื่องจาก 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

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

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

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

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

Chrome 151-152

Chrome 149-150

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