เท็กเจอร์พื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่าน/เขียน
ประเภทการเชื่อมโยงพื้นผิวพื้นที่เก็บข้อมูลช่วยให้โปรแกรมเปลี่ยนสีสามารถอ่านจากพื้นผิวพื้นที่เก็บข้อมูลได้โดยไม่ต้องเพิ่มการใช้งาน TEXTURE_BINDING
และทำการอ่านและเขียนแบบผสมในบางรูปแบบ เมื่อ "readonly_and_readwrite_storage_textures"
WGSL ส่วนขยายภาษาอยู่ใน navigator.gpu.wgslLanguageFeatures
ตอนนี้คุณสามารถตั้งค่าGPUStorageTexture
ให้เข้าถึง "read-write"
หรือ "read-only"
ได้แล้วเมื่อสร้างเลย์เอาต์กลุ่มการเชื่อมโยง ก่อนหน้านี้มีการจำกัดไว้เพียง "write-only"
จากนั้นโค้ด Shader WGSL จะใช้ตัวระบุการเข้าถึง read_write
และ read
สำหรับเท็กเจอร์พื้นที่เก็บข้อมูลได้ ฟังก์ชันในตัว textureLoad()
และ textureStore()
จะทํางานตามลําดับ และฟังก์ชันในตัว textureBarrier()
ใหม่จะพร้อมใช้งานเพื่อซิงค์การเข้าถึงหน่วยความจําของเท็กเจอร์ในกลุ่มงาน
เราขอแนะนำให้ใช้คําสั่ง requires เพื่อบ่งบอกถึงโอกาสที่โค้ดจะไม่สามารถพอร์ตได้โดยใช้ requires readonly_and_readwrite_storage_textures;
ที่ด้านบนของโค้ด Shader WGSL ดูตัวอย่างต่อไปนี้และ issue 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 เพื่อปรับปรุงงานเบื้องหลังและความสามารถแบบออฟไลน์ รวมถึงใช้ Shared Worker เพื่อแชร์ทรัพยากรอย่างมีประสิทธิภาพระหว่างสคริปต์ต่างๆ ดูปัญหา chromium:41494731
ดูตัวอย่างส่วนขยาย Chrome และส่วนขยาย WebLLM ใน Chrome เพื่อดูวิธีใช้ WebGPU ใน Service Worker ของส่วนขยาย
แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
ตอนนี้แอตทริบิวต์ข้อมูลอะแดปเตอร์ d3dShaderModel
และ vkDriverVersion
ที่ไม่ใช่มาตรฐานพร้อมใช้งานเมื่อเรียก requestAdapterInfo()
แล้ว หากผู้ใช้เปิดใช้Flag "ฟีเจอร์สำหรับนักพัฒนาซอฟต์แวร์ WebGPU" ที่ chrome://flags/#enable-webgpu-developer-features
ในกรณีที่รองรับ
d3dShaderModel
คือหมายเลขรุ่นของโปรแกรมเปลี่ยนสี D3D ที่รองรับสูงสุด เช่น ค่า 62 บ่งบอกว่าไดรเวอร์ปัจจุบันรองรับ HLSL SM 6.2 ดูเอกสารประกอบและปัญหา dawn:1254vkDriverVersion
คือหมายเลขเวอร์ชันของไดรเวอร์ Vulkan ที่ระบุโดยผู้ให้บริการ โปรดดูเอกสารประกอบและปัญหา chromium:327457605
การแก้ไขข้อบกพร่อง
การสร้างไปป์ไลน์ 2 รายการที่มีกลุ่มการเชื่อมโยงที่ตรงกันโดยใช้ layout: "auto"
จากนั้นสร้างกลุ่มการเชื่อมโยงกับไปป์ไลน์แรก และนำไปใช้ในไปป์ไลน์ที่ 2 ตอนนี้จะทำให้เกิด GPUValidationError การอนุญาตให้ดำเนินการดังกล่าวเป็นข้อบกพร่องในการใช้งานซึ่งตอนนี้ได้รับการแก้ไขแล้วด้วยการทดสอบที่เหมาะสม ดู issue dawn:2402
ข้อมูลอัปเดตรุ่งเช้า
ใน Dawn API ตอนนี้ระบบจะไม่เรียกใช้การเรียกกลับข้อผิดพลาดที่ไม่ได้บันทึกไว้ซึ่งตั้งค่าด้วย wgpuDeviceSetUncapturedErrorCallback
หลังจากที่อุปกรณ์ GPU สูญหาย การแก้ไขนี้ช่วยให้ Dawn สอดคล้องกับข้อกำหนดเฉพาะของ JavaScript API และการใช้งานของ Blink ดูปัญหา dawn:2459
ข้อมูลนี้เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทั้งหมดที่กล่าวถึงในซีรีส์ What's New in WebGPU
Chrome 131
- ตัดระยะทางใน WGSL
- GPUCanvasContext getConfiguration()
- องค์ประกอบพื้นฐานของจุดและเส้นต้องไม่มีอคติด้านความลึก
- ฟังก์ชันการสแกนแบบรวมในตัวสำหรับกลุ่มย่อย
- การรองรับการดึงข้อมูลแบบหลายดึงข้อมูลโดยอ้อมในขั้นทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader ที่ใช้คณิตศาสตร์แบบเข้มงวด
- นำ GPUAdapterRequestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มาแบบคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
Chrome 128
- การทดสอบกลุ่มย่อย
- เลิกใช้งานการตั้งค่าความเอียงของภาพสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดของเครื่องมือสำหรับนักพัฒนาเว็บที่ไม่ได้บันทึกไว้หาก preventDefault
- การสุ่มตัวอย่างแบบสอดแทรกของ WGSL ก่อนหรือแบบใดแบบหนึ่ง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 127
- การรองรับ OpenGL ES ใน Android แบบทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงความสามารถในการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดเกี่ยวกับโปรแกรมเข้ารหัสคําสั่งที่ปรับปรุงแล้ว
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 126
- เพิ่มขีดจํากัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สําหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและแบบอ่านและเขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
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
- ยกเลิกการตั้งค่าบัฟเฟอร์ Vertex
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ซ่อนข้อผิดพลาดจากการสร้างไปป์ไลน์แบบแอซิงค์เมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ไปป์ไลน์การแคชที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายส่งคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้อย่างราบรื่นหากมีการเรียกใช้
importExternalTexture()
- การปฏิบัติตามข้อกำหนด
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การรองรับ Direct3D 11 แบบทดลอง
- ใช้ GPU แบบแยกต่างหากโดยค่าเริ่มต้นเมื่อใช้แหล่งจ่ายไฟ AC
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กําหนดค่าจะแสดงข้อผิดพลาด InvalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn