พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
ประเภทการเชื่อมโยงพื้นผิวพื้นที่เก็บข้อมูลช่วยให้ตัวปรับเฉดสีอ่านจากพื้นผิวพื้นที่เก็บข้อมูลได้โดยไม่ต้องเพิ่มการใช้งาน TEXTURE_BINDING
และอ่านและเขียนแบบผสมในบางรูปแบบ เมื่อมีส่วนขยายภาษา "readonly_and_readwrite_storage_textures"
WGSL ใน navigator.gpu.wgslLanguageFeatures
ตอนนี้คุณจะตั้งค่าสิทธิ์เข้าถึง GPUStorageTexture
เป็น "read-write"
หรือ "read-only"
เมื่อสร้างเลย์เอาต์การเชื่อมโยงกลุ่มได้แล้ว ก่อนหน้านี้มีการจำกัดไว้เพียง "write-only"
จากนั้นโค้ดเฉดสี 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 และผู้ปฏิบัติงานที่แชร์
WebGPU ใน Chrome ยกระดับการสนับสนุนของผู้ปฏิบัติงานบนเว็บขึ้นไปอีกขั้น โดยปัจจุบันให้การสนับสนุนแก่ทั้งโปรแกรมทำงานของบริการและผู้ปฏิบัติงานที่แชร์ คุณสามารถใช้ Service Worker เพื่อปรับปรุงงานในเบื้องหลังและความสามารถในการทำงานแบบออฟไลน์ รวมทั้งใช้ผู้ปฏิบัติงานที่แชร์เพื่อแชร์ทรัพยากรผ่านสคริปต์ต่างๆ ได้อย่างมีประสิทธิภาพ ดูปัญหา chromium:41494731
ดูตัวอย่างส่วนขยาย Chrome และส่วนขยาย Chrome WebLLM เพื่อดูวิธีใช้ WebGPU ในโปรแกรมทำงานของบริการส่วนขยาย
แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
แอตทริบิวต์ข้อมูลอะแดปเตอร์ d3dShaderModel
และ vkDriverVersion
ที่ไม่ใช่แบบมาตรฐานพร้อมให้บริการเมื่อเรียกใช้ requestAdapterInfo()
หากผู้ใช้เปิดใช้ "ฟีเจอร์สำหรับนักพัฒนาแอป WebGPU" แจ้งที่ chrome://flags/#enable-webgpu-developer-features
ในกรณีที่รองรับ
d3dShaderModel
คือหมายเลขโมเดลตัวปรับแสงเงา D3D สูงสุดที่รองรับ เช่น ค่า 62 บ่งชี้ว่าไดรเวอร์ปัจจุบันรองรับ HLSL SM 6.2 ดูเอกสารประกอบและปัญหา dawn:1254vkDriverVersion
คือหมายเลขเวอร์ชันที่ระบุโดยผู้ให้บริการของไดรเวอร์ Vulkan ดูเอกสารประกอบและปัญหา chromium:327457605
การแก้ไขข้อบกพร่อง
การสร้างไปป์ไลน์ 2 รายการที่มี Bindgroups ที่ตรงกันโดยใช้ layout: "auto"
จากนั้นการสร้าง Bindgroup ที่มีไปป์ไลน์แรก และตอนนี้การใช้ในไปป์ไลน์ที่ 2 จะเป็นการเพิ่ม GPUValidationError การอนุญาตนี้คือข้อบกพร่องในการใช้งาน ซึ่งตอนนี้ได้รับการแก้ไขแล้วด้วยการทดสอบที่เหมาะสม ดูปัญหา dawn:2402
ข้อมูลอัปเดตรุ่งเช้า
ใน Dawn API จะไม่มีการเรียก Callback สำหรับข้อผิดพลาดที่ไม่ได้บันทึกด้วย wgpuDeviceSetUncapturedErrorCallback
หลังจากที่อุปกรณ์ GPU สูญหาย การแก้ไขนี้ทำให้ Dawn มีความสอดคล้องตามข้อกำหนดของ JavaScript API และการใช้งานของ Blink ดูปัญหา dawn:2459
ซึ่งกล่าวถึงไฮไลต์สำคัญเพียงบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทั้งหมดที่กล่าวถึงในซีรีส์ What's New in WebGPU
Chrome 128
- การทดสอบกับกลุ่มย่อย
- ลดการให้น้ำหนักพิเศษในการตั้งค่าสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดที่ไม่ได้บันทึกไว้สำหรับ DevTools หาก preventDefault
- การสุ่มตัวอย่างแบบสอดแทรกของ WGSL ก่อนหรือแบบใดแบบหนึ่ง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 127
- การทดสอบการรองรับ OpenGL ES บน Android
- แอตทริบิวต์ข้อมูลของ GPU
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของโปรแกรมเปลี่ยนไฟล์คำสั่งที่ปรับปรุงใหม่
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 126
- เพิ่มขีดจำกัด maxTextureArraydataLayer
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- ปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- การสนับสนุนของ Service Worker และผู้ปฏิบัติงานที่แชร์
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 123
- รองรับฟังก์ชัน DP4a ในตัวของ WGSL
- พารามิเตอร์ตัวชี้แบบไม่จำกัดใน WGSL
- น้ำตาลทางไวยากรณ์สำหรับลดการอ้างอิงองค์ประกอบใน WGSL
- แยกสถานะอ่านอย่างเดียวสำหรับลายฉลุและความลึก
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่กำลังพัฒนา)
- เพิ่มขีดจำกัด maxVertexAttributes
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 121
- รองรับ WebGPU บน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ตัวปรับแสงเงาใน Windows
- การค้นหาการประทับเวลาในการประมวลผลและแสดงผลบัตรผ่าน
- จุดแรกเข้าเริ่มต้นสำหรับโมดูลตัวปรับเฉดสี
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีปหน่วยความจำ
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 120
- การรองรับค่าทศนิยม 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึกของลายฉลุ
- การอัปเดตข้อมูลอะแดปเตอร์
- การวัดปริมาณการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดในฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบลอย 32 บิตที่กรองได้
- รูปแบบเวอร์เท็กซ์ unorm10-10-10-2
- รูปแบบพื้นผิวของrgb10a2uint
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- เวอร์ชันทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์ Vertex
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ไปป์ไลน์การแคชที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายส่งคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้อย่างราบรื่นหากมีการเรียกใช้
importExternalTexture()
- ความสอดคล้องตามข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การสนับสนุนรุ่นทดลองสำหรับ Direct3D 11
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้พลังงานจากไฟฟ้า AC
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ในผืนผ้าใบที่ไม่ได้กำหนดค่าไว้แสดงข้อผิดพลาดที่ไม่ถูกต้อง
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเมื่อรุ่งเช้า