เผยแพร่: 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) ที่ซับซ้อน การใช้คำสั่งทิ้งจึงใช้ความหมายที่แพลตฟอร์มระบุไว้เพื่อลดระดับเป็นการเรียกใช้ตัวช่วย (หากมี) ซึ่งจะช่วยปรับปรุงประสิทธิภาพของ Shader ที่ใช้การทิ้ง ดูปัญหา 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 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
- การเลิกใช้งาน 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