การผสานรวม WebCodecs
WebGPU แสดง API เพื่อสร้างออบเจ็กต์ "พื้นผิวภายนอก" ที่ทึบแสงจาก HTMLVideoElement
ถึง importExternalTexture()
คุณใช้ออบเจ็กต์เหล่านี้เพื่อสุ่มตัวอย่างเฟรมวิดีโอได้อย่างมีประสิทธิภาพ ซึ่งทำได้ในแบบ 0 สำเนาโดยตรงจากข้อมูลโมเดลสีต้นฉบับ YUV
แต่ข้อกำหนดเริ่มต้นของ WebGPU ไม่อนุญาตให้สร้างออบเจ็กต์ GPUExternalTexture
จากออบเจ็กต์ WebCodecs VideoFrame
ความสามารถนี้สำคัญต่อแอปประมวลผลวิดีโอขั้นสูงที่ใช้ WebCodecs อยู่แล้วและต้องการผสานรวม WebGPU ในไปป์ไลน์การประมวลผลวิดีโอ การผสานรวม WebCodecs เพิ่มการรองรับการใช้ VideoFrame
เป็นแหล่งที่มาสำหรับ GPUExternalTexture
และการเรียก copyExternalImageToTexture()
โปรดดูตัวอย่างต่อไปนี้และรายการ chromestatus
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
ดูตัวอย่างการทดลองการอัปโหลดวิดีโอด้วย WebCodecs เพื่อทดลองเล่น
อุปกรณ์ที่สูญหายซึ่งส่งคืนโดย GPUAdapter requestDevice()
หากเมธอด requestDevice()
ใน GPUAdapter
ล้มเหลวเนื่องจากมีการใช้เมธอดในการสร้าง GPUDevice
ขณะนี้ระบบจะดำเนินการตามเมธอด GPUDevice
ทันทีที่ทำเครื่องหมายว่าสูญหาย แทนที่จะส่งคืนสัญญาที่ปฏิเสธด้วย null
ดูปัญหา chromium:1234617
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
ทำให้วิดีโอลื่นไหลอยู่เสมอหากมีการเรียก ImportExternalTexture()
เมื่อมีการเรียกใช้ importExternalTexture()
ด้วย HTMLVideoElement
ระบบจะไม่ควบคุมการเล่นวิดีโอที่เกี่ยวข้องอีกต่อไปเมื่อวิดีโอไม่แสดงในวิวพอร์ต ดูปัญหา chromium:1425252
ความสอดคล้องของข้อกำหนด
อาร์กิวเมนต์ message
ในเครื่องมือสร้าง GPUPipelineError()
เป็นอาร์กิวเมนต์ที่ระบุหรือไม่ก็ได้ ดูเปลี่ยน chromium:4613967
ข้อผิดพลาดจะเกิดขึ้นเมื่อเรียกใช้ createShaderModule()
หากแหล่งที่มา WGSL code
มี \0
ดูรุ่งอรุณปัญหา:1345
ระดับรายละเอียดสูงสุดเริ่มต้น (lodMaxClamp
) ที่ใช้เมื่อสุ่มตัวอย่างพื้นผิวด้วย createSampler()
คือ 32 ดูเปลี่ยน chromium:4608063
การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาซอฟต์แวร์
ข้อความจะแสดงในคอนโซล JavaScript ของ DevTools เพื่อเตือนนักพัฒนาซอฟต์แวร์เมื่อใช้ WebGPU บนแพลตฟอร์มที่ไม่รองรับ ดูเปลี่ยน chromium:4589369
ข้อความแสดงข้อผิดพลาดเกี่ยวกับการตรวจสอบบัฟเฟอร์จะปรากฏในคอนโซล JavaScript ของเครื่องมือสําหรับนักพัฒนาเว็บทันทีเมื่อ getMappedRange()
ล้มเหลวโดยไม่บังคับให้นักพัฒนาแอปส่งคําสั่งไปยังคิว ดูเปลี่ยน chromium:4597950
ข้อมูลอัปเดตเกี่ยวกับ Dawn
ปุ่มสลับการแก้ไขข้อบกพร่อง disallow_unsafe_apis
ได้เปลี่ยนชื่อเป็น allow_unsafe_apis
และเป็นค่าเริ่มต้นเป็นปิดใช้ ปุ่มสลับนี้จะระงับข้อผิดพลาดในการตรวจสอบความถูกต้องในจุดแรกเข้าของ API หรือชุดค่าผสมของพารามิเตอร์ซึ่งยังไม่ถือว่าปลอดภัย ซึ่งมีประโยชน์สำหรับการแก้ไขข้อบกพร่อง
ดูปัญหารุ่งเช้า:1685
แอตทริบิวต์ source
ที่เลิกใช้งานแล้ว wgpu::ShaderModuleWGSLDescriptor
ถูกนำออกเพื่อใช้ code
ดูchange dawn:130321
นำเมธอด wgpu::RenderBundle::SetLabel()
ที่ขาดหายไปไปใช้แล้ว ดู change dawn:134502
แอปพลิเคชันสามารถขอแบ็กเอนด์ที่เจาะจงเมื่อได้รับอะแดปเตอร์ที่มีตัวเลือก wgpu::RequestAdapterOptionsBackendType
ดูตัวอย่างด้านล่างและปัญหารุ่งเช้า:1875
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
มีการเพิ่มเมธอด SwapChain::GetCurrentTexture()
ใหม่ที่มีการใช้งานเพิ่มเติมสำหรับพื้นผิวการแลกเปลี่ยน เพื่อให้ใช้ wgpu::Texture
ที่แสดงผลในสำเนาได้ ดูตัวอย่างด้านล่างและปัญหารุ่งเช้า:1551
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
ทั้งหมดนี้พูดถึงไฮไลต์สำคัญเพียงบางส่วน ดูรายการสัญญาผูกมัดอย่างละเอียด
มีอะไรใหม่ใน WebGPU
รายการของทุกอย่างที่มีการพูดถึงในซีรีส์มีอะไรใหม่ใน WebGPU
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
- ข้อมูลอัปเดตยามเช้า