เพิ่มขีดจำกัด maxTextureArrayrray
ค่าสูงสุดที่อนุญาตสำหรับความลึกหรือจำนวนเลเยอร์ของพื้นผิว 2 มิติคือ 256 โดยค่าเริ่มต้น ตอนนี้คุณสามารถส่งคำขอถึง 2048 ได้โดยใช้ขีดจำกัด maxTextureArrayLayers หากรองรับ ดูตัวอย่างและปัญหา 42241514 ต่อไปนี้
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 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 texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
ตอนนี้มีเส้นทางที่รวดเร็วแล้วเมื่อเรียกใช้เมธอด writeBuffer() ของ GPUQueue สำหรับแบ็กเอนด์ Vulkan ตอนนี้อาจมีการเขียนข้อมูลลงในบัฟเฟอร์ปลายทางโดยตรง จึงไม่จำเป็นต้องทำสำเนาและซิงค์ข้อมูลเพิ่มเติม การเพิ่มประสิทธิภาพนี้จะลดปริมาณหน่วยความจำที่ต้องใช้ในการอัปโหลดข้อมูลไปยัง GPU
การเพิ่มประสิทธิภาพเส้นทางที่รวดเร็วต้องมีหน่วยความจำของบัฟเฟอร์เป็นโฮสต์ที่มองเห็นได้และไม่มีการดำเนินการ GPU ที่รอดำเนินการอยู่ ดูปัญหา 42242084
การปรับปรุงเวลาคอมไพล์ Shader
ทีม Chrome กำลังเพิ่มประสิทธิภาพของ Tint ซึ่งเป็นคอมไพเลอร์ของภาษาเครื่องมือเงา WebGPU ปัจจุบันการแต้มสีแก้ไขโครงสร้างไวยากรณ์นามธรรม (AST) ของโค้ดตัวปรับแสงสีหลายครั้งก่อนสร้างโค้ดเครื่อง ซึ่งเป็นกระบวนการที่ใช้ทรัพยากรจำนวนมากในบางแพลตฟอร์ม เพื่อเพิ่มประสิทธิภาพการทำงานนี้ เราจึงจะเปิดตัวการนำเสนอระดับกลาง (IR) ใหม่ พร้อมกับแบ็กเอนด์ที่ออกแบบใหม่ซึ่งใช้ฟีเจอร์ดังกล่าว การเปลี่ยนแปลงนี้มีจุดมุ่งหมายเพื่อเร่งการคอมไพล์ตัวปรับแสงเงา
การปรับปรุงเหล่านี้ซึ่งเข้าถึงได้แล้วใน Android กำลังขยายการให้บริการไปยังอุปกรณ์ ChromeOS ที่รองรับ WebGPU พร้อมแบ็กเอนด์ Vulkan ดูปัญหา 42250751
บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
GPUCommandBuffer แต่ละรายการที่ส่งไปยัง GPUQueue ด้วยเมธอด submit()
ต้องไม่ซ้ำกัน มิเช่นนั้นระบบจะสร้างข้อผิดพลาดในการตรวจสอบ นี่เป็นข้อบกพร่องด้านข้อมูลจำเพาะ ดูปัญหา 42241492
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
ข้อมูลอัปเดตรุ่งเช้า
ขณะนี้ Wrapper ของ C++ webgpu_cpp.h เป็นแบบส่วนหัวเท่านั้น ช่วยให้ใช้งานง่ายขึ้นและช่วยให้ผสานรวมกับ Wrapper C++ อื่นๆ ได้ง่ายขึ้น ดูปัญหา 40195122
C API webgpu.h จะไม่แสดงแนวคิดของออบเจ็กต์ Swapchain อีกต่อไป การเปลี่ยนแปลงนี้มีขึ้นเพื่อให้สอดคล้องกับ JavaScript API มากขึ้น ตอนนี้การกำหนดค่าภายในดำเนินการผ่านเมธอด Configure()
ของออบเจ็กต์ wgpu::Surface
ใหม่ ซึ่งอาจมีการแก้ไขในอนาคต ดูตัวอย่างในเอกสารสร้างแอปด้วย WebGPU ดูปัญหา 42241264
ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน 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
- ข้อมูลอัปเดตเมื่อรุ่งเช้า