เผยแพร่เมื่อวันที่ 24 กันยายน 2025
การปรับสี IR เสร็จสมบูรณ์แล้ว
เราได้ดำเนินการโปรเจ็กต์ระยะยาว (กว่า 2.5 ปี) เพื่อเพิ่มประสิทธิภาพการทำงานภายในของ Tint ซึ่งเป็นคอมไพเลอร์ WGSL เสร็จสมบูรณ์แล้ว โดยได้แทรกการแสดงระดับกลาง (IR) ลงในแบ็กเอนด์ระหว่าง Abstract Syntax Tree (AST) ปัจจุบันกับตัวสร้างโค้ดแบ็กเอนด์ การเปิดตัว IR ช่วยให้ทีม Chrome นำการแปลง AST ทั้งหมดออกและสร้างใหม่เป็นการแปลง IR ซึ่งเร็วกว่ามากเนื่องจากความแตกต่างทางสถาปัตยกรรม การทำงานภายในของ Tint ในบางแพลตฟอร์มเร็วขึ้นถึง 7 เท่าจากการเปลี่ยนแปลงเหล่านี้
IR ใหม่นี้ปลดล็อกศักยภาพที่สำคัญสำหรับการวิเคราะห์และการแปลง Shader ที่ซับซ้อนและขนาดใหญ่ ซึ่งไม่เพียงแต่ให้ประสิทธิภาพที่เพิ่มขึ้นอย่างเห็นได้ชัด แต่ยังช่วยให้ Chrome สามารถนำเสนอฟีเจอร์ใหม่ๆ ที่น่าตื่นเต้นของ WebGPU ได้ง่ายขึ้นในอนาคต
จากเหตุการณ์สำคัญนี้ ตัวสร้างโค้ดแบ็กเอนด์ทั้งหมดจะทำงานจากการแสดง IR, การแปลง AST ทั้งหมดถูกลบออก และโค้ดการสนับสนุน AST ทั้งหมดเพื่อเรียกใช้การแปลงถูกนำออกแล้ว
การปรับปรุง IR นี้ยังรวมถึงการแปลง SPIR-V Frontend (แอปพลิเคชันใช้เพื่อแปลง SPIR-V เป็น WGSL) จากการสร้างการแสดง AST เป็นการสร้าง IR โดยตรง การปรับปรุงนี้ยังนำเสนอฟีเจอร์ที่รอคอยมานาน เช่น การรองรับ Float 16 ใน SPIR-V Frontend
การวิเคราะห์ช่วงจำนวนเต็มในคอมไพเลอร์ WGSL
ทีม Chrome กำลังทยอยเปิดตัวการวิเคราะห์ช่วงจำนวนเต็มใหม่สำหรับ Tint ซึ่งเป็นคอมไพเลอร์ภาษา Shader ของ WebGPU การวิเคราะห์ช่วงจำนวนเต็มจะประมาณค่าต่ำสุดและค่าสูงสุดที่ตัวแปรจำนวนเต็มสามารถใช้ได้ระหว่างการดำเนินการโปรแกรมโดยไม่ต้องเรียกใช้โปรแกรมจริง
ฟีเจอร์นี้มีเป้าหมายเพื่อปรับปรุงประสิทธิภาพโดยลดความจำเป็นในการตรวจสอบขอบเขตที่มีค่าใช้จ่ายสูง และจะเปิดใช้โดยค่าเริ่มต้นในทุกแพลตฟอร์มในเร็วๆ นี้ ดู ปัญหา 348701956
การอัปเดต SPIR-V 1.4 สำหรับแบ็กเอนด์ Vulkan
การรองรับ SPIR-V 1.4 จะเปิดตัวในอุปกรณ์ Android และ ChromeOS ที่พร้อมใช้งาน การอัปเดตนี้ช่วยให้ Tint ซึ่งเป็นคอมไพเลอร์ WGSL สามารถใช้ประโยชน์จากฟีเจอร์ใหม่ การผ่อนปรน และคำสั่งใหม่ของ SPIR-V เพื่อสร้างโค้ดที่มีประสิทธิภาพมากขึ้นในบางสถานการณ์เมื่อคอมไพล์ Shader ของ Vulkan ดูปัญหา 427717267
ข้อมูลอัปเดตเกี่ยวกับ Dawn
ตอนนี้ส่วนหัว webgpu.h ที่ได้มาตรฐาน ซึ่งกำหนด API หลักของ WebGPU C ถือว่าเสถียรแล้ว ความเสถียรนี้ใช้ได้กับ API หลักที่กำหนดไว้ต้นทางโดยเฉพาะ ไม่รวมส่วนขยายการติดตั้งใช้งาน (เช่น จาก Dawn หรือ Emdawnwebgpu) ดังนั้นจึงควรใช้ webgpu.h ที่การติดตั้งใช้งานที่คุณลิงก์ด้วยนั้นมีให้ แม้ว่าส่วนหัวจะเสถียรแล้ว แต่คุณอาจยังพบความแตกต่างที่ไม่ตั้งใจระหว่างการติดตั้งใช้งานต่างๆ เนื่องจากเรายังคงแก้ไขข้อบกพร่องและจัดการความเข้ากันได้ในระบบนิเวศ หากพบปัญหา ให้ยื่นรายงานข้อบกพร่อง
ขอขอบคุณผู้มีส่วนร่วมภายนอก William Candillon ตอนนี้คุณสามารถค้นหาไบนารี Dawn ที่สร้างไว้ล่วงหน้าเป็นอาร์ติแฟกต์ใน GitHub Actions ได้แล้ว ซึ่งรวมถึงไฟล์ .lib แบบคงที่สำหรับ Android, ชุด .XCFramework สำหรับ Apple และไฟล์ส่วนหัวที่จำเป็นทั้งหมด ดู Dawn PR #39 และ ตัวอย่างอาร์ติแฟกต์
นี่เป็นเพียงไฮไลต์ที่สำคัญบางส่วน ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่กล่าวถึงในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 149-150
Chrome 147-148
Chrome 146
- รองรับโหมดความเข้ากันได้ของ WebGPU ใน OpenGL ES 3.1
- สิ่งที่แนบชั่วคราว
- ส่วนขยาย texture_and_sampler_let ของ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 145
- ส่วนขยาย subgroup_uniformity ของ WGSL
- การแมปบัฟเฟอร์แบบซิงโครนัสรุ่นทดลองใน Worker
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 144
- ส่วนขยาย subgroup_id ของ WGSL
- ส่วนขยาย uniform_buffer_standard_layout ของ WGSL
- WebGPU ใน Linux
- writeBuffer และ writeTexture เร็วขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 143
- การสลับคอมโพเนนต์พื้นผิว
- นำการใช้งานพื้นที่เก็บข้อมูลพื้นผิวแบบอ่านอย่างเดียว bgra8unorm ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 142
Chrome 141
- การปรับสี IR เสร็จสมบูรณ์แล้ว
- การวิเคราะห์ช่วงจำนวนเต็มในคอมไพเลอร์ WGSL
- การอัปเดต SPIR-V 1.4 สำหรับแบ็กเอนด์ Vulkan
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 140
- คำขออุปกรณ์ใช้ตัวปรับ
- ตัวย่อสำหรับการใช้พื้นผิวในที่ที่ใช้มุมมองพื้นผิว
- textureSampleLevel ของ WGSL รองรับพื้นผิว 1 มิติ
- เลิกใช้งานการใช้งานพื้นที่เก็บข้อมูลพื้นผิวแบบอ่านอย่างเดียว bgra8unorm
- นำแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 139
- การรองรับพื้นผิว 3 มิติสำหรับรูปแบบที่บีบอัด BC และ ASTC
- ฟีเจอร์ใหม่ "core-features-and-limits"
- ช่วงทดลองใช้จากต้นทางสำหรับโหมดความเข้ากันได้ของ WebGPU
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 138
- ตัวย่อสำหรับการใช้บัฟเฟอร์เป็นทรัพยากรการผูก
- การเปลี่ยนแปลงข้อกำหนดด้านขนาดสำหรับบัฟเฟอร์ที่แมปเมื่อสร้าง
- รายงานสถาปัตยกรรมสำหรับ GPU ล่าสุด
- เลิกใช้งานแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 137
- ใช้มุมมองพื้นผิวสำหรับการผูก externalTexture
- คัดลอกบัฟเฟอร์โดยไม่ต้องระบุออฟเซ็ตและขนาด
- workgroupUniformLoad ของ WGSL โดยใช้ตัวชี้ไปยังอะตอม
- แอตทริบิวต์ powerPreference ของ GPUAdapterInfo
- นำแอตทริบิวต์ compatibilityMode ของ GPURequestAdapterOptions ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 136
- แอตทริบิวต์ isFallbackAdapter ของ GPUAdapterInfo
- การปรับปรุงเวลาคอมไพล์ Shader ใน D3D12
- บันทึกและคัดลอกรูปภาพ Canvas
- ยกเลิกข้อจำกัดของโหมดความเข้ากันได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 135
- อนุญาตให้สร้างเลย์เอาต์ไปป์ไลน์ด้วยเลย์เอาต์กลุ่มการผูกเป็น Null
- อนุญาตให้วิวพอร์ตขยายเกินขอบเขตเป้าหมายการแสดงผล
- เข้าถึงโหมดความเข้ากันได้รุ่นทดลองใน Android ได้ง่ายขึ้น
- นำขีดจำกัด maxInterStageShaderComponents ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 134
- ปรับปรุงเวิร์กโหลดแมชชีนเลิร์นนิงด้วยกลุ่มย่อย
- นำการรองรับประเภทพื้นผิวที่กรองได้แบบ Float ออกเนื่องจากสามารถผสมได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 133
- รูปแบบจุดยอด unorm8x4-bgra และรูปแบบจุดยอด 1 คอมโพเนนต์เพิ่มเติม
- อนุญาตให้ขอขีดจำกัดที่ไม่รู้จักด้วยค่าที่ไม่ได้กำหนด
- การเปลี่ยนแปลงกฎการจัดแนวของ WGSL
- การปรับปรุงประสิทธิภาพของ WGSL ด้วยการละทิ้ง
- ใช้ displaySize ของ VideoFrame สำหรับพื้นผิวภายนอก
- จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- เปิดใช้โหมดความเข้ากันได้ด้วย featureLevel
- การล้างฟีเจอร์กลุ่มย่อยรุ่นทดลอง
- เลิกใช้งานขีดจำกัด maxInterStageShaderComponents
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 132
- การใช้งานมุมมองพื้นผิว
- การผสมพื้นผิวแบบ Float 32 บิต
- แอตทริบิวต์ adapterInfo ของ GPUDevice
- การกำหนดค่าบริบท Canvas ด้วยรูปแบบที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด JavaScript
- ข้อจำกัดของตัวกรองตัวอย่างในพื้นผิว
- การทดลองกลุ่มย่อยแบบขยาย
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- การรองรับรูปแบบพื้นผิวแบบปกติ 16 บิตรุ่นทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 131
- ระยะทางคลิปใน WGSL
- getConfiguration() ของ GPUCanvasContext
- ดั้งเดิมที่เป็นจุดและเส้นต้องไม่มีการเบี่ยงเบนความลึก
- ฟังก์ชันบิวท์อินของการสแกนแบบรวมสำหรับกลุ่มย่อย
- การรองรับการวาดหลายรายการแบบอ้อมรุ่นทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader แบบคณิตศาสตร์ที่เข้มงวด
- นำ requestAdapterInfo() ของ GPUAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมแหล่งที่มาคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
Chrome 128
- การทดลองใช้กลุ่มย่อย
- เลิกใช้งานการตั้งค่าการเบี่ยงเบนความลึกสำหรับเส้นและจุด
- ซ่อนคำเตือน DevTools เกี่ยวกับข้อผิดพลาดที่ไม่ได้แคปเจอร์หาก preventDefault
- การสุ่มตัวอย่างการประมาณค่าของ WGSL ก่อนและอย่างใดอย่างหนึ่ง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android รุ่นทดลอง
- แอตทริบิวต์ info ของ GPUAdapter
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของตัวเข้ารหัสคำสั่งที่ปรับปรุงแล้ว
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจำกัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
Chrome 124
- พื้นที่เก็บข้อมูลพื้นผิวแบบอ่านอย่างเดียวและอ่าน-เขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลตัวปรับใหม่
- การแก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 123
- การรองรับฟังก์ชันบิวท์อิน DP4a ใน WGSL
- พารามิเตอร์ตัวชี้ที่ไม่จำกัดใน WGSL
- ไวยากรณ์ที่ง่ายขึ้นสำหรับการอ้างอิงคอมโพสิตใน WGSL
- สถานะแบบอ่านอย่างเดียวแยกกันสำหรับด้านข้างของลายฉลุและความลึก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์อยู่ระหว่างการพัฒนา)
- เพิ่มขีดจำกัด maxVertexAttributes
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 121
- รองรับ WebGPU ใน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ Shader ใน Windows
- การค้นหาการประทับเวลาในการคำนวณและการแสดงผล
- จุดเริ่มต้นเริ่มต้นสำหรับโมดูล Shader
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีปหน่วยความจำ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 120
- การรองรับค่าจุดลอยตัว 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึก-ลายฉลุ
- ข้อมูลอัปเดตเกี่ยวกับตัวปรับ
- การหาปริมาณการค้นหาการประทับเวลา
- ฟีเจอร์การล้างข้อมูล
Chrome 119
- พื้นผิวแบบ Float 32 บิตที่กรองได้
- รูปแบบจุดยอด unorm10-10-10-2
- รูปแบบพื้นผิว rgb10a2uint
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture() - การรองรับพื้นที่เก็บข้อมูลพื้นผิวแบบอ่าน-เขียนและอ่านอย่างเดียวรุ่นทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์จุดยอด
- ยกเลิกการตั้งค่ากลุ่มการผูก
- ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- ข้อมูลอัปเดตเกี่ยวกับการสร้างโมดูล Shader ของ SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- การแคชไปป์ไลน์ด้วยเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายซึ่ง GPUAdapter
requestDevice()ส่งคืน - ทำให้การเล่นวิดีโอราบรื่นหากมีการเรียกใช้
importExternalTexture() - การปฏิบัติตามข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การรองรับ Direct3D 11 รุ่นทดลอง
- รับ GPU แยกโดยค่าเริ่มต้นเมื่อใช้ไฟ AC
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กำหนดค่าจะแสดง InvalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn