เผยแพร่: 29 มกราคม 2025
รูปแบบจุดยอดแบบ 1 องค์ประกอบและ unorm8x4-bgra เพิ่มเติม
เราได้เพิ่ม"unorm8x4-bgra"
รูปแบบจุดยอดและรูปแบบจุดยอดแบบ 1 องค์ประกอบต่อไปนี้ "uint8"
, "sint8"
, "unorm8"
, "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
และ "float16"
รูปแบบจุดยอด "unorm8x4-bgra"
ช่วยให้โหลดสีจุดยอดที่เข้ารหัส BGRA ได้สะดวกขึ้นเล็กน้อยในขณะที่ยังคงใช้ Shader เดียวกัน นอกจากนี้ รูปแบบจุดยอดแบบ 1 องค์ประกอบยังช่วยให้คุณขอเฉพาะข้อมูลที่จำเป็นได้ ในขณะที่ก่อนหน้านี้ต้องขอข้อมูลอย่างน้อย 2 เท่าสำหรับประเภทข้อมูล 8 และ 16 บิต ดูรายการใน chromestatus และปัญหา 376924407
อนุญาตให้ขอขีดจำกัดที่ไม่รู้จักด้วยค่าที่ไม่ได้กำหนด
ตอนนี้คุณขอขีดจำกัดที่ไม่รู้จักด้วยค่า undefined
ได้แล้วเมื่อขออุปกรณ์ GPU เพื่อให้ WebGPU API มีความยืดหยุ่นมากขึ้นเมื่อมีการพัฒนา ซึ่งจะมีประโยชน์ในโค้ดแอปพลิเคชันต่อไปนี้ เช่น adapter.limits.someLimit
สามารถเป็น undefined
ได้หาก someLimit
ไม่มีอยู่อีกต่อไป ดูคำขอแก้ไขข้อกำหนด 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 ได้ใน PR ของข้อกำหนด
การเพิ่มประสิทธิภาพ WGSL ด้วยการทิ้ง
เนื่องจากประสิทธิภาพลดลงอย่างมากเมื่อแสดงผลเอฟเฟกต์การสะท้อนในพื้นที่หน้าจอ (SSR) ที่ซับซ้อน การใช้งานคำสั่งทิ้งจึงใช้ความหมายที่แพลตฟอร์มจัดไว้ให้เพื่อลดระดับเป็นการเรียกใช้ตัวช่วยเมื่อพร้อมใช้งาน ซึ่งจะช่วยปรับปรุงประสิทธิภาพของ Shader ที่ใช้คำสั่งทิ้ง ดูปัญหา 372714384
ใช้ displaySize ของ VideoFrame สำหรับเท็กซ์เจอร์ภายนอก
ควรใช้มิติข้อมูล displayWidth
และ displayHeight
เป็นขนาดที่ปรากฏของ GPUExternalTexture เมื่อนำเข้า VideoFrame ตามข้อกำหนดของ WebGPU อย่างไรก็ตาม มีการใช้ขนาดที่มองเห็นได้อย่างไม่ถูกต้อง ซึ่งทำให้เกิดปัญหาเมื่อพยายามใช้ textureLoad()
ใน GPUExternalTexture ซึ่งตอนนี้ปัญหาได้รับการแก้ไขแล้ว ดูปัญหา 377574981
จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
copyExternalImageToTexture()
เมธอด GPUQueue ใช้เพื่อคัดลอกเนื้อหาของรูปภาพหรือ Canvas ลงในเท็กซ์เจอร์ ตอนนี้แอปจัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นได้อย่างถูกต้องแล้ว ก่อนหน้านี้จะไม่เป็นเช่นนี้เมื่อแหล่งที่มาเป็น 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"
เป็นค่าเดียวที่อนุญาต ดูตัวอย่างต่อไปนี้และคำขอแก้ไขข้อกำหนด 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 ด้วยแฟล็ก "การรองรับ 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
: ขีดจํากัดนี้มีวัตถุประสงค์คล้ายกันอยู่แล้ว นั่นคือการควบคุมปริมาณข้อมูลที่ส่งผ่านระหว่างขั้นตอนของ Shader - ความคลาดเคลื่อนเล็กน้อย: แม้ว่าการคำนวณขีดจํากัดทั้ง 2 จะแตกต่างกันเล็กน้อย แต่ความแตกต่างเหล่านี้มีเพียงเล็กน้อยและสามารถจัดการได้อย่างมีประสิทธิภาพภายในขีดจํากัด
maxInterStageShaderVariables
- การลดความซับซ้อน: การนำ
maxInterStageShaderComponents
ออกจะช่วยปรับปรุงอินเทอร์เฟซของ Shader และลดความซับซ้อนสำหรับนักพัฒนาแอป แทนที่จะจัดการโควต้า 2 รายการแยกกันซึ่งมีความแตกต่างกันเล็กน้อย ผู้ใช้จะมุ่งเน้นไปที่maxInterStageShaderVariables
ที่มีชื่อที่เหมาะสมกว่าและครอบคลุมกว่าได้
เป้าหมายคือการนำออกอย่างสมบูรณ์ใน Chrome 135 ดูความตั้งใจที่จะเลิกใช้งานและปัญหา 364338810
ข้อมูลอัปเดตเกี่ยวกับ Dawn
wgpu::Device::GetAdapterInfo(adapterInfo)
ช่วยให้คุณรับข้อมูลอะแดปเตอร์ได้โดยตรงจาก wgpu::Device
ดูปัญหา 376600838
เราได้เปลี่ยนชื่อ WGPUProgrammableStageDescriptor
struct เป็น WGPUComputeState
เพื่อให้สถานะการคำนวณสอดคล้องกับสถานะของ Vertex และ Fragment ดูปัญหา 379059434
นำค่า enum wgpu::VertexStepMode::VertexBufferNotUsed
ออกแล้ว ตอนนี้คุณสามารถแสดงเลย์เอาต์บัฟเฟอร์ Vertex ที่ไม่ได้ใช้ด้วย {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
ดูปัญหา 383147017
ซึ่งเป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่ครอบคลุมในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 140
- คำขอของอุปกรณ์จะใช้ตัวดัดแปลง
- รูปแบบย่อสำหรับการใช้พื้นผิวในที่ที่ใช้มุมมองพื้นผิว
- textureSampleLevel ของ WGSL รองรับพื้นผิว 1 มิติ
- เลิกใช้งานการใช้พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว bgra8unorm
- นำแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 139
- รองรับพื้นผิว 3 มิติสำหรับรูปแบบที่บีบอัด BC และ ASTC
- ฟีเจอร์ใหม่ "ฟีเจอร์หลักและขีดจำกัด"
- การทดลองใช้แหล่งที่มาสำหรับโหมดความเข้ากันได้ของ WebGPU
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 138
- คำย่อสำหรับการใช้บัฟเฟอร์เป็นทรัพยากรที่เชื่อมโยง
- การเปลี่ยนแปลงข้อกำหนดด้านขนาดสำหรับบัฟเฟอร์ที่แมปไว้ตอนสร้าง
- รายงานสถาปัตยกรรมสำหรับ GPU รุ่นล่าสุด
- เลิกใช้งานแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 137
- ใช้มุมมองพื้นผิวสำหรับการเชื่อมโยง ExternalTexture
- คัดลอกบัฟเฟอร์โดยไม่ต้องระบุออฟเซ็ตและขนาด
- WGSL workgroupUniformLoad โดยใช้พอยน์เตอร์ไปยังอะตอม
- แอตทริบิวต์ powerPreference ของ GPUAdapterInfo
- นำแอตทริบิวต์ compatibilityMode ของ GPURequestAdapterOptions ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 136
- แอตทริบิวต์ isFallbackAdapter ของ GPUAdapterInfo
- การปรับปรุงเวลาในการคอมไพล์ Shader ใน D3D12
- บันทึกและคัดลอกรูปภาพแคนวาส
- ข้อจำกัดของโหมดความเข้ากันได้ของ Lift
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 135
- อนุญาตให้สร้างเลย์เอาต์ของไปป์ไลน์ที่มีเลย์เอาต์ของกลุ่มการเชื่อมโยงเป็น Null
- อนุญาตให้ Viewport ขยายเกินขอบเขตของเป้าหมายการแสดงผล
- เข้าถึงโหมดความเข้ากันได้เวอร์ชันทดลองใน 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()
- Primitive ของจุดและเส้นต้องไม่มีการปรับความลึก
- ฟังก์ชันการสแกนแบบรวมสำหรับกลุ่มย่อย
- การรองรับการวาดหลายรายการแบบอ้อมในเวอร์ชันทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader แบบเข้มงวด
- นำ requestAdapterInfo() ของ GPUAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มา 2 แหล่ง
- การปรับปรุงเวลาในการคอมไพล์ Shader บน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
- รองรับ HDR ด้วยโหมดการแมปโทนสีของ Canvas
- การสนับสนุนกลุ่มย่อยที่เพิ่มขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 128
- การทดลองใช้กลุ่มย่อย
- เลิกใช้งานการตั้งค่าอคติของความลึกสำหรับเส้นและจุด
- ซ่อนคำเตือนในเครื่องมือสำหรับนักพัฒนาเว็บเกี่ยวกับข้อผิดพลาดที่ไม่ได้บันทึกหาก preventDefault
- WGSL interpolate sampling first and either
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android เวอร์ชันทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของเครื่องมือเข้ารหัสคำสั่งที่ปรับปรุงแล้ว
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจำกัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาการคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
- กลุ่มย่อย (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)
- แสดงผลไปยังชิ้นส่วนของพื้นผิว 3 มิติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 124
- เท็กซ์เจอร์พื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและแบบอ่านและเขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
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
- Unset vertex buffer
- ยกเลิกการตั้งค่ากลุ่มที่เชื่อมโยง
- ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- ข้อมูลอัปเดตเกี่ยวกับการสร้างโมดูล 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