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

François Beaufort
François Beaufort

เผยแพร่: 27 สิงหาคม 2025

คำขอของอุปกรณ์จะใช้ตัวปรับ

ตามข้อกำหนด WebGPU ระบบจะทำเครื่องหมายว่าอะแดปเตอร์ "ใช้แล้ว" เมื่อคำขออุปกรณ์สำเร็จ ดังนั้น requestDevice() การเรียกใช้ในภายหลังโดยใช้อะแดปเตอร์เดียวกันจะทำให้เกิดสัญญาที่ถูกปฏิเสธ ก่อนหน้านี้การเรียกเหล่านี้จะแสดงผลอุปกรณ์ที่สูญหายในตอนที่สร้าง ดูปัญหา 415825174

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

รูปแบบย่อสำหรับการใช้พื้นผิวในที่ที่ใช้มุมมองพื้นผิว

ตอนนี้คุณใช้ GPUTexture เป็น GPUBindingResource ได้โดยตรงเพื่อแสดงต่อเชเดอร์สำหรับการเชื่อมโยง นอกจากนี้ยังใช้เป็น GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget และ GPURenderPassDepthStencilAttachment view เพื่อปรับปรุงการยศาสตร์ได้ด้วย ซึ่งเป็นวิธีที่ง่ายกว่าการใช้ GPUTextureView เพื่อรับมุมมองเริ่มต้น ดู ปัญหา 425906323

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel รองรับพื้นผิว 1 มิติ

ตอนนี้คุณสุ่มพื้นผิว 1 มิติได้แล้วโดยใช้ textureSampleLevel() เพื่อให้สอดคล้องกับพื้นผิว 2 มิติ ซึ่งช่วยให้คุณสุ่มตัวอย่างเท็กซ์เจอร์ 1 มิติจาก Vertex Shader ได้ ซึ่งก่อนหน้านี้ทำได้จาก Fragment Shader ด้วย textureSample() เท่านั้น ดู ปัญหา 382514673

เลิกใช้งานการใช้พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวของ bgra8unorm

ตอนนี้เราเลิกใช้งานการใช้รูปแบบ "bgra8unorm" กับเท็กซ์เจอร์พื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวแล้ว ข้อกำหนด WebGPU ไม่อนุญาตให้ดำเนินการนี้อย่างชัดเจน และการอนุญาตก่อนหน้านี้ใน Chrome ถือเป็นข้อบกพร่อง เนื่องจากรูปแบบนี้มีไว้สำหรับการเข้าถึงแบบเขียนอย่างเดียวและไม่สามารถพกพาได้ ดูปัญหา 427681156

นำแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter ออก

ตามที่ได้ประกาศไว้ก่อนหน้านี้ ตอนนี้เราได้นำแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter ออกแล้ว โดยจะแทนที่ด้วยแอตทริบิวต์ isFallbackAdapter ของ GPUAdapterInfo ซึ่งเปิดตัวใน Chrome 136 ดูความตั้งใจที่จะลบ

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

ฟังก์ชัน wgpuInstanceGetWGSLLanguageFeatures() ใช้เพื่อรับรายการฟีเจอร์ภาษา WGSL ที่อินสแตนซ์รองรับ ก่อนหน้านี้จะแสดงค่า WGPUStatus เราได้อัปเดตให้ไม่แสดงค่าเนื่องจากไม่สามารถล้มเหลวได้ ดูปัญหา 429178774

ตอนนี้ฟังก์ชัน wgpuSurfacePresent() จะแสดงข้อผิดพลาด WGPUStatus หากพื้นผิวไม่มีพื้นผิวปัจจุบัน ดูปัญหา 425930323

wgpu::InstanceFeatureName::MultipleDevicesPerAdapter ฟีเจอร์ใหม่ช่วยให้ตัวดัดแปลงสร้างอุปกรณ์หลายเครื่องได้โดยไม่ต้อง "ใช้" ดูปัญหา 415825174

dump_shaders_on_failure สวิตช์อุปกรณ์ช่วยให้คุณทิ้งเชเดอร์เมื่อเกิดข้อผิดพลาดเท่านั้นเพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่อง โดยจะใช้ได้กับแบ็กเอนด์ D3 เท่านั้น แต่เราอาจขยายการให้บริการไปยังแบ็กเอนด์อื่นๆ ในอนาคต ดูปัญหา 429187478

เราได้ทำการเปลี่ยนแปลงหลายอย่างในแบ็กเอนด์ Vulkan เพื่อลดค่าใช้จ่ายเมื่อส่งการแสดงผล โดยเฉพาะอย่างยิ่งเพื่อปรับปรุงประสิทธิภาพใน GPU ของอุปกรณ์เคลื่อนที่ เช่น caching VkFramebuffers

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

มีอะไรใหม่ใน 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