มีอะไรใหม่ใน 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 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

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