เผยแพร่: 24 กันยายน 2025
Tint IR completed
โปรเจ็กต์ที่ดำเนินการมาอย่างยาวนาน (กว่า 2.5 ปี) เพื่อเพิ่มประสิทธิภาพของส่วนประกอบภายในของ Tint ซึ่งเป็นคอมไพเลอร์ WGSL ได้เสร็จสมบูรณ์แล้ว มีการแทรกการแสดงผลระดับกลาง (IR) ลงในแบ็กเอนด์ระหว่าง Abstract Syntax Tree (AST) ปัจจุบันกับเครื่องมือสร้างโค้ดแบ็กเอนด์ การเปิดตัว IR ทำให้ทีม Chrome สามารถนำการแปลง AST ทั้งหมดออกและสร้างใหม่เป็นการแปลง IR ซึ่งเร็วกว่ามากเนื่องจากความแตกต่างทางสถาปัตยกรรม การเปลี่ยนแปลงเหล่านี้ช่วยให้ Tint ทำงานได้เร็วขึ้นถึง 7 เท่าในบางแพลตฟอร์ม
IR ใหม่นี้จะปลดล็อกศักยภาพที่สำคัญสำหรับการวิเคราะห์และการแปลงเชดเดอร์ที่ซับซ้อนและมีขนาดใหญ่ ซึ่งไม่เพียงแต่จะช่วยเพิ่มประสิทธิภาพอย่างเห็นได้ชัด แต่ยังช่วยให้ Chrome สามารถนำเสนอฟีเจอร์ใหม่ๆ ที่น่าตื่นเต้นของ WebGPU ในอนาคตได้อย่างราบรื่นยิ่งขึ้นด้วย
จากเหตุการณ์สำคัญนี้ เครื่องมือสร้างโค้ดแบ็กเอนด์ทั้งหมดจะทำงานจากการแสดง IR, การแปลง AST ทั้งหมดจะถูกลบ และโค้ดสนับสนุน AST ทั้งหมดเพื่อเรียกใช้การแปลงจะถูกนำออก
ในการปรับปรุง IR เราได้แปลงส่วนหน้าของ SPIR-V (แอปพลิเคชันใช้เพื่อแปลง SPIR-V เป็น WGSL) จากการสร้างการแสดง AST เป็นการสร้าง IR โดยตรง การปรับปรุงนี้ยังนำฟีเจอร์ที่รอคอยมานาน เช่น การรองรับ Float 16 มายังส่วนหน้าของ SPIR-V ด้วย
การวิเคราะห์ช่วงจำนวนเต็มในคอมไพเลอร์ WGSL
ทีม Chrome กำลังทยอยเปิดตัวการวิเคราะห์ช่วงจำนวนเต็มแบบใหม่สำหรับ Tint ซึ่งเป็นคอมไพเลอร์ภาษา Shader ของ WebGPU การวิเคราะห์ช่วงจำนวนเต็มจะประมาณค่าต่ำสุดและสูงสุดที่ตัวแปรจำนวนเต็มสามารถใช้ได้ในระหว่างการดำเนินการโปรแกรมโดยไม่ต้องเรียกใช้โปรแกรมจริง
ฟีเจอร์นี้มีจุดประสงค์เพื่อปรับปรุงประสิทธิภาพโดยลดความจำเป็นในการตรวจสอบขอบเขตที่มีค่าใช้จ่ายสูง และจะเปิดใช้โดยค่าเริ่มต้นในทุกแพลตฟอร์มในเร็วๆ นี้ ดูปัญหา 348701956
อัปเดต SPIR-V 1.4 สำหรับแบ็กเอนด์ Vulkan
เราได้เปิดตัวการรองรับ SPIR-V 1.4 ในอุปกรณ์ Android และ ChromeOS ที่พร้อมใช้งาน การอัปเดตนี้ช่วยให้ Tint ซึ่งเป็นคอมไพเลอร์ WGSL ใช้ประโยชน์จากฟีเจอร์ใหม่ การผ่อนปรน และคำสั่งใหม่ของ SPIR-V เพื่อสร้างโค้ดได้อย่างมีประสิทธิภาพมากขึ้นในบางสถานการณ์เมื่อคอมไพล์เชดเดอร์ Vulkan ดูปัญหา 427717267
ข้อมูลอัปเดตเกี่ยวกับ Dawn
ตอนนี้เราถือว่าส่วนหัว webgpu.h ที่ได้มาตรฐานซึ่งกำหนด C API หลักของ WebGPU มีความเสถียรแล้ว ความเสถียรนี้ใช้กับ API หลักที่กำหนดต้นทางโดยเฉพาะ ไม่รวมส่วนขยายการใช้งาน (เช่น จาก Dawn หรือ Emdawnwebgpu) ดังนั้นจึงควรใช้ webgpu.h ที่ได้จากการใช้งานที่แน่นอนซึ่งคุณลิงก์ด้วย แม้ว่าส่วนหัวจะมีความเสถียร แต่คุณอาจยังคงพบความแตกต่างที่ไม่คาดคิดระหว่างการติดตั้งใช้งาน เนื่องจากเรายังคงแก้ไขข้อบกพร่องและจัดการความเข้ากันได้ทั่วทั้งระบบนิเวศ หากพบปัญหาดังกล่าว โปรดรายงานข้อบกพร่อง
ตอนนี้คุณสามารถดูไบนารี Dawn ที่สร้างไว้ล่วงหน้าเป็นอาร์ติแฟกต์ใน GitHub Actions ได้แล้ว ต้องขอขอบคุณผู้ร่วมให้ข้อมูลภายนอกอย่าง William Candillon ซึ่งรวมถึงไฟล์ .lib แบบคงที่สำหรับ Android, App Bundle .XCFramework สำหรับ Apple และไฟล์ส่วนหัวที่จำเป็นทั้งหมด ดู Dawn PR #39 และตัวอย่างอาร์ติแฟกต์
นี่เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่ครอบคลุมในซีรีส์มีอะไรใหม่ใน WebGPU
Chrome 155-156
- ส่วนขยาย fragment_depth ของ WGSL
- การบีบอัดพื้นผิวไม่สอดคล้องกัน
- พื้นที่สี srgb-linear และ display-p3-linear
- รูปแบบจุดยอด snorm10-10-10-2 เพิ่มเติม
- การรองรับ f16 ใน Linux สำหรับ NVIDIA
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 153-154
- ส่วนขยาย buffer_view ของ WGSL
- ส่วนขยาย WGSL swizzle_assignment
- ข้อมูลอัปเดตเกี่ยวกับส่วนขยาย WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 151-152
- การควบคุมขนาดกลุ่มย่อย
- OperationError สำหรับการตรวจสอบ setImmediates ที่ไม่สำเร็จ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
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
- ส่วนขยาย WGSL uniform_buffer_standard_layout
- WebGPU ใน Linux
- writeBuffer และ writeTexture ที่เร็วขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 143
- การสลับคอมโพเนนต์ของพื้นผิว
- นำการใช้ Texture พื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว bgra8unorm ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 142
Chrome 141
- การปรับสมดุลสีเขียว-แดงเสร็จสมบูรณ์แล้ว
- การวิเคราะห์ช่วงจำนวนเต็มในคอมไพเลอร์ WGSL
- อัปเดต SPIR-V 1.4 สำหรับแบ็กเอนด์ Vulkan
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 140
- คำขอของอุปกรณ์จะใช้ตัวปรับ
- คำย่อสำหรับการใช้พื้นผิวในที่ที่ใช้มุมมองพื้นผิว
- textureSampleLevel ของ WGSL รองรับพื้นผิว 1 มิติ
- เลิกใช้งานการใช้พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว bgra8unorm
- นำแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 139
- รองรับพื้นผิว 3 มิติสำหรับรูปแบบที่บีบอัด BC และ ASTC
- ฟีเจอร์ใหม่ "ฟีเจอร์หลักและขีดจำกัด"
- ช่วงทดลองใช้จากต้นทางสำหรับโหมดความเข้ากันได้ของ WebGPU
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 138
- คำย่อสำหรับการใช้บัฟเฟอร์เป็นทรัพยากรที่เชื่อมโยง
- การเปลี่ยนแปลงข้อกำหนดด้านขนาดสำหรับบัฟเฟอร์ที่แมปเมื่อสร้าง
- รายงานสถาปัตยกรรมสำหรับ GPU รุ่นล่าสุด
- เลิกใช้งานแอตทริบิวต์ isFallbackAdapter ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 137
- ใช้มุมมองพื้นผิวสำหรับการเชื่อมโยง ExternalTexture
- คัดลอกบัฟเฟอร์โดยไม่ต้องระบุออฟเซ็ตและขนาด
- WGSL workgroupUniformLoad โดยใช้พอยน์เตอร์ไปยังอะตอม
- แอตทริบิวต์ powerPreference ของ GPUAdapterInfo
- นำแอตทริบิวต์ compatibilityMode ของ GPURequestAdapterOptions ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 136
- แอตทริบิวต์ isFallbackAdapter ของ GPUAdapterInfo
- การปรับปรุงเวลาการคอมไพล์ Shader ใน D3D12
- บันทึกและคัดลอกรูปภาพแคนวาส
- ข้อจํากัดของโหมดความเข้ากันได้ของ Lift
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 135
- อนุญาตให้สร้างเลย์เอาต์ไปป์ไลน์ที่มีเลย์เอาต์กลุ่มการเชื่อมโยงเป็น Null
- อนุญาตให้ Viewport ขยายเกินขอบเขตของเป้าหมายการแสดงผล
- เข้าถึงโหมดความเข้ากันได้เวอร์ชันทดลองใน Android ได้ง่ายขึ้น
- นำขีดจำกัด maxInterStageShaderComponents ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 134
- ปรับปรุงภาระงานของแมชชีนเลิร์นนิงด้วยกลุ่มย่อย
- นำการรองรับประเภทพื้นผิวที่กรองได้แบบลอยออกเนื่องจากสามารถผสมได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 133
- รูปแบบจุดยอด unorm8x4-bgra และรูปแบบจุดยอดแบบ 1 คอมโพเนนต์เพิ่มเติม
- อนุญาตให้ขอโควต้าที่ไม่รู้จักโดยมีค่าที่ไม่ระบุ
- การเปลี่ยนแปลงกฎการจัดแนว WGSL
- การเพิ่มประสิทธิภาพ WGSL ด้วยการทิ้ง
- ใช้ displaySize ของ VideoFrame สำหรับเท็กซ์เจอร์ภายนอก
- จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- เปิดใช้โหมดความเข้ากันได้ด้วย featureLevel
- การล้างข้อมูลฟีเจอร์กลุ่มย่อยทดลอง
- เลิกใช้งานขีดจำกัด maxInterStageShaderComponents
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 132
- การใช้งานมุมมองพื้นผิว
- การผสมพื้นผิวแบบลอยตัว 32 บิต
- แอตทริบิวต์ adapterInfo ของ GPUDevice
- การกำหนดค่าบริบท Canvas ด้วยรูปแบบที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด JavaScript
- ข้อจำกัดของตัวอย่างการกรองในพื้นผิว
- การทดสอบกลุ่มย่อยเพิ่มเติม
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- การรองรับรูปแบบพื้นผิวแบบปกติ 16 บิตในเวอร์ชันทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 131
- ระยะทางคลิปใน WGSL
- GPUCanvasContext getConfiguration()
- Primitive ของจุดและเส้นต้องไม่มีการปรับความลึก
- ฟังก์ชันบิวท์อินของการสแกนแบบครอบคลุมสำหรับกลุ่มย่อย
- การรองรับการวาดภาพแบบอ้อมหลายรายการในเวอร์ชันทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader แบบเข้มงวด
- นำ GPUAdapter requestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มา 2 แหล่ง
- การปรับปรุงเวลาในการคอมไพล์ Shader บน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
Chrome 128
- การทดลองกับกลุ่มย่อย
- เลิกใช้งานการตั้งค่าอคติของความลึกสำหรับเส้นและจุด
- ซ่อนคำเตือนในเครื่องมือสำหรับนักพัฒนาเว็บเกี่ยวกับข้อผิดพลาดที่ไม่ได้บันทึกหาก preventDefault
- WGSL interpolate sampling first and either
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android เวอร์ชันทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของเครื่องมือเข้ารหัสคำสั่งที่ได้รับการปรับปรุง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจำกัด maxTextureArrayLayers
- เพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาในการคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
- กลุ่มย่อย (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)
- แสดงผลเป็นชิ้นส่วนของพื้นผิว 3 มิติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
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
- เท็กซ์เจอร์แบบลอยตัว 32 บิตที่กรองได้
- รูปแบบจุดยอด unorm10-10-10-2
- รูปแบบเท็กซ์เจอร์ rgb10a2uint
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture() - การรองรับแบบทดลองสำหรับเท็กซ์เจอร์พื้นที่เก็บข้อมูลแบบอ่าน-เขียนและแบบอ่านอย่างเดียว
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 117
- Unset vertex buffer
- ยกเลิกการตั้งค่ากลุ่มที่เชื่อมโยง
- ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบอะซิงโครนัสเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูล 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