พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านเขียน
ประเภทการผูกพื้นผิวพื้นที่เก็บข้อมูลช่วยให้ Shader อ่านจากพื้นผิวพื้นที่เก็บข้อมูลได้โดยไม่ต้องเพิ่มการใช้งาน TEXTURE_BINDING และทำการอ่านและเขียนแบบผสมในบางรูปแบบ เมื่อส่วนขยายภาษา WGSL "readonly_and_readwrite_storage_textures" อยู่ใน navigator.gpu.wgslLanguageFeatures ตอนนี้คุณสามารถตั้งค่าสิทธิ์เข้าถึง GPUStorageTexture เป็น "read-write" หรือ "read-only" เมื่อสร้างเลย์เอาต์ของกลุ่มการผูก ก่อนหน้านี้การดำเนินการนี้จำกัดไว้ที่ "write-only"
จากนั้นโค้ด Shader WGSL จะใช้ read_write และ read ตัวระบุสิทธิ์เข้าถึงสำหรับพื้นผิวพื้นที่เก็บข้อมูลได้ ฟังก์ชันบิวท์อิน textureLoad() และ textureStore() จะทำงานตามนั้น และฟังก์ชันบิวท์อิน textureBarrier() ใหม่จะพร้อมใช้งานเพื่อซิงค์การเข้าถึงหน่วยความจำของพื้นผิวในเวิร์กกรุ๊ป
เราขอแนะนำให้ใช้ requires-directive เพื่อส่งสัญญาณว่าอาจเกิดปัญหาในการย้ายโค้ดด้วย requires readonly_and_readwrite_storage_textures; ที่ด้านบนของโค้ด Shader WGSL ดูตัวอย่างต่อไปนี้และ ปัญหา dawn:1972
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
การรองรับ Service Worker และ Shared Worker
WebGPU ใน Chrome ยกระดับการรองรับ Web Worker ไปอีกขั้น โดยตอนนี้รองรับทั้ง Service Worker และ Shared Worker คุณสามารถใช้ Service Worker เพื่อเพิ่มประสิทธิภาพงานเบื้องหลังและความสามารถแบบออฟไลน์ และใช้ Shared Worker เพื่อแชร์ทรัพยากรระหว่างสคริปต์ได้อย่างมีประสิทธิภาพ ดู ปัญหา chromium:41494731
ดูตัวอย่างส่วนขยาย Chrome และส่วนขยาย WebLLM Chrome เพื่อดูวิธีใช้ WebGPU ใน Service Worker ของส่วนขยาย
แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
แอตทริบิวต์ข้อมูลอะแดปเตอร์ d3dShaderModel และ vkDriverVersion ที่ไม่ใช่มาตรฐานพร้อมใช้งานแล้วเมื่อเรียก requestAdapterInfo() หากผู้ใช้เปิดใช้ แฟล็ก "ฟีเจอร์สำหรับนักพัฒนาแอป WebGPU" ที่ chrome://flags/#enable-webgpu-developer-features เมื่อรองรับ
d3dShaderModelคือหมายเลขรุ่น Shader D3D สูงสุดที่รองรับ เช่น ค่า 62 แสดงว่าไดรเวอร์ปัจจุบันรองรับ HLSL SM 6.2 ดูเอกสารประกอบและปัญหา dawn:1254vkDriverVersionคือหมายเลขเวอร์ชันของไดรเวอร์ Vulkan ที่ผู้จำหน่ายระบุ ดูเอกสารประกอบและปัญหา chromium:327457605
vkDriverVersion ที่แสดงใน https://webgpureport.org.การแก้ไขข้อบกพร่อง
การสร้างไปป์ไลน์ 2 รายการที่มีกลุ่มการผูกที่ตรงกันโดยใช้ layout: "auto" จากนั้นสร้างกลุ่มการผูกด้วยไปป์ไลน์แรกและใช้กับไปป์ไลน์ที่ 2 ตอนนี้จะทำให้เกิด GPUValidationError การอนุญาตให้ทำเช่นนั้นเป็นข้อบกพร่องในการติดตั้งใช้งาน ซึ่งตอนนี้ได้รับการแก้ไขแล้วด้วยการทดสอบที่เหมาะสม tests ดู ปัญหา dawn:2402
ข้อมูลอัปเดตเกี่ยวกับ Dawn
ใน Dawn API ตอนนี้ระบบจะไม่เรียกใช้การเรียกกลับข้อผิดพลาดที่ไม่ได้แคปเจอร์ซึ่งตั้งค่าด้วย wgpuDeviceSetUncapturedErrorCallback หลังจากที่อุปกรณ์ GPU สูญหาย การแก้ไขนี้ทำให้ Dawn สอดคล้องกับข้อกำหนดเฉพาะของ JavaScript API และการติดตั้งใช้งานของ Blink ดู ปัญหา dawn:2459
ข้อมูลนี้ครอบคลุมเฉพาะไฮไลต์สำคัญบางส่วน ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่กล่าวถึงในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 147-148
Chrome 146
- รองรับโหมดความเข้ากันได้ของ WebGPU ใน OpenGL ES 3.1
- ไฟล์แนบชั่วคราว
- ส่วนขยาย texture_and_sampler_let ของ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 145
- ส่วนขยาย subgroup_uniformity ของ WGSL
- การแมปบัฟเฟอร์แบบซิงโครนัสเวอร์ชันทดลองใน Worker
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 144
- ส่วนขยาย subgroup_id ของ WGSL
- ส่วนขยาย uniform_buffer_standard_layout ของ WGSL
- WebGPU ใน Linux
- writeBuffer และ writeTexture เร็วขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 143
- การสลับคอมโพเนนต์พื้นผิว
- นำการใช้งานพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว bgra8unorm ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 142
Chrome 141
- Tint IR เสร็จสมบูรณ์แล้ว
- การวิเคราะห์ช่วงจำนวนเต็มในคอมไพเลอร์ WGSL
- การอัปเดต SPIR-V 1.4 สำหรับแบ็กเอนด์ Vulkan
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 140
- คำขออุปกรณ์ใช้พื้นที่อะแดปเตอร์
- ตัวย่อสำหรับการใช้พื้นผิวในที่ที่ใช้มุมมองพื้นผิว
- textureSampleLevel ของ WGSL รองรับพื้นผิว 1 มิติ
- เลิกใช้งานการใช้งานพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว bgra8unorm
- นำแอตทริบิวต์ GPUAdapter isFallbackAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 139
- การรองรับพื้นผิว 3 มิติสำหรับรูปแบบที่บีบอัด BC และ ASTC
- ฟีเจอร์ใหม่ "core-features-and-limits"
- ช่วงทดลองใช้จากต้นทางสำหรับโหมดความเข้ากันได้ของ WebGPU
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 138
- ตัวย่อสำหรับการใช้บัฟเฟอร์เป็นทรัพยากรการผูก
- การเปลี่ยนแปลงข้อกำหนดด้านขนาดสำหรับบัฟเฟอร์ที่แมปเมื่อสร้าง
- รายงานสถาปัตยกรรมสำหรับ GPU ล่าสุด
- เลิกใช้งานแอตทริบิวต์ GPUAdapter isFallbackAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 137
- ใช้มุมมองพื้นผิวสำหรับการผูก externalTexture
- คัดลอกบัฟเฟอร์โดยไม่ต้องระบุออฟเซ็ตและขนาด
- workgroupUniformLoad ของ WGSL ที่ใช้ตัวชี้ไปยังอะตอม
- แอตทริบิวต์ powerPreference ของ GPUAdapterInfo
- นำแอตทริบิวต์ compatibilityMode ของ GPURequestAdapterOptions ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 136
- แอตทริบิวต์ isFallbackAdapter ของ GPUAdapterInfo
- การปรับปรุงเวลาคอมไพล์ Shader ใน D3D12
- บันทึกและคัดลอกรูปภาพ Canvas
- ยกเลิกข้อจำกัดของโหมดความเข้ากันได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 135
- อนุญาตให้สร้างเลย์เอาต์ไปป์ไลน์ด้วยเลย์เอาต์กลุ่มการผูกเป็น Null
- อนุญาตให้ Viewport ขยายออกไปนอกขอบเขตของเป้าหมายการแสดงผล
- เข้าถึงโหมดความเข้ากันได้เวอร์ชันทดลองใน Android ได้ง่ายขึ้น
- นำขีดจำกัด maxInterStageShaderComponents ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 134
- ปรับปรุงเวิร์กโหลดแมชชีนเลิร์นนิงด้วยกลุ่มย่อย
- นำการรองรับประเภทพื้นผิวที่กรองได้แบบลอยตัวออกเนื่องจากผสานได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 133
- รูปแบบจุดยอด unorm8x4-bgra และรูปแบบจุดยอด 1 คอมโพเนนต์เพิ่มเติม
- อนุญาตให้ขอขีดจำกัดที่ไม่รู้จักด้วยค่าที่ไม่ได้กำหนด
- การเปลี่ยนแปลงกฎการจัดแนวของ WGSL
- การเพิ่มประสิทธิภาพ WGSL ด้วยการทิ้ง
- ใช้ displaySize ของ VideoFrame สำหรับพื้นผิวภายนอก
- จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- เปิดใช้โหมดความเข้ากันได้ด้วย featureLevel
- การล้างฟีเจอร์กลุ่มย่อยเวอร์ชันทดลอง
- เลิกใช้งานขีดจำกัด maxInterStageShaderComponents
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 132
- การใช้งานมุมมองพื้นผิว
- การผสานพื้นผิวแบบลอยตัว 32 บิต
- แอตทริบิวต์ adapterInfo ของ GPUDevice
- การกำหนดค่าบริบท Canvas ด้วยรูปแบบที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด JavaScript
- ข้อจำกัดของตัวกรองตัวอย่างในพื้นผิว
- การทดลองใช้กลุ่มย่อยแบบขยาย
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- การรองรับรูปแบบพื้นผิวแบบปกติ 16 บิตเวอร์ชันทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 131
- ระยะทางคลิปใน WGSL
- getConfiguration() ของ GPUCanvasContext
- ดั้งเดิมที่เป็นจุดและเส้นต้องไม่มีการเบี่ยงเบนความลึก
- ฟังก์ชันบิวท์อินการสแกนแบบรวมสำหรับกลุ่มย่อย
- การรองรับ multi-draw indirect เวอร์ชันทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader แบบเข้มงวด
- นำ requestAdapterInfo() ของ GPUAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสานแหล่งที่มาคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
Chrome 128
- การทดลองใช้กลุ่มย่อย
- เลิกใช้งานการตั้งค่าการเบี่ยงเบนความลึกสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดที่ไม่ได้แคปเจอร์ในเครื่องมือสำหรับนักพัฒนาเว็บหาก preventDefault
- การสุ่มตัวอย่างการประมาณค่าของ WGSL ก่อนและอย่างใดอย่างหนึ่ง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android เวอร์ชันทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของตัวเข้ารหัสคำสั่งที่ปรับปรุงแล้ว
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจำกัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านเขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- การแก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 123
- การรองรับฟังก์ชันบิวท์อิน DP4a ใน WGSL
- พารามิเตอร์ตัวชี้ที่ไม่จำกัดใน WGSL
- ไวยากรณ์ที่กระชับสำหรับการอ้างอิงแบบคอมโพสิตใน WGSL
- สถานะแบบอ่านอย่างเดียวแยกกันสำหรับด้านข้างของลายฉลุและความลึก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์อยู่ระหว่างการพัฒนา)
- เพิ่มขีดจำกัด maxVertexAttributes
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 121
- รองรับ WebGPU ใน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ Shader ใน Windows
- การค้นหาการประทับเวลาในการคำนวณและการแสดงผล
- จุดเริ่มต้นเริ่มต้นสำหรับโมดูล Shader
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีปหน่วยความจำ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 120
- การรองรับค่าจุดลอยตัว 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึก-ลายฉลุ
- ข้อมูลอัปเดตเกี่ยวกับอะแดปเตอร์
- การหาปริมาณการค้นหาการประทับเวลา
- ฟีเจอร์การล้างข้อมูล
Chrome 119
- พื้นผิวแบบลอยตัว 32 บิตที่กรองได้
- รูปแบบจุดยอด unorm10-10-10-2
- รูปแบบพื้นผิว rgb10a2uint
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture() - การรองรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านเขียนและอ่านอย่างเดียวเวอร์ชันทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์จุดยอด
- ยกเลิกการตั้งค่ากลุ่มการผูก
- ซ่อนข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูล Shader SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- การแคชไปป์ไลน์ด้วยเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายซึ่งส่งคืนโดย GPUAdapter
requestDevice() - ทำให้การเล่นวิดีโอราบรื่นหากมีการเรียก
importExternalTexture() - การปฏิบัติตามข้อกำหนดเฉพาะ
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การรองรับ Direct3D 11 เวอร์ชันทดลอง
- รับ GPU แบบแยกโดยค่าเริ่มต้นเมื่อใช้ไฟ AC
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กำหนดค่าจะแสดง InvalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn