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

François Beaufort
François Beaufort

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

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

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

WebGPU สอดคล้องกับ API กราฟิกสมัยใหม่ (Vulkan, Metal และ D3D12) เป็นอย่างดี แต่อุปกรณ์บางรุ่นไม่รองรับ API ดังกล่าว ซึ่งจะจำกัดความสามารถเข้าถึงได้ง่ายของ WebGPU โดยเฉพาะบนแพลตฟอร์มอย่าง Windows (31% ของผู้ใช้ Chrome ไม่มี 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 หากรองรับ ดูตัวอย่างและปัญหา 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 },
});

ข้อมูลอัปเดตรุ่งเช้า

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

การปรับปรุงการเชื่อมโยง Dawn สำหรับ Node.js เมื่อเร็วๆ นี้มีดังนี้

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

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

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

รายการทั้งหมดที่กล่าวถึงในซีรีส์ What's New in WebGPU

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