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

François Beaufort
François Beaufort

ยกเลิกการตั้งค่าบัฟเฟอร์เวิร์กเท็กซ์

การส่ง null แทน GPUBuffer ไปยัง setVertexBuffer() ใน GPURenderPassEncoder หรือ GPURenderBundleEncoder จะช่วยให้คุณยกเลิกการตั้งค่า Vertex Buffer ที่ตั้งไว้ก่อนหน้านี้ในช่องหนึ่งๆ ได้ ดูปัญหา 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 จะช่วยให้คุณยกเลิกการตั้งค่ากลุ่มการเชื่อมโยงที่ตั้งไว้ก่อนหน้านี้ในช่องหนึ่งๆ ได้ ดู issue 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 issue:1874

การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V

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

ปรับปรุงประสบการณ์การใช้งานสำหรับนักพัฒนาแอป

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

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

ตอนนี้ไปป์ไลน์ที่สร้างด้วย createRenderPipeline({ layout: "auto" }) ใช้ประโยชน์จากกลไกการแคชใน Chrome ได้แล้ว ซึ่งหมายความว่าไปป์ไลน์เหล่านี้จะสร้างขึ้นอย่างมีประสิทธิภาพมากขึ้นและใช้หน่วยความจําน้อยลง ดู issue 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

รายการทั้งหมดที่กล่าวถึงในซีรีส์ What's New in WebGPU

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