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

ส่วนขยาย WGSL texture_and_sampler_let

ส่วนขยายภาษา WGSL texture_and_sampler_let ช่วยให้คุณกำหนดตัวแปรเท็กซ์เจอร์หรือตัวอย่างให้กับ let ภายใน Shader ของ 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 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