มีอะไรใหม่ใน 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 จะคืนค่า Promise ซึ่งจะได้รับการแก้ไขเมื่อการสร้างไปป์ไลน์เสร็จสมบูรณ์ นับจากนี้ไป ระบบจะไม่แสดงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบอะซิงโครนัสเมื่อ GPUDevice เป็น lost เพื่อให้อุปกรณ์ที่สูญหายดูเหมือนทำงานได้มากที่สุด ดูปัญหาเกี่ยวกับ Dawn:1874

ข้อมูลอัปเดตเกี่ยวกับการสร้างโมดูลเชดเดอร์ SPIR-V

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

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

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

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

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

ข้อมูลอัปเดตเกี่ยวกับ Dawn

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

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

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

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

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

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

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

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

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