มีอะไรใหม่ใน 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 เมื่อรองรับ ดูตัวอย่างต่อไปนี้และปัญหารุ่งอรุณ: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 vertext attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

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

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

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

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

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

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

รายการของทุกอย่างที่มีการพูดถึงในซีรีส์มีอะไรใหม่ใน WebGPU

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