یکپارچه سازی WebCodecs
WebGPU یک API را برای ایجاد اشیاء "بافت خارجی" مات از HTMLVideoElement
از طریق importExternalTexture()
در معرض دید قرار می دهد. میتوانید از این اشیاء برای نمونهبرداری کارآمد از فریمهای ویدیویی، بهطور بالقوه به روش 0-کپی، مستقیماً از دادههای مدل رنگی منبع YUV استفاده کنید.
با این حال، مشخصات اولیه WebGPU اجازه ایجاد اشیاء GPUExternalTexture
از اشیاء WebCodecs VideoFrame
را نمی داد. این قابلیت برای برنامههای پردازش ویدیوی پیشرفته که قبلاً از WebCodec استفاده میکنند و میخواهند 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()
اختیاری است. تغییر کرومیوم:4613967 را ببینید.
اگر code
منبع WGSL حاوی \0
باشد، هنگام فراخوانی createShaderModule()
خطایی ایجاد میشود. رجوع به سحرگاه: 1345 شود .
حداکثر سطح جزئیات پیشفرض ( lodMaxClamp
) که هنگام نمونهبرداری از بافت با createSampler()
استفاده میشود، 32 است . تغییر chromium:4608063 را ببینید.
بهبود تجربه توسعه دهندگان
پیامی در کنسول DevTools JavaScript نمایش داده می شود تا به توسعه دهندگان یادآوری کند که از WebGPU در یک پلتفرم پشتیبانی نشده استفاده می کنند. تغییر کرومیوم:4589369 را ببینید.
پیامهای خطای اعتبارسنجی بافر بلافاصله در کنسول جاوا اسکریپت DevTools نشان داده میشوند، زمانی که getMappedRange()
با شکست مواجه میشود، بدون اینکه توسعهدهندگان مجبور به ارسال دستورات به صف شوند. تغییر کرومیوم:4597950 را ببینید.
به روز رسانی سحر
جابجایی اشکال زدایی disallow_unsafe_apis
به allow_unsafe_apis
تغییر نام داده و پیشفرض آن را غیرفعال کرده است. این جابهجایی خطاهای اعتبارسنجی را در نقاط ورودی API یا ترکیبهای پارامتری که هنوز امن تلقی نمیشوند، سرکوب میکند. می تواند برای رفع اشکال مفید باشد. به شماره سپیده دم: 1685 مراجعه کنید.
ویژگی source
منسوخ شده wgpu::ShaderModuleWGSLDescriptor
به نفع code
حذف می شود. تغییر سحر را ببینید:130321 .
روش گمشده wgpu::RenderBundle::SetLabel()
پیاده سازی شده است. تغییر سحر را ببینید:134502 .
هنگام دریافت آداپتور با گزینه wgpu::RequestAdapterOptionsBackendType
برنامه ها می توانند یک Backend خاص را درخواست کنند. مثال زیر را ببینید و سپیده دم: 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()
با کاربردهای اضافی برای بافتهای swapchain اضافه شده است تا wgpu::Texture
برگشتی را بتوان در کپیها استفاده کرد. مثال زیر را ببینید و dawn:1551 را صادر کنید .
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.
چه چیزی در WebGPU جدید است
فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.
کروم 131
- فاصله های کلیپ در WGSL
- GPUCanvasContext getConfiguration()
- نقطه و خط اولیه نباید بایاس عمق داشته باشند
- توابع داخلی اسکن جامع برای زیرگروه ها
- پشتیبانی آزمایشی برای چند قرعه کشی غیر مستقیم
- گزینه کامپایل ماژول Shader ریاضی سخت
- حذف GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 130
- ترکیب منبع دوگانه
- بهبود زمان کامپایل شیدر در فلز
- منسوخ شدن GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 129
کروم 128
- آزمایش با زیر گروه ها
- بایاس عمق تنظیم را برای خطوط و نقاط منسوخ کنید
- در صورت جلوگیری از Default، هشدار DevTools خطای ضبط نشده را مخفی کنید
- WGSL ابتدا نمونهگیری را درونیابی میکند و هر کدام را
- به روز رسانی سحر
کروم 127
- پشتیبانی آزمایشی از OpenGL ES در اندروید
- ویژگی اطلاعات GPUAdapter
- بهبودهای WebAssembly interop
- خطاهای رمزگذار فرمان بهبود یافته است
- به روز رسانی سحر
کروم 126
- حد maxTextureArrayLayers را افزایش دهید
- بهینه سازی بارگذاری بافر برای باطن Vulkan
- بهبود زمان کامپایل شیدر
- بافرهای فرمان ارسالی باید منحصر به فرد باشند
- به روز رسانی سحر
کروم 125
کروم 124
- بافت های ذخیره سازی فقط خواندنی و خواندنی و نوشتنی
- پشتیبانی کارگران خدماتی و کارگران مشترک
- ویژگی های اطلاعات آداپتور جدید
- رفع اشکال
- به روز رسانی سحر
کروم 123
- توابع داخلی DP4a در WGSL پشتیبانی می کند
- پارامترهای اشاره گر نامحدود در WGSL
- قند نحوی برای عدم ارجاع کامپوزیت ها در WGSL
- حالت فقط خواندنی را برای جنبه های استنسیل و عمق جدا کنید
- به روز رسانی سحر
کروم 122
- گسترش دسترسی با حالت سازگاری (ویژگی در حال توسعه)
- حد maxVertexAttributes را افزایش دهید
- به روز رسانی سحر
کروم 121
- پشتیبانی از WebGPU در اندروید
- برای کامپایل شیدر در ویندوز به جای FXC از DXC استفاده کنید
- پرس و جوهای مهر زمانی در گذرنامه های محاسبه و ارائه
- نقاط ورودی پیش فرض به ماژول های سایه زن
- پشتیبانی از display-p3 به عنوان فضای رنگی GPUExternalTexture
- اطلاعات انبوه حافظه
- به روز رسانی سحر
کروم 120
- پشتیبانی از مقادیر ممیز شناور 16 بیتی در WGSL
- محدودیت ها را فشار دهید
- تغییرات در حالت عمقی-استنسیل
- به روز رسانی اطلاعات آداپتور
- کوانتیزاسیون پرس و جوهای مهر زمانی
- ویژگی های تمیز کردن فنری
کروم 119
کروم 118
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture()
- پشتیبانی آزمایشی از بافت ذخیرهسازی خواندنی-نوشتنی و فقط خواندنی
- به روز رسانی سحر
کروم 117
- بافر راس را تنظیم نکنید
- گروه bind را تنظیم نکنید
- هنگام گم شدن دستگاه، خطاهای ایجاد خط لوله ناهمگام را خاموش کنید
- به روز رسانی های ایجاد ماژول سایه زن SPIR-V
- بهبود تجربه توسعه دهندگان
- ذخیره سازی خطوط لوله با طرح تولید خودکار
- به روز رسانی سحر
کروم 116
- یکپارچه سازی WebCodecs
- دستگاه گمشده توسط GPUAdapter
requestDevice()
برگردانده شد - در صورت فراخوانی
importExternalTexture()
پخش ویدیو را روان نگه دارید - مطابقت با مشخصات
- بهبود تجربه توسعه دهندگان
- به روز رسانی سحر
کروم 115
- پشتیبانی از پسوندهای زبان WGSL
- پشتیبانی آزمایشی از Direct3D 11
- GPU گسسته را به طور پیشفرض با برق AC دریافت کنید
- بهبود تجربه توسعه دهندگان
- به روز رسانی سحر
کروم 114
- بهینه سازی جاوا اسکریپت
- getCurrentTexture() روی بوم پیکربندی نشده خطای InvalidState را ایجاد می کند
- به روز رسانی WGSL
- به روز رسانی سحر