เผยแพร่เมื่อวันที่ 29 มกราคม 2025
รูปแบบเวิร์กเท็กซ์แบบ unorm8x4-bgra และแบบคอมโพเนนต์เดียวเพิ่มเติม
เพิ่มรูปแบบเวิร์กเท็กซ์ "unorm8x4-bgra"
และรูปแบบเวิร์กเท็กซ์คอมโพเนนต์เดียวต่อไปนี้ "uint8"
, "sint8"
, "unorm8"
, "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
และ "float16"
รูปแบบเวิร์กเท็กซ์ "unorm8x4-bgra"
ช่วยให้โหลดสีเวิร์กเท็กซ์ที่เข้ารหัส BGRA ได้ง่ายขึ้นเล็กน้อยในขณะที่ใช้เฉดสีเดิม นอกจากนี้ รูปแบบเวิร์กเท็กซ์คอมโพเนนต์เดียวยังช่วยให้คุณขอเฉพาะข้อมูลที่จําเป็นได้ เมื่อก่อนหน้านี้ต้องขอข้อมูลเป็นปริมาณที่มากกว่าอย่างน้อย 2 เท่าสําหรับประเภทข้อมูล 8 และ 16 บิต โปรดดูรายการ chromestatus และปัญหา 376924407
อนุญาตให้ขอขีดจํากัดที่ไม่รู้จักด้วยค่าที่ไม่ระบุ
ตอนนี้คุณสามารถขอขีดจำกัดที่ไม่รู้จักด้วยค่า undefined
เมื่อขออุปกรณ์ GPU เพื่อให้ WebGPU API ทำงานได้ราบรื่นยิ่งขึ้นเมื่อพัฒนาไปเรื่อยๆ ซึ่งมีประโยชน์ในโค้ดแอปพลิเคชันต่อไปนี้ เช่น adapter.limits.someLimit
อาจเป็น undefined
ได้หาก someLimit
ไม่มีอยู่แล้ว ดูข้อกำหนด PR 4781
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
});
การเปลี่ยนแปลงกฎการจัดแนว WGSL
คุณไม่สามารถระบุค่าการจัดแนวที่เล็กเกินไปสำหรับสมาชิกของโครงสร้างได้อีกต่อไป เนื่องจากตอนนี้ @align(n)
ต้องหารด้วย RequiredAlignOf
สำหรับโครงสร้างทั้งหมด การเปลี่ยนแปลงที่เป็นการหยุดให้บริการนี้ช่วยลดความซับซ้อนในการใช้ภาษา WGSL และทำให้ภาษานี้เข้ากันได้กับ Firefox และ Safari มากขึ้น คุณดูโค้ดตัวอย่างที่แสดงความแตกต่างระหว่างคอมไพเลอร์ Tint, Naga และ WebKit ได้ใน spec PR
ประสิทธิภาพ WGSL ที่เพิ่มขึ้นเมื่อมีการทิ้ง
เนื่องจากประสิทธิภาพลดลงอย่างมากเมื่อแสดงผลเอฟเฟกต์การสะท้อนแสงในฉาก (SSR) ที่ซับซ้อน การใช้คำสั่งทิ้งจึงใช้ความหมายที่แพลตฟอร์มระบุไว้เพื่อลดระดับเป็นการเรียกใช้ตัวช่วย (หากมี) ซึ่งจะช่วยปรับปรุงประสิทธิภาพของเชดเดอร์ที่ใช้การทิ้ง ดูปัญหา 372714384
ใช้ displaySize ของ VideoFrame สำหรับพื้นผิวภายนอก
คุณควรใช้มิติข้อมูล displayWidth
และ displayHeight
เป็นขนาดที่ปรากฏของ GPUExternalTexture เมื่อนําเข้า VideoFrame ตามข้อกําหนดของ WebGPU อย่างไรก็ตาม มีการใช้ขนาดที่มองเห็นอย่างไม่ถูกต้อง ซึ่งทําให้เกิดปัญหาเมื่อพยายามใช้ textureLoad()
ใน GPUExternalTexture ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว ดูปัญหา 377574981
จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
copyExternalImageToTexture()
ใช้เมธอด GPUQueue เพื่อคัดลอกเนื้อหาของรูปภาพหรือผืนผ้าใบลงในพื้นผิว ตอนนี้ระบบจัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นได้อย่างถูกต้อง ซึ่งก่อนหน้านี้ไม่ได้เป็นเช่นนั้นเมื่อแหล่งที่มาคือ ImageBitmap ที่มี imageOrientation
"from-image"
หรือรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้น ดูปัญหา 384858956
ปรับปรุงประสบการณ์การใช้งานสำหรับนักพัฒนาแอป
คุณอาจประหลาดใจเมื่อ adapter.limits
แสดงค่าสูง แต่คุณไม่ทราบว่าต้องขอขีดจำกัดที่สูงขึ้นอย่างชัดเจนเมื่อขออุปกรณ์ GPU ไม่เช่นนั้น คุณอาจใช้ขีดจํากัดเกินโดยไม่คาดคิดในภายหลัง
ข้อความแสดงข้อผิดพลาดได้รับการขยายให้มีคำแนะนำที่บอกให้คุณขอขีดจำกัดที่สูงขึ้นอย่างชัดเจนเมื่อไม่ได้ระบุขีดจำกัดใน requiredLimits
เมื่อเรียกใช้ requestDevice()
ดูปัญหา 42240683
ตัวอย่างต่อไปนี้แสดงข้อความแสดงข้อผิดพลาดที่ปรับปรุงแล้วซึ่งบันทึกไว้ในคอนโซล DevTools เมื่อสร้างบัฟเฟอร์ GPU ที่มีขนาดเกินขีดจํากัดขนาดบัฟเฟอร์สูงสุดเริ่มต้นของอุปกรณ์
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit. - While calling [Device].CreateBuffer([BufferDescriptor]).
เปิดใช้โหมดความเข้ากันได้ด้วย featureLevel
ตอนนี้คุณขออะแดปเตอร์ GPU ในโหมดความเข้ากันได้แบบทดลองได้แล้วโดยการตั้งค่าตัวเลือก featureLevel
มาตรฐานเป็น "compatibility"
สตริง "core"
(ค่าเริ่มต้น) และ "compatibility"
เป็นค่าเดียวที่อนุญาต โปรดดูตัวอย่างต่อไปนี้และ spec PR 4897
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
}
ตัวเลือก featureLevel
จะแทนที่ตัวเลือก compatibilityMode
ที่ไม่เป็นไปตามมาตรฐาน ส่วนแอตทริบิวต์ featureLevel
ที่ไม่เป็นไปตามมาตรฐานจะแทนที่แอตทริบิวต์ isCompatibilityMode
เนื่องจากยังอยู่ในขั้นทดลอง คุณจึงต้องเรียกใช้ Chrome พร้อม Flag "การรองรับ WebGPU ที่ไม่เป็นอันตราย" ที่ chrome://flags/#enable-unsafe-webgpu
ในระหว่างนี้ โปรดไปที่ webgpureport.org เพื่อลองใช้
ล้างข้อมูลฟีเจอร์กลุ่มย่อยเวอร์ชันทดลอง
ระบบจะนำฟีเจอร์กลุ่มย่อยเวอร์ชันทดลองของ "chromium-experimental-subgroups"
และ "chromium-experimental-subgroup-uniform-control-flow"
ที่เราเลิกใช้งานแล้วออก ดูปัญหา 377868468
ตอนนี้คุณใช้ฟีเจอร์เวอร์ชันทดลอง "subgroups"
เพียงอย่างเดียวได้เมื่อทดสอบกลุ่มย่อย เราได้เลิกใช้งานฟีเจอร์ทดลอง "subgroups-f16"
แล้วและจะนำฟีเจอร์ดังกล่าวออกในเร็วๆ นี้ คุณสามารถใช้ค่า f16 กับกลุ่มย่อยได้เมื่อแอปพลิเคชันขอทั้งฟีเจอร์ "shader-f16"
และ "subgroups"
ดูปัญหา 380244620
เลิกใช้งานขีดจำกัด maxInterStageShaderComponents
เราเลิกใช้งานขีดจํากัด maxInterStageShaderComponents
เนื่องจากปัจจัยหลายประการดังนี้
- การทำงานซ้ำกับ
maxInterStageShaderVariables
: ข้อจำกัดนี้มีประโยชน์คล้ายกันอยู่แล้ว ซึ่งก็คือการควบคุมปริมาณข้อมูลที่ส่งผ่านระหว่างระยะของโปรแกรมเปลี่ยนรูปแบบ - ความคลาดเคลื่อนเล็กน้อย: แม้ว่าวิธีคํานวณขีดจํากัด 2 รายการจะแตกต่างกันเล็กน้อย แต่ความคลาดเคลื่อนเหล่านี้ก็เล็กน้อยและจัดการได้อย่างมีประสิทธิภาพภายในขีดจํากัด
maxInterStageShaderVariables
- ลดความซับซ้อน: การนํา
maxInterStageShaderComponents
ออกจะช่วยปรับปรุงอินเทอร์เฟซ Shader และลดความซับซ้อนสําหรับนักพัฒนาแอป ผู้ใช้สามารถมุ่งเน้นที่maxInterStageShaderVariables
ที่มีชื่อเหมาะสมและครอบคลุมมากขึ้นแทนที่จะต้องจัดการขีดจํากัด 2 รายการแยกกันซึ่งมีความแตกต่างเล็กน้อย
โดยมีเป้าหมายที่จะนำออกทั้งหมดใน Chrome 135 ดูความตั้งใจที่จะเลิกใช้งานและปัญหา 364338810
การอัปเดต Dawn
wgpu::Device::GetAdapterInfo(adapterInfo)
ช่วยให้คุณดูข้อมูลอะแดปเตอร์จากwgpu::Device
ได้โดยตรง ดูปัญหา 376600838
เราได้เปลี่ยนชื่อโครงสร้าง WGPUProgrammableStageDescriptor
เป็น WGPUComputeState
เพื่อให้สถานะการประมวลผลสอดคล้องกับสถานะเวิร์กเทอร์เทกซ์และเศษส่วน ดูปัญหา 379059434
นําค่า enum wgpu::VertexStepMode::VertexBufferNotUsed
ออกแล้ว ตอนนี้คุณแสดงเลย์เอาต์บัฟเฟอร์เวิร์กที่ไม่มีการใช้งานได้ด้วย {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
ดูปัญหา 383147017
ข้อมูลนี้เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่ครอบคลุมในชุดมีอะไรใหม่ใน WebGPU
Chrome 134
- ปรับปรุงเวิร์กโหลดแมชชีนเลิร์นนิงด้วยกลุ่มย่อย
- นำการรองรับประเภทพื้นผิวที่กรองแบบลอยตัวออกเพื่อใช้เป็นพื้นผิวที่ผสมได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 133
- รูปแบบเวิร์กเท็กซ์แบบ unorm8x4-bgra และแบบคอมโพเนนต์เดียวเพิ่มเติม
- อนุญาตให้ขอขีดจํากัดที่ไม่รู้จักด้วยค่าที่ไม่ระบุ
- การเปลี่ยนแปลงกฎการจัดแนว WGSL
- ประสิทธิภาพ WGSL ที่เพิ่มขึ้นเมื่อมีการทิ้ง
- ใช้ displaySize ของ VideoFrame สำหรับพื้นผิวภายนอก
- จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- เปิดใช้โหมดความเข้ากันได้ด้วย featureLevel
- การล้างข้อมูลฟีเจอร์กลุ่มย่อยเวอร์ชันทดลอง
- เลิกใช้งานขีดจำกัด maxInterStageShaderComponents
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 132
- การใช้งานมุมมองพื้นผิว
- การผสมพื้นผิวแบบจำนวนลอยตัว 32 บิต
- แอตทริบิวต์ adapterInfo ของ GPUDevice
- การกําหนดค่าบริบท Canvas ด้วยรูปแบบที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด JavaScript
- การกรองข้อจำกัดของตัวสุ่มตัวอย่างในพื้นผิว
- การทดสอบกลุ่มย่อยแบบขยาย
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- การรองรับรูปแบบพื้นผิวแบบ 16 บิตที่ปรับมาตรฐานแล้วในขั้นทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 131
- ตัดระยะทางใน WGSL
- GPUCanvasContext getConfiguration()
- องค์ประกอบพื้นฐานของจุดและเส้นต้องไม่มีอคติด้านความลึก
- ฟังก์ชันการสแกนแบบรวมในตัวสำหรับกลุ่มย่อย
- การรองรับการดึงข้อมูลแบบหลายดรอว์ในขั้นทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader เป็นแบบคณิตศาสตร์ที่เข้มงวด
- นํา GPUAdapter requestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มาแบบคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน GPUAdapter requestAdapterInfo()
- ข้อมูลอัปเดตเกี่ยวกับ 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