มีอะไรใหม่ใน 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 เพื่อให้อุปกรณ์ที่สูญหายดูเหมือนว่าทำงานได้มากที่สุด ดูปัญหารุ่งเช้า:1874

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

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

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

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

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

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

ข้อมูลอัปเดตรุ่งเช้า

ขณะนี้ 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 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