เพิ่มขีดจำกัด maxTextureArrayLayers
ค่าสูงสุดที่อนุญาตสำหรับความลึกหรือจำนวนเลเยอร์ของพื้นผิว 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
การปรับปรุงเวลาคอมไพล์การให้แสงเงา
ทีม Chrome กำลังเพิ่มประสิทธิภาพของ Tint ซึ่งเป็นคอมไพเลอร์ของภาษาตัวปรับแสงเงา WebGPU ปัจจุบัน Tint แก้ไข abstract javascript Tree (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.
ข้อมูลอัปเดตเกี่ยวกับ Dawn
ขณะนี้ Wrapper ของ C++ webgpu_cpp.h เป็นแบบส่วนหัวเท่านั้น ช่วยให้ใช้งานได้ง่ายขึ้นและผสานรวมกับ Wrapper C++ อื่นๆ ได้ง่ายขึ้น ดูปัญหา 40195122
webgpu.h C API จะไม่แสดงแนวคิดของออบเจ็กต์ Swapchain อีกต่อไป การเปลี่ยนแปลงนี้จะมีความสอดคล้องอย่างมากกับ JavaScript API ขณะนี้การกำหนดค่าภายในจะดำเนินการผ่านเมธอด Configure()
ของออบเจ็กต์ wgpu::Surface
ใหม่ ซึ่งอาจมีการแก้ไขในอนาคต ดูตัวอย่างในเอกสารสร้างแอปด้วย WebGPU ดูปัญหา 42241264
ดูรายการสัญญาผูกมัดอย่างละเอียด
มีอะไรใหม่ใน WebGPU
รายการของทุกอย่างที่มีการพูดถึงในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 126
- เพิ่มขีดจำกัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ 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 บิตที่กรองได้
- รูปแบบ Verm10-10-10-2
- รูปแบบพื้นผิวของ rgb10a2uint
- ข้อมูลอัปเดตยามเช้า
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- การสนับสนุนแบบทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตยามเช้า
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์เวอร์เท็กซ์
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- การแคชไปป์ไลน์ด้วยเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตยามเช้า
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายได้รับคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้ลื่นไหลแม้เรียกใช้
importExternalTexture()
- ความสอดคล้องของข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- ข้อมูลอัปเดตยามเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การสนับสนุนแบบทดลองสำหรับ Direct3D 11
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้ไฟ AC
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- ข้อมูลอัปเดตยามเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กำหนดค่าแสดงข้อผิดพลาด invalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตยามเช้า