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

François Beaufort
François Beaufort

จำนวนฟีเจอร์ WebGPU อาจดูน้อยไปหน่อยในตอนนี้ แต่เรากำลังจะมีการพัฒนาที่สำคัญในเร็วๆ นี้ เวอร์ชันถัดไปจะมีฟีเจอร์ต่างๆ เช่น DP4a, พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่าน/เขียน, การควบคุมแสตนซิลและมุมมองความลึกแยกกัน, การแสดงผลเป็นภาพ 3 มิติ และการปรับแต่งโปรแกรมรวบรวมข้อมูลชิลด์

ในระหว่างนี้ โปรดดูวิธีเร่งความเร็วการทดสอบโมเดล AI บนเว็บด้วยการสนับสนุน WebGPU และ WebGL ใน Headless Chrome และสาเหตุที่ WebGPU อาจปิดอยู่หรือไม่ทำงานใน Chrome

ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)

WebGPU ทำงานร่วมกับ API กราฟิกสมัยใหม่ (Vulkan, Metal และ D3D12) ได้เป็นอย่างดี แต่อุปกรณ์บางเครื่องไม่รองรับ API ดังกล่าว ซึ่งจะจำกัดการเข้าถึง WebGPU โดยเฉพาะในแพลตฟอร์มอย่าง Windows (ผู้ใช้ Chrome 31% ไม่มี D3D11.1 ขึ้นไป), Android (23% ไม่มี Vulkan 1.1 ขึ้นไป) และ ChromeOS (การใช้งาน Vulkan เพิ่มขึ้น)

ทีม Chrome กำลังพัฒนาโหมดความเข้ากันได้ใน WebGPU เพื่อแก้ไขปัญหานี้ด้วยการให้บริการ WebGPU เวอร์ชันที่จำกัดเล็กน้อยซึ่งทำงานกับ API เวอร์ชันเก่า เช่น D3D11 และ OpenGL ES ได้ ซึ่งจะขยายฐานผู้ใช้ที่เป็นไปได้ของ WebGPU

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

แผนภาพโหมดความเข้ากันได้ของ WebGPU
โหมดความเข้ากันได้ของ WebGPU ขยายการเข้าถึง

โปรดดูข้อเสนอและความคิดเห็นหากมีคำถาม

เพิ่มขีดจํากัด maxVertexAttributes

จำนวนแอตทริบิวต์ทั้งหมดสูงสุดในบัฟเฟอร์เมื่อสร้าง GPURenderPipeline คือ 16 โดยค่าเริ่มต้น ตอนนี้คุณขอได้สูงสุด 30 รายการโดยใช้ขีดจำกัด maxVertexAttributes หากรองรับ โปรดดูตัวอย่างต่อไปนี้และ issue dawn:2223

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

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

การอัปเดต Dawn

เราได้เพิ่มปุ่มเปิด/ปิดอินสแตนซ์ใหม่ชื่อ "expose_wgsl_experimental_features" เพื่อให้อินสแตนซ์แสดงเฉพาะฟีเจอร์ WGSL เวอร์ชันทดลองเท่านั้น โดยไม่แสดงฟีเจอร์ที่ไม่ปลอดภัย เพื่อให้ใช้ฟีเจอร์ WGSL เวอร์ชันทดลองที่ปลอดภัยได้โดยไม่ต้องเปิดใช้ปุ่มเปิด/ปิด "allow_unsafe_apis" ดูปัญหา dawn:2260

การปรับปรุงล่าสุดในการเชื่อมโยง Dawn สําหรับ Node.js มีดังนี้

  • เพิ่ม GPUSupportedFeatures::getSize() แล้ว
  • ติดตั้งใช้งานGPUAdapter Staleness แล้ว
  • ตอนนี้ GPUInternalError ได้รับการรายงานสำหรับอุปกรณ์อย่างถูกต้องแล้ว
  • ตอนนี้แอตทริบิวต์เป็นแบบนับได้

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

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

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

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