เท็กเจอร์พื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่าน/เขียน
ประเภทการเชื่อมโยงพื้นผิวพื้นที่เก็บข้อมูลช่วยให้โปรแกรมเปลี่ยนสีสามารถอ่านจากพื้นผิวพื้นที่เก็บข้อมูลได้โดยไม่ต้องเพิ่มการใช้งาน 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 และ Shared Worker
WebGPU ใน Chrome ยกระดับการรองรับ Web Worker ไปอีกขั้น โดยตอนนี้รองรับทั้ง Service Worker และ Shared Worker คุณสามารถใช้ Service Worker เพื่อปรับปรุงงานเบื้องหลังและความสามารถแบบออฟไลน์ รวมถึงใช้ Shared Worker เพื่อแชร์ทรัพยากรอย่างมีประสิทธิภาพระหว่างสคริปต์ต่างๆ ดูปัญหา chromium:41494731
ดูวิธีใช้ WebGPU ใน Extension Service Worker ได้จากตัวอย่างส่วนขยาย Chrome และส่วนขยาย WebLLM ใน Chrome
แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
ตอนนี้แอตทริบิวต์ข้อมูลอะแดปเตอร์ 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
ใน Dawn API ตอนนี้ระบบจะไม่เรียกใช้การเรียกกลับข้อผิดพลาดที่ไม่ได้บันทึกไว้ซึ่งตั้งค่าด้วย wgpuDeviceSetUncapturedErrorCallback
หลังจากที่อุปกรณ์ GPU สูญหาย การแก้ไขนี้ช่วยให้ Dawn สอดคล้องกับข้อกำหนดเฉพาะของ JavaScript API และการใช้งานของ Blink ดูปัญหา dawn:2459
ข้อมูลนี้เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่ครอบคลุมในชุดมีอะไรใหม่ใน WebGPU
Chrome 131
- ตัดระยะทางใน WGSL
- GPUCanvasContext getConfiguration()
- องค์ประกอบพื้นฐานของจุดและเส้นต้องไม่มีอคติด้านความลึก
- ฟังก์ชันการสแกนแบบรวมในตัวสำหรับกลุ่มย่อย
- การรองรับการดึงข้อมูลแบบหลายดึงข้อมูลโดยอ้อมในขั้นทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader เป็นแบบคณิตศาสตร์ที่เข้มงวด
- นํา GPUAdapter requestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มาแบบคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
- การรองรับ HDR ด้วยโหมดการปรับโทนสีของ Canvas
- การรองรับกลุ่มย่อยที่เพิ่มขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
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
- Syntax sugar สำหรับการนำคอมโพสิทมาอ้างอิงใน 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