มีอะไรใหม่ใน WebGPU (Chrome 146)

François Beaufort
François Beaufort

เผยแพร่: 25 กุมภาพันธ์ 2026

รองรับโหมดความเข้ากันได้ของ WebGPU ใน OpenGL ES 3.1

แม้ว่า WebGPU จะได้รับการออกแบบมาให้สอดคล้องกับ API กราฟิกสมัยใหม่ เช่น Vulkan, Metal และ D3D12 แต่ผู้ใช้จำนวนมากมีฮาร์ดแวร์รุ่นเก่าที่ไม่รองรับมาตรฐานเหล่านี้ เพื่อลดช่องว่างนี้และรับประกันการเข้าถึงในวงกว้าง Chrome จึงเปิดตัวฟีเจอร์ใหม่ที่ต้องเลือกใช้ที่เรียกว่าโหมดความเข้ากันได้

โหมดนี้ช่วยให้คุณเรียกใช้ WebGPU ในกราฟิก API รุ่นเก่า เช่น OpenGL ES 3.1 ได้ การกำหนดเป้าหมายไปยังชุดย่อยของข้อกำหนด WebGPU ที่จำกัดเล็กน้อยจะช่วยให้มั่นใจได้ว่าทุกคนจะเข้าถึงเว็บแอปของคุณได้ ตั้งแต่แพลตฟอร์มเกมล่าสุดไปจนถึงแล็ปท็อปและอุปกรณ์เคลื่อนที่รุ่นเก่า แม้ว่าทีมจะเริ่มต้นด้วย Android แต่ก็กำลังพิจารณาการรองรับอุปกรณ์อื่นๆ เช่น ChromeOS ที่มี OpenGL ES 3.1 และ Windows ที่มี Direct3D 11

สำหรับเว็บแอปจำนวนมาก คุณสามารถเปิดใช้โหมดความเข้ากันได้โดยส่ง featureLevel: "compatibility" เมื่อเรียกใช้ requestAdapter() หากอุปกรณ์รองรับ Core WebGPU Chrome จะแสดงผลอแดปเตอร์ที่รองรับ Core แต่เว็บแอปจะทราบว่าต้องอยู่ภายในขีดจำกัดความเข้ากันได้ เว้นแต่จะเปิดใช้ฟีเจอร์ "core-features-and-limits" (หรือเปิดใช้ฟีเจอร์ที่มีอยู่ทั้งหมด) แอปพลิเคชันที่มีความซับซ้อนมากขึ้นอาจต้องมีการปรับเปลี่ยนเล็กน้อยเพื่อให้เป็นไปตามข้อจำกัดของโหมด

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

ดูข้อมูลโดยละเอียดเกี่ยวกับข้อจำกัดด้านสถาปัตยกรรมที่เฉพาะเจาะจงของโหมดนี้ได้ในคู่มือพื้นฐานของ WebGPU นอกจากนี้ ตัวอย่าง WebGPU ทั้งหมดยังรองรับโหมดความเข้ากันได้แล้วด้วย คุณยังอ่านความตั้งใจที่จะจัดส่งได้ด้วย

ไฟล์แนบชั่วคราว

คุณใช้ฟีเจอร์ใหม่ TRANSIENT_ATTACHMENT GPUTextureUsage เพื่อสร้างไฟล์แนบที่ประหยัดหน่วยความจำได้ ซึ่งจะช่วยให้การดำเนินการใน Render Pass อยู่ในหน่วยความจำของไทล์ได้ ซึ่งจะหลีกเลี่ยงการรับส่งข้อมูล VRAM และหลีกเลี่ยงการจัดสรร VRAM สำหรับเท็กซ์เจอร์ได้

การประกาศว่าเท็กซ์เจอร์เป็นแบบชั่วคราว (หรือ "ไม่มีการจัดเก็บในหน่วยความจำ") ทำให้ GPU ทราบว่าต้องการเนื้อหาของเท็กซ์เจอร์เพียงชั่วคราวเท่านั้น กล่าวคือ ภายในการส่งผ่านการแสดงผลปัจจุบันเท่านั้น นอกจากนี้ เนื่องจากระบบจะทิ้งเนื้อหาของเท็กซ์เจอร์หลังจากการส่งผ่านการแสดงผล ไดรเวอร์จึงอาจไม่จำเป็นต้องจัดสรร VRAM ให้เลย

ตัวอย่างต่อไปนี้แสดงวิธีสร้างเท็กซ์เจอร์ชั่วคราว

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

ดูตัวอย่าง Hello Triangle MSAA - WebGPU และความตั้งใจที่จะเปิดตัว

ส่วนขยาย texture_and_sampler_let ของ WGSL

ส่วนขยายภาษา WGSL texture_and_sampler_let ช่วยให้คุณกำหนดตัวแปรเท็กซ์เจอร์หรือตัวแปรแซมเพลอร์ให้กับ let ภายในเชเดอร์ WGSL ได้ ปัจจุบันฟีเจอร์นี้มีกลไกการตั้งชื่อสำรองและเตรียมพร้อมสำหรับการรองรับแบบไม่ผูกมัด ซึ่งจะจัดเก็บเมธอดที่ส่งคืนเท็กซ์เจอร์หรือแซมเพลอร์ลงในตัวแปรภายในได้โดยตรง

ดูตัวอย่างต่อไปนี้และความตั้งใจที่จะจัดส่ง

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

ข้อมูลอัปเดตเกี่ยวกับ Dawn

ระดับโควต้าใหม่ต่อไปนี้พร้อมให้ใช้งานแล้ว

การตรวจสอบ SPIR-V จะเปิดใช้โดยค่าเริ่มต้นใน Android เพื่อเพิ่มเลเยอร์ความปลอดภัยและป้องกันไม่ให้ไดรเวอร์ไม่เสถียรเนื่องจากอินพุตที่มีรูปแบบไม่ถูกต้อง ดูปัญหา 473526182

นี่เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด

มีอะไรใหม่ใน WebGPU

รายการทุกอย่างที่ครอบคลุมในซีรีส์มีอะไรใหม่ใน WebGPU

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113