การทดสอบการรองรับ 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](https://developer.chrome.com/static/blog/new-in-webgpu-127/image/opengl-es-android.jpg?authuser=9&hl=th)
เนื่องจากฟีเจอร์นี้ยังอยู่ในขั้นทดลอง คุณจึงต้องทำตามขั้นตอนต่อไปนี้
- เปิดใช้แฟล็ก Chrome ต่อไปนี้ "การรองรับ WebGPU ที่ไม่ปลอดภัย" "ฟีเจอร์สำหรับนักพัฒนาซอฟต์แวร์ WebGPU" และ "เปิดใช้บรรทัดคำสั่งในอุปกรณ์ที่ไม่ได้รูท"
- เปิดใช้การแก้ไขข้อบกพร่องผ่าน USB บนอุปกรณ์ Android
- เชื่อมต่ออุปกรณ์ Android กับเวิร์กสเตชัน เรียกใช้
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
เพื่อใช้แบ็กเอนด์ OpenGL ES มากกว่า Vulkan แล้วรีสตาร์ท Chrome
แอตทริบิวต์ข้อมูล GPUAdapter
การรับข้อมูลระบุตัวตนเกี่ยวกับอะแดปเตอร์สามารถทำได้ในแบบซิงโครนัสด้วยแอตทริบิวต์ GPUAdapter info
ก่อนหน้านี้ การเรียกใช้เมธอด GPU แบบอะซิงโครนัส requestAdapterInfo()
เป็นวิธีเดียวในการรับข้อมูลอะแดปเตอร์ อย่างไรก็ตาม เราได้นำ 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
ปรับปรุงข้อผิดพลาดของโปรแกรมเปลี่ยนไฟล์คำสั่ง
ตอนนี้ข้อผิดพลาดในการตรวจสอบความถูกต้องที่เกิดจากโปรแกรมเปลี่ยนไฟล์คำสั่งจะปรับปรุงข้อมูลบริบทแล้ว ตัวอย่างเช่น การพยายามเริ่มใช้งาน Compute Pass ในขณะที่การ์ดแสดงผลยังคงเปิดอยู่จะส่งผลให้เกิดข้อผิดพลาดต่อไปนี้
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]).
ข้อมูลอัปเดตรุ่งเช้า
webgpu.h C API จะไม่แสดง 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
รายการทั้งหมดที่กล่าวถึงในซีรีส์ What's New in WebGPU
Chrome 128
- การทดสอบกับกลุ่มย่อย
- ลดการให้น้ำหนักพิเศษในการตั้งค่าสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดที่ไม่ได้บันทึกไว้สำหรับ DevTools หาก preventDefault
- การสุ่มตัวอย่างแบบสอดแทรกของ WGSL ก่อนหรือแบบใดแบบหนึ่ง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 127
- การทดสอบการรองรับ OpenGL ES บน Android
- แอตทริบิวต์ข้อมูลของ GPU
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของโปรแกรมเปลี่ยนไฟล์คำสั่งที่ปรับปรุงใหม่
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 126
- เพิ่มขีดจำกัด maxTextureArraydataLayer
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- ปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- การสนับสนุนของ Service Worker และผู้ปฏิบัติงานที่แชร์
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 123
- รองรับฟังก์ชัน DP4a ในตัวของ WGSL
- พารามิเตอร์ตัวชี้แบบไม่จำกัดใน WGSL
- น้ำตาลทางไวยากรณ์สำหรับลดการอ้างอิงองค์ประกอบใน WGSL
- แยกสถานะอ่านอย่างเดียวสำหรับลายฉลุและความลึก
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่กำลังพัฒนา)
- เพิ่มขีดจำกัด maxVertexAttributes
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 121
- รองรับ WebGPU บน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ตัวปรับแสงเงาใน Windows
- การค้นหาการประทับเวลาในการประมวลผลและแสดงผลบัตรผ่าน
- จุดแรกเข้าเริ่มต้นสำหรับโมดูลตัวปรับเฉดสี
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีปหน่วยความจำ
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 120
- การรองรับค่าทศนิยม 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึกของลายฉลุ
- การอัปเดตข้อมูลอะแดปเตอร์
- การวัดปริมาณการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดในฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบลอย 32 บิตที่กรองได้
- รูปแบบเวอร์เท็กซ์ unorm10-10-10-2
- รูปแบบพื้นผิวของrgb10a2uint
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- เวอร์ชันทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์ Vertex
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ไปป์ไลน์การแคชที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายส่งคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้อย่างราบรื่นหากมีการเรียกใช้
importExternalTexture()
- ความสอดคล้องตามข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การสนับสนุนรุ่นทดลองสำหรับ Direct3D 11
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้พลังงานจากไฟฟ้า AC
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ในผืนผ้าใบที่ไม่ได้กำหนดค่าไว้แสดงข้อผิดพลาดที่ไม่ถูกต้อง
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเมื่อรุ่งเช้า