หลังจากพัฒนามาหลายปี ทีม Chrome ได้ประกาศว่า WebGPU เวอร์ชันแรกพร้อมใช้งานโดยค่าเริ่มต้นใน Chrome บน ChromeOS, macOS และ Windows แล้ว ดูข้อมูลเพิ่มเติมได้ที่ Chrome ships WebGPU
นอกจากนี้ เรายังเริ่มเพิ่มเอกสารประกอบที่ครอบคลุมสำหรับ WebGPU ใน MDN แล้ว
และยังมีอีก
ใช้แหล่งที่มา VideoFrame ของ WebCodecs ใน importExternalTexture()
WebGPU มี API สำหรับสร้างออบเจ็กต์ "พื้นผิวภายนอก" แบบทึบแสงจาก HTMLVideoElement ผ่าน importExternalTexture() คุณสามารถใช้ออบเจ็กต์เหล่านี้เพื่อสุ่มตัวอย่างเฟรมวิดีโอได้อย่างมีประสิทธิภาพ ซึ่งอาจทำได้โดยไม่ต้องคัดลอกข้อมูลโดยตรงจากข้อมูล YUV ต้นทาง
อย่างไรก็ตาม ข้อกำหนดเบื้องต้นของ WebGPU ไม่อนุญาตให้สร้างออบเจ็กต์ GPUExternalTexture จากออบเจ็กต์ WebCodecs VideoFrame ความสามารถนี้มีความสำคัญสำหรับแอปประมวลผลวิดีโอขั้นสูงที่ใช้ WebCodecs อยู่แล้วและต้องการผสานรวม WebGPU ในไปป์ไลน์การประมวลผลวิดีโอ ขณะนี้มีการพูดคุยกันในปัญหา gpuweb/gpuweb#1380
เปิดใช้ฟีเจอร์
โดยค่าเริ่มต้น ฟีเจอร์นี้จะไม่ได้เปิดใช้ใน Chrome แต่คุณสามารถทดลองใช้ใน Chrome 113 ได้โดยเปิดใช้ฟังก์ชันการทำงานอย่างชัดแจ้ง คุณสามารถเปิดใช้งานฟีเจอร์นี้ในเครื่องได้โดยเปิดใช้ แฟล็ก "ฟีเจอร์สำหรับนักพัฒนาแอป WebGPU" ที่ chrome://flags/#enable-webgpu-developer-features
หากต้องการเปิดใช้ฟีเจอร์นี้สำหรับผู้เข้าชมแอปทุกคน ขณะนี้เรากำลังดำเนินการช่วงทดลองใช้จากต้นทางและกำหนดให้สิ้นสุดใน Chrome 118 (8 ธันวาคม 2023) หากต้องการเข้าร่วมช่วงทดลองใช้จากต้นทาง ให้ลงชื่อสมัครใช้และใส่องค์ประกอบเมตาที่มีโทเค็นช่วงทดลองใช้จากต้นทางในส่วนหัว HTML หรือ HTTP ดูข้อมูลเพิ่มเติมได้ที่โพสต์เริ่มต้นใช้งานการทดลองใช้จากต้นทาง
โค้ดตัวอย่าง
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
ลองใช้ตัวอย่างการทดลอง การอัปโหลดวิดีโอด้วย WebCodecs เพื่อทดลองใช้ฟีเจอร์นี้
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่กล่าวถึงในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 149-150
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
- นำแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter ออก
- ข้อมูลอัปเดต Dawn
Chrome 139
- การรองรับพื้นผิว 3 มิติสำหรับรูปแบบที่บีบอัด BC และ ASTC
- ฟีเจอร์ใหม่ "core-features-and-limits"
- ช่วงทดลองใช้จากต้นทางสำหรับโหมดความเข้ากันได้ของ WebGPU
- ข้อมูลอัปเดต Dawn
Chrome 138
- ตัวย่อสำหรับการใช้บัฟเฟอร์เป็นทรัพยากรการผูก
- การเปลี่ยนแปลงข้อกำหนดด้านขนาดสำหรับบัฟเฟอร์ที่แมปเมื่อสร้าง
- รายงานสถาปัตยกรรมสำหรับ GPU ล่าสุด
- เลิกใช้งานแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter
- ข้อมูลอัปเดต Dawn
Chrome 137
- ใช้มุมมองพื้นผิวสำหรับการผูก externalTexture
- บัฟเฟอร์คัดลอกโดยไม่ต้องระบุออฟเซ็ตและขนาด
- workgroupUniformLoad ของ WGSL โดยใช้ตัวชี้ไปยังอะตอม
- แอตทริบิวต์ powerPreference ของ GPUAdapterInfo
- นำแอตทริบิวต์ compatibilityMode ของ GPURequestAdapterOptions ออก
- ข้อมูลอัปเดต Dawn
Chrome 136
- แอตทริบิวต์ isFallbackAdapter ของ GPUAdapterInfo
- การปรับปรุงเวลาในการคอมไพล์เชเดอร์ใน D3D12
- บันทึกและคัดลอกรูปภาพ Canvas
- ข้อจำกัดของโหมดความเข้ากันได้ของ Lift
- ข้อมูลอัปเดต Dawn
Chrome 135
- อนุญาตให้สร้างเลย์เอาต์ไปป์ไลน์ด้วยเลย์เอาต์กลุ่มการผูกเป็น Null
- อนุญาตให้วิวพอร์ตขยายเกินขอบเขตเป้าหมายการแสดงผล
- เข้าถึงโหมดความเข้ากันได้รุ่นทดลองใน 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
- GPUCanvasContext getConfiguration()
- ดั้งเดิมที่เป็นจุดและเส้นต้องไม่มีการเบี่ยงเบนความลึก
- ฟังก์ชันบิวท์อินของการสแกนแบบรวมสำหรับกลุ่มย่อย
- การรองรับการวาดหลายรายการแบบอ้อมรุ่นทดลอง
- ตัวเลือกการคอมไพล์โมดูลเชเดอร์แบบเข้มงวด
- นำ requestAdapterInfo() ของ GPUAdapter ออก
- ข้อมูลอัปเดต Dawn
Chrome 130
- การผสานแหล่งที่มาคู่
- การปรับปรุงเวลาในการคอมไพล์เชเดอร์ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดต Dawn
Chrome 129
Chrome 128
- การทดลองใช้กลุ่มย่อย
- เลิกใช้งานการตั้งค่าการเบี่ยงเบนความลึกสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดที่ไม่ได้ดักจับของเครื่องมือสำหรับนักพัฒนาเว็บหาก preventDefault
- การสุ่มตัวอย่างการประมาณค่าของ WGSL ก่อนและอย่างใดอย่างหนึ่ง
- ข้อมูลอัปเดต Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android รุ่นทดลอง
- แอตทริบิวต์ info ของ GPUAdapter
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของตัวเข้ารหัสคำสั่งที่ปรับปรุงแล้ว
- ข้อมูลอัปเดต Dawn
Chrome 126
- เพิ่มขีดจำกัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาในการคอมไพล์เชเดอร์
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดต 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 สำหรับการคอมไพล์เชเดอร์ใน Windows
- การค้นหาการประทับเวลาใน Compute Pass และ Render Pass
- จุดแรกเข้าเริ่มต้นสำหรับโมดูลตัวปรับแสงเงา
- รองรับ 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
- ยกเลิกการตั้งค่าบัฟเฟอร์จุดยอด
- ยกเลิกการตั้งค่ากลุ่มการผูก
- ซ่อนข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- ข้อมูลอัปเดตการสร้างโมดูลเชเดอร์ 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