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

François Beaufort
François Beaufort

การรองรับ OpenGL ES ใน Android เวอร์ชันทดลอง

ตอนนี้คุณเข้าถึง GPUAdapter จากแบ็กเอนด์ OpenGL ES ได้แล้วเมื่อขอโหมดความเข้ากันได้ของ WebGPU เวอร์ชันทดลองใน Chrome สำหรับ Android ซึ่งจะเป็นประโยชน์อย่างยิ่งสำหรับอุปกรณ์ Android ที่ไม่รองรับ Vulkan 1.1 ขึ้นไป ดูตัวอย่างต่อไปนี้และปัญหา dawn:1545

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
หน้าการรายงาน WebGPU จะแสดงข้อมูล GPUAdapter จากแบ็กเอนด์ OpenGL ES ในอุปกรณ์ Android
ข้อมูลอะแดปเตอร์ OpenGL ES ใน webgpureport.org

เนื่องจากฟีเจอร์นี้ยังอยู่ในขั้นทดลอง คุณจะต้องทำตามขั้นตอนต่อไปนี้

  1. เปิดใช้ฟีเจอร์ทดลองของ Chrome ต่อไปนี้ "การรองรับ WebGPU ที่ไม่ปลอดภัย" "ฟีเจอร์สำหรับนักพัฒนาซอฟต์แวร์ WebGPU" และ "เปิดใช้บรรทัดคำสั่งในอุปกรณ์ที่ไม่ได้รูท"
  2. เปิดใช้การแก้ไขข้อบกพร่อง USB ในอุปกรณ์ Android
  3. เชื่อมต่ออุปกรณ์ Android กับเวิร์กสเตชัน เรียกใช้ adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' เพื่อให้ใช้แบ็กเอนด์ OpenGL ES มากกว่า Vulkan แล้วรีสตาร์ท Chrome

แอตทริบิวต์ข้อมูล GPUAdapter

ตอนนี้คุณรับข้อมูลระบุตัวตนเกี่ยวกับอะแดปเตอร์ได้แบบซิงโครนัสด้วยแอตทริบิวต์ info ของ GPUAdapter ก่อนหน้านี้ การเรียกใช้เมธอด requestAdapterInfo() แบบอะซิงโครนัสของ GPUAdapter เป็นวิธีเดียวที่จะรับข้อมูลอะแดปเตอร์ได้ อย่างไรก็ตาม requestAdapterInfo() ถูกนำออกจากข้อกำหนด WebGPU แล้ว และจะถูกนำออกจาก Chrome ภายในปีนี้เพื่อให้เวลาแก่นักพัฒนาเว็บในการเปลี่ยนผ่านที่จำเป็น ดูตัวอย่างต่อไปนี้ สถานะของ Chrome และปัญหา 335383516

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

// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();

console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"

การปรับปรุงการทำงานร่วมกันของ WebAssembly

เนื่องจากมีการส่งผ่านฮีป WebAssembly ไปยัง WebGPU โดยตรง ขนาดของอาร์กิวเมนต์ BufferSource ต่อไปนี้จึงไม่จำกัดไว้ที่ 2 GB อีกต่อไป dynamicOffsetsData ใน setBindGroup(), แหล่งที่มา data ใน writeBuffer() และแหล่งที่มา data Pin writeTexture() ดูปัญหา 339049388

ปรับปรุงข้อผิดพลาดของตัวเข้ารหัสคำสั่ง

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

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
    at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)

ซึ่งจะอธิบายสาเหตุของข้อผิดพลาด แต่ไม่ได้ระบุว่าการเรียกใดที่ทำให้เกิดข้อผิดพลาดในการตรวจสอบความถูกต้อง ข้อผิดพลาดต่อไปนี้แสดงข้อความที่ได้รับการปรับปรุงซึ่งมีคำสั่งที่ทำให้เกิดข้อผิดพลาด ดูการเปลี่ยนแปลง 192245

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

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

C API webgpu.h ไม่แสดง wgpuSurfaceGetPreferredFormat() ซึ่งเป็น C ที่เทียบเท่ากับ wgpu::Surface::GetPreferredFormat() ของ Dawn อีกต่อไป แต่ให้ใช้ wgpu::Surface::GetCapabilities() เพื่อดูรายการรูปแบบที่รองรับ แล้วใช้ formats[0] เพื่อดูรูปแบบพื้นผิวที่ต้องการสำหรับพื้นผิวนี้แทน ในระหว่างนี้ การเรียกใช้ wgpu::Surface::GetPreferredFormat() จะแสดงคำเตือนการเลิกใช้งาน ดูฉบับที่ 290

ตอนนี้คุณสามารถดูการใช้งานพื้นผิวที่รองรับได้ผ่าน wgpu::SurfaceCapabilities::usages เมื่อเรียกใช้ wgpu::Surface::GetCapabilities() โดยคาดว่าจะมี wgpu::TextureUsage::RenderAttachment อยู่เสมอ ดูปัญหา 301

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

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

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

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