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

François Beaufort
François Beaufort

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

การส่ง null แทนที่จะเป็น GPUBuffer ไปยัง setVertexBuffer() ใน GPURenderPassEncoder หรือ GPURenderBundleEncoder ช่วยให้คุณยกเลิกการตั้งค่าบัฟเฟอร์จุดยอดมุมที่กำหนดไว้ก่อนหน้านี้ในช่องที่กำหนดได้ ดูปัญหารุ่งเช้า: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 ช่วยให้คุณยกเลิกการตั้งค่ากลุ่มการเชื่อมโยงที่ตั้งค่าไว้ก่อนหน้านี้ในช่องที่กำหนดได้ ดูปัญหารุ่งเช้า: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 ที่มีแฟล็ก "Unsafe WebGPU Support" เนื่องจาก SPIR-V ไม่ใช่ส่วนหนึ่งของข้อกำหนด WebGPU ก่อนการเปลี่ยนแปลงที่ใช้ SPIR-V จะทำให้มีการสร้าง GPUInternalError แทน ดูเปลี่ยน chromium:4711911

การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาซอฟต์แวร์

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

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

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

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

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

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

รายการของทุกอย่างที่มีการพูดถึงในซีรีส์มีอะไรใหม่ใน WebGPU

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