เผยแพร่: 8 มกราคม 2025
การใช้งานมุมมองพื้นผิว
ปัจจุบันมุมมองพื้นผิวของ GPU จะรับค่าแฟล็กการใช้งานทั้งหมดจากพื้นผิวของ GPU แหล่งที่มา ซึ่งอาจเป็นปัญหาเนื่องจากรูปแบบการดูบางรูปแบบไม่รองรับการใช้งานบางอย่าง หากต้องการแก้ไขปัญหานี้ การเรียกใช้ createView()
โดยมีสมาชิก usage
ที่ไม่บังคับจะช่วยให้คุณระบุชุดย่อยของแฟล็กการใช้งานของเท็กซ์เจอร์ต้นฉบับที่เข้ากันได้กับรูปแบบมุมมองที่เลือกได้อย่างชัดเจน
การเปลี่ยนแปลงนี้ช่วยให้สามารถตรวจสอบล่วงหน้าและควบคุมวิธีใช้มุมมองได้อย่างละเอียดยิ่งขึ้น นอกจากนี้ ยังสอดคล้องกับ API กราฟิกอื่นๆ ซึ่งแฟล็กการใช้งานเป็นพารามิเตอร์ทั่วไปในการสร้างมุมมอง ซึ่งจะช่วยให้มีโอกาสในการเพิ่มประสิทธิภาพ
ดูข้อมูลโค้ดต่อไปนี้ รายการใน Chrome Status และปัญหา 363903526
const texture = myDevice.createTexture({
size: [4, 4],
format: "rgba8unorm",
usage:
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.STORAGE_BINDING,
viewFormats: ["rgba8unorm-srgb"],
});
const view = texture.createView({
format: 'rgba8unorm-srgb',
usage: GPUTextureUsage.RENDER_ATTACHMENT, // Restrict allowed usage.
});
การผสมพื้นผิวแบบจำนวนลอยตัว 32 บิต
เท็กซ์เจอร์แบบจุดลอย 32 บิตมีความสำคัญต่อการแสดงผล HDR เพื่อรักษาค่าสีที่หลากหลายและป้องกันอาร์ติแฟกต์แถบสีเพี้ยน เช่น ในการแสดงภาพทางวิทยาศาสตร์
ฟีเจอร์ GPU "float32-blendable"
ใหม่ช่วยให้สามารถผสานพื้นผิว GPU ที่มีรูปแบบ "r32float"
, "rg32float"
และ "rgba32float"
ได้ ตอนนี้คุณสามารถสร้างไปป์ไลน์การแสดงผลที่ใช้การผสมกับไฟล์แนบรูปแบบ float32 ได้เมื่อขออุปกรณ์ GPU ที่มีฟีเจอร์นี้
ดูข้อมูลโค้ดต่อไปนี้ รายการใน Chrome Status และปัญหา 369649348
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
// Explicitly request 32-bit float textures blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-blendable"],
});
// ... Creation of shader modules is omitted for readability.
// Create a render pipeline that uses blending for the rgba32float format.
device.createRenderPipeline({
vertex: { module: myVertexShaderModule },
fragment: {
module: myFragmentShaderModule,
targets: [
{
format: "rgba32float",
blend: { color: {}, alpha: {} },
},
],
},
layout: "auto",
});
// Create the GPU texture with rgba32float format and
// send the appropriate commands to the GPU...
แอตทริบิวต์ GPUDevice adapterInfo
ไลบรารีที่รับออบเจ็กต์ GPUDevice
ที่ผู้ใช้ระบุจะต้องเข้าถึงข้อมูลเกี่ยวกับ GPU จริง เนื่องจากอาจต้องเพิ่มประสิทธิภาพหรือใช้โซลูชันชั่วคราวตามสถาปัตยกรรม GPU แม้ว่าจะเข้าถึงข้อมูลนี้ผ่านออบเจ็กต์ GPUAdapter
ได้ แต่ก็ไม่มีวิธีโดยตรงที่จะรับข้อมูลจาก GPUDevice
เพียงอย่างเดียว ซึ่งอาจไม่สะดวกเนื่องจากอาจกำหนดให้ผู้ใช้ต้องให้ข้อมูลเพิ่มเติมพร้อมกับGPUDevice
GPUAdapterInfo
จึงแสดงผ่านแอตทริบิวต์ GPUDevice
adapterInfo
เพื่อแก้ไขปัญหานี้ ซึ่งคล้ายกับแอตทริบิวต์ GPUAdapter
info
ที่มีอยู่
ดูข้อมูลโค้ดต่อไปนี้ รายการใน Chrome Status และปัญหา 376600838
function optimizeForGpuDevice(device) {
if (device.adapterInfo.vendor === "amd") {
// Use AMD-specific optimizations.
} else if (device.adapterInfo.architecture.includes("turing")) {
// Optimize for NVIDIA Turing architecture.
}
}
การกำหนดค่าบริบท Canvas ด้วยรูปแบบที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด JavaScript
ก่อนหน้านี้ การใช้รูปแบบเท็กซ์เจอร์ที่ไม่ถูกต้องกับเมธอด configure()
ของบริบท Canvas ของ GPU จะทำให้เกิดข้อผิดพลาดในการตรวจสอบ GPU โดยได้เปลี่ยนให้แสดง JavaScript TypeError
แทน ซึ่งจะป้องกันสถานการณ์ที่ getCurrentTexture()
แสดงผลเท็กซ์เจอร์ GPU ที่ถูกต้องแม้ว่าบริบท Canvas ของ GPU จะได้รับการกำหนดค่าอย่างไม่ถูกต้องก็ตาม ดูข้อมูลเพิ่มเติมได้ในปัญหา 372837859
การกรองข้อจำกัดของตัวอย่างในพื้นผิว
ก่อนหน้านี้เราอนุญาตให้ใช้ "sint"
, "uint"
และ "depth"
รูปแบบพื้นผิวที่มีตัวอย่างการกรอง ตอนนี้จะไม่อนุญาตให้ใช้เท็กซ์เจอร์รูปแบบ "sint"
หรือ "uint"
กับตัวอย่างการกรองอย่างถูกต้อง โปรดทราบว่าปัจจุบันระบบจะแสดงคำเตือนหากคุณใช้depth"
เท็กซ์เจอร์ที่มีตัวอย่างการกรอง เนื่องจากจะไม่อนุญาตให้ใช้ในอนาคต ดูปัญหา 376497143
ข้อจำกัดดังกล่าวหมายความว่าการใช้เท็กซ์เจอร์ความลึกกับตัวอย่างที่ไม่กรองจะต้องสร้างเลย์เอาต์กลุ่มการเชื่อมด้วยตนเอง เนื่องจากเลย์เอาต์กลุ่มที่เชื่อมโยงที่สร้างขึ้นโดย "อัตโนมัติ" ยังไม่รองรับชุดค่าผสมนี้ ปัญหาเกี่ยวกับข้อกำหนด 4952 มีข้อเสนอที่อยู่ระหว่างการพิจารณาเพื่อแก้ไขข้อจำกัดนี้ในอนาคต
การทดสอบกลุ่มย่อยแบบขยาย
การทดลองใช้กลุ่มย่อยซึ่งเดิมกำหนดให้สิ้นสุดใน Chrome 131 ได้ขยายเวลาไปจนถึง Chrome 133 โดยจะสิ้นสุดในวันที่ 16 เมษายน 2025 แม้ว่าการทดลองใช้แหล่งที่มาครั้งแรกจะมุ่งเน้นที่ประสิทธิภาพ แต่ก็ขาดการป้องกันการย้ายข้อมูลที่สำคัญ ตอนนี้ระบบจะเพิ่มการป้องกันเหล่านี้ ซึ่งอาจทำให้เกิดข้อผิดพลาดในโค้ดที่มีอยู่
ปรับปรุงประสบการณ์ของนักพัฒนาแอป
ตอนนี้คำเตือนจะปรากฏในเครื่องมือสำหรับนักพัฒนาเว็บเมื่อใช้ตัวเลือก powerPreference
กับ requestAdapter()
ใน Windows ระบบจะนำคำเตือนนี้ออกเมื่อ Chrome ทราบวิธีใช้ GPU 2 ตัวที่แตกต่างกันและรวมผลลัพธ์ระหว่าง GPU ทั้ง 2 ตัว ดูปัญหา 369219127
ตอนนี้ขนาดของบัฟเฟอร์ GPU จะแสดงในข้อความแสดงข้อผิดพลาดเมื่อสร้างบัฟเฟอร์ GPU ที่มีขนาดใหญ่เกินไป ดูปัญหา 374167798
รองรับรูปแบบพื้นผิวที่ปรับให้เป็นมาตรฐาน 16 บิตในเวอร์ชันทดลอง
ตอนนี้รูปแบบพื้นผิวที่ลงนามแบบ 16 บิตที่ได้รับการทำให้เป็นปกติและไม่ได้ลงนามที่ได้รับการทำให้เป็นปกติพร้อมใช้งานแล้วในเวอร์ชันทดลองตามลำดับภายใต้ฟีเจอร์ GPU "chromium-experimental-snorm16-texture-formats"
และ "chromium-experimental-unorm16-texture-formats"
ขณะที่มีการพูดคุยเรื่องการกำหนดมาตรฐาน
ฟีเจอร์เหล่านี้รองรับรูปแบบพื้นผิวที่ปรับให้เป็นมาตรฐาน 16 บิตที่มีการใช้งาน COPY_SRC
, COPY_DST
, TEXTURE_BINDING
, RENDER_ATTACHMENT
, การสุ่มหลายครั้ง และความสามารถในการแก้ไข รูปแบบเพิ่มเติม ได้แก่ "r16unorm"
, "rg16unorm"
, "rgba16unorm"
, "r16snorm"
, "rg16snorm"
และ "rgba16snorm"
จนกว่าฟีเจอร์ทดลองเหล่านี้จะได้รับการกำหนดมาตรฐาน ให้เปิดใช้ Flag "การรองรับ WebGPU ที่ไม่ปลอดภัย" ที่ chrome://flags/#enable-unsafe-webgpu
เพื่อให้ฟีเจอร์พร้อมใช้งานใน Chrome
ดูข้อมูลโค้ดต่อไปนี้และปัญหา 374790898
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-snorm16-texture-formats")) {
throw new Error("16-bit signed normalized formats support is not available");
}
// Explicitly request 16-bit signed normalized formats support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-snorm16-texture-formats"],
});
// Create a texture with the rgba16snorm format which consists of four
// components, each of which is a 16-bit, normalized, signed integer value.
const texture = device.createTexture({
size: [4, 4],
format: "rgba16snorm",
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});
// Send the appropriate commands to the GPU...
ข้อมูลอัปเดตเกี่ยวกับ Dawn
เราเลิกใช้เมธอด EnumerateFeatures(FeatureName * features)
จาก wgpu::Adapter
และ wgpu::Device
แล้วเพื่อใช้ GetFeatures(SupportedFeatures * features)
แทน ดูปัญหา 368672123
C API ของ webgpu.h ได้เปลี่ยน char const *
ทั้งหมดเป็นโครงสร้าง WGPUStringView
ที่กำหนดมุมมองเป็นสตริงที่เข้ารหัส UTF-8 โดยจะทำหน้าที่เหมือนตัวชี้ไปยังข้อมูลของสตริง พร้อมกับความยาว ซึ่งช่วยให้คุณทำงานกับส่วนต่างๆ ของสตริงได้โดยไม่ต้องคัดลอก ดูปัญหา 42241188
ซึ่งเป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน 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