منتشرشده: ۲۹ ژانویه ۲۰۲۵
قالبهای رأس اضافی unorm8x4-bgra و ۱-جزء
قالب رأس "unorm8x4-bgra" و قالبهای رأس ۱-مؤلفهای زیر اضافه شده است: "uint8"، "sint8"، "unorm8"، "snorm8"، "uint16"، "sint16"، "unorm16"، "snorm16"، و "float16".
قالب رأس "unorm8x4-bgra" بار کردن رنگهای رأس کدبندیشده BGRA را کمی آسانتر میکند و درعینحال سایهزن را حفظ میکند. علاوهبراین، قالب رأس ۱-جزء به شما امکان میدهد فقط دادههای ضروری را درخواست کنید، درحالیکه قبلاً برای انواع داده ۸ و ۱۶ بیتی حداقل دوبرابر این مقدار لازم بود. ورودی chromestatus و مشکل ۳۷۶۹۲۴۴۰۷ را ببینید.
اجازه دهید محدودیتهای ناشناس با مقدار تعریفنشده درخواست شوند
برای اینکه «میانای برنامهسازی کاربردی WebGPU» با تکامل یافتن کمتر شکننده شود، اکنون میتوانید هنگام درخواست دستگاه GPU، محدودیتهای ناشناخته را با مقدار undefined درخواست کنید. این کار در کد برنامه زیر مفید است، برای مثال، در جایی که اگر someLimit دیگر وجود نداشته باشد، adapter.limits.someLimit میتواند undefined باشد. مشخصات درخواست ادغام ۴۷۸۱ را ببینید.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
});
تغییرات قوانین تراز WGSL
دیگر نمیتوان مقدار تراز بسیار کوچکی برای عضو ساختار ارائه کرد زیرا اکنون لازم است که @align(n) RequiredAlignOf را برای همه ساختارها تقسیم کند. این تغییر اساسی استفاده از زبان WGSL را سادهتر میکند و آن را با Firefox و Safari سازگارتر میکند. میتوانید کد نمونهای را که تفاوت بین کامپایلرهای Tint، Naga، و WebKit را نشان میدهد در spec PR پیدا کنید.
بهبود عملکرد WGSL با دور انداختن
بهدلیل افت قابلتوجه عملکرد مشاهدهشده هنگام پرداز کردن اثر بازتابهای فضای صفحه پیچیده (SSR)، پیادهسازی عبارت دور انداختن از معناشناسی ارائهشده توسط پلاتفرم برای تنزل دادن به فراخوانی کمکی درصورت دردسترس بودن استفاده میکند. این کار عملکرد سایهزنهایی را که از «دور انداختن» استفاده میکنند بهبود میبخشد. مشکل ۳۷۲۷۱۴۳۸۴ را ببینید.
استفاده از displaySize در VideoFrame برای بافتهای خارجی
ابعاد displayWidth و displayHeight باید بهعنوان اندازه ظاهری GPUExternalTexture هنگام وارد کردن VideoFrame طبق مشخصات WebGPU استفاده شود. بااینحال، از اندازه قابلمشاهده بهاشتباه استفاده شده است که باعث ایجاد مشکلاتی هنگام تلاش برای استفاده از textureLoad() در GPUExternalTexture میشود. اکنون این مشکل رفع شده است. مشکل ۳۷۷۵۷۴۹۸۱ را ببینید.
بااستفاده از copyExternalImageToTexture، تصاویر با جهتگیری غیرپیشفرض را مدیریت کنید
از روش copyExternalImageToTexture() GPUQueue برای کپی کردن محتوای تصویر یا بوم در بافت استفاده میشود. اکنون تصاویر با جهتگیریهای غیرپیشفرض را بهدرستی مدیریت میکند. قبلاً وقتی منبع یک ImageBitmap با imageOrientation "from-image" یا تصویری با گرایش غیرپیشفرض بود، اینطور نبود. مشکل ۳۸۴۸۵۸۹۵۶ را ببینید.
بهبود تجربه توسعهدهنده
وقتی adapter.limits مقادیر بالایی را نشان میدهد ممکن است تعجب کنید، اما متوجه نمیشوید که هنگام درخواست دستگاه GPU باید صریحاً حد بالاتری را درخواست کنید. انجام ندادن این کار میتواند منجر به رسیدن غیرمنتظره به محدودیتها در آینده شود.
برای کمک به شما، پیامهای خطا با نکتههایی گسترش یافته است که به شما میگوید وقتی در requiredLimits هنگام فراخوانی requestDevice() حد مشخصی تعیین نشده است، بهطور صریح حد بالاتری را درخواست کنید. مشکل ۴۲۲۴۰۶۸۳ را ببینید.
مثال زیر پیام خطای بهبودیافتهای را نشان میدهد که هنگام ایجاد بافر GPU با اندازهای فراتر از حد مجاز پیشفرض اندازه بافر دستگاه در کنسول DevTools ثبت میشود.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit. - While calling [Device].CreateBuffer([BufferDescriptor]).
فعال کردن حالت سازگاری با featureLevel
اکنون با تنظیم گزینه استاندارد featureLevel روی "compatibility"، درخواست کردن برای آداپتور GPU در حالت سازگاری آزمایشی امکانپذیر است. فقط رشتههای "core" (پیشفرض) و "compatibility" مجاز هستند. مثال زیر و مشخصات درخواست ادغام ۴۸۹۷ را ببینید.
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
}
گزینه featureLevel جایگزین گزینه غیراستاندارد compatibilityMode میشود و مشخصه غیراستاندارد featureLevel جایگزین مشخصه isCompatibilityMode میشود.
ازآنجاییکه این ویژگی هنوز آزمایشی است، فعلاً باید Chrome را با پرچم «پشتیبانی ناامن از WebGPU» در chrome://flags/#enable-unsafe-webgpu اجرا کنید. برای کار کردن با آن، به webgpureport.org مراجعه کنید.
پاکسازی ویژگیهای آزمایشی زیرگروه
ویژگیهای آزمایشی زیرگروه منسوخشده "chromium-experimental-subgroups" و "chromium-experimental-subgroup-uniform-control-flow" برداشته شده است. مشکل ۳۷۷۸۶۸۴۶۸ را ببینید.
اکنون وقتی با زیرگروهها آزمایش میکنید، تنها چیزی که نیاز دارید ویژگی آزمایشی "subgroups" است. ویژگی آزمایشی "subgroups-f16" منسوخ شده است و بهزودی برداشته خواهد شد. وقتی برنامهتان هم ویژگیهای "shader-f16" و هم ویژگیهای "subgroups" را درخواست میکند، میتوانید از مقادیر f16 با زیرگروهها استفاده کنید. مسئله ۳۸۰۲۴۴۶۲۰ را ببینید.
منسوخ کردن محدودیت maxInterStageShaderComponents
محدودیت maxInterStageShaderComponents بهدلیل ترکیبی از عوامل منسوخ شده است:
- افزونگی با
maxInterStageShaderVariables: این محدودیت ازقبل هدف مشابهی را دنبال میکند و مقدار دادههای منتقلشده بین مراحل سایهزن را کنترل میکند. - اختلافات جزئی: اگرچه تفاوتهای جزئی در نحوه محاسبه این دو محدودیت وجود دارد، اما این تفاوتها جزئی هستند و میتوان آنها را بهطور مؤثر در محدوده
maxInterStageShaderVariablesمدیریت کرد. - سادهسازی: برداشتن
maxInterStageShaderComponentsباعث سادهتر شدن میانای سایهزن میشود و پیچیدگی را برای توسعهدهندگان کاهش میدهد. بهجای مدیریت دو حد مجزا با تفاوتهای ظریف، میتوانند رویmaxInterStageShaderVariablesکه نام مناسبتر و جامعتری دارد تمرکز کنند.
هدف این است که آن را بهطور کامل در Chrome 135 برداریم. قصد منسوخ کردن و مشکل ۳۶۴۳۳۸۸۱۰ را ببینید.
بهروزرسانیهای سپیدهدم
wgpu::Device::GetAdapterInfo(adapterInfo) به شما امکان میدهد اطلاعات آداپتور را مستقیماً از wgpu::Device دریافت کنید. مشکل ۳۷۶۶۰۰۸۳۸ را ببینید.
ساختار WGPUProgrammableStageDescriptor به WGPUComputeState تغییر نام داده است تا وضعیت محاسباتی با وضعیتهای رأس و قطعه سازگار شود. مشکل ۳۷۹۰۵۹۴۳۴ را ببینید.
مقدار شمارشی wgpu::VertexStepMode::VertexBufferNotUsed برداشته شده است. چیدمان بافر رأس که استفاده نمیشود اکنون میتواند با {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0} بیان شود. مسئله ۳۸۳۱۴۷۰۱۷ را ببینید.
این فقط برخیاز نکات برجسته کلیدی را پوشش میدهد. فهرست کامل تعهدات را بررسی کنید.
ویژگیهای جدید WebGPU
فهرستی از همه مواردی که در مجموعه ویژگیهای جدید WebGPU پوشش داده شده است.
۱۵۵-۱۵۶ Chrome
- افزونه WGSL fragment_depth
- فشردهسازی بافت ناهمتراز
- فضاهای رنگی srgb-linear و display-p3-linear
- قالب رأس snorm10-10-10-2 اضافی
- پشتیبانی f16 در NVIDIA با Vulkan
- بهروزرسانیهای سپیدهدم
۱۵۳-۱۵۴ Chrome
- افزونه WGSL buffer_view
- افزونه WGSL swizzle_assignment
- بهروزرسانیهای افزونه WGSL
- بهروزرسانیهای سپیدهدم
Chrome 151-152
۱۴۹-۱۵۰ Chrome
۱۴۷-۱۴۸ Chrome
۱۴۶ Chrome
- پشتیبانی از حالت سازگاری WebGPU در OpenGL ES 3.1
- پیوستهای گذرا
- افزونه WGSL texture_and_sampler_let
- بهروزرسانیهای سپیدهدم
Chrome 145
۱۴۴ Chrome
- افزونه WGSL subgroup_id
- افزونه WGSL uniform_buffer_standard_layout
- WebGPU در Linux
- writeBuffer و writeTexture سریعتر
- بهروزرسانیهای سپیدهدم
۱۴۳ Chrome
- ترکیب کردن عنصر بافت
- برداشتن استفاده از بافت ذخیرهسازی فقطخواندنی bgra8unorm
- بهروزرسانیهای سپیدهدم
۱۴۲ Chrome
Chrome 141
- «رنگآمیزی فروسرخ» تکمیل شد
- تجزیهوتحلیل محدوده عدد صحیح در کامپایلر WGSL
- بهروزرسانی SPIR-V 1.4 برای زیرینه Vulkan
- بهروزرسانیهای سپیدهدم
۱۴۰ Chrome
- درخواستهای دستگاه آداپتور را مصرف میکند
- کوتهنویسی برای استفاده از بافت در جایی که نمای بافت استفاده میشود
- WGSL textureSampleLevel از بافتهای یکبعدی پشتیبانی میکند
- منسوخ کردن استفاده از بافت فضای ذخیرهسازی فقط خواندنی bgra8unorm
- برداشتن مشخصه GPUAdapter isFallbackAdapter
- بهروزرسانیهای سپیدهدم
Chrome 139
- پشتیبانی از بافت سهبعدی برای قالبهای فشرده BC و ASTC
- ویژگی جدید «ویژگیهای اصلی و محدودیتها»
- آزمایش اصلی برای حالت سازگاری WebGPU
- بهروزرسانیهای سپیدهدم
Chrome 138
- کوتهنویسی برای استفاده از بافر بهعنوان منبع اتصال
- تغییرات الزامات اندازه برای میانههای نگاشتشده در زمان ایجاد
- گزارش معماری برای واحدهای پردازش گرافیکی اخیر
- منسوخ کردن مشخصه GPUAdapter isFallbackAdapter
- بهروزرسانیهای سپیدهدم
Chrome 137
- استفاده از نمای بافت برای پیوند externalTexture
- کپی کردن میانگیرها بدون مشخص کردن اندازه و جبران
- WGSL workgroupUniformLoad بااستفاده از اشارهگر به اتمی
- مشخصه GPUAdapterInfo powerPreference
- برداشتن مشخصه compatibilityMode در GPURequestAdapterOptions
- بهروزرسانیهای سپیدهدم
Chrome 136
- مشخصه GPUAdapterInfo isFallbackAdapter
- بهبود زمان گردآوری سایهزن در D3D12
- ذخیره و کپی کردن تصاویر بوم
- محدودیتهای حالت سازگاری بهینهگر
- بهروزرسانیهای سپیدهدم
۱۳۵ Chrome
- اجازه دادن به ایجاد چیدمان خط لوله با چیدمان گروه پیوند تهی
- اجازه دادن به درگاههای نمایش برای گسترش فراتر از محدودههای هدفهای پردازشی
- دسترسی آسانتر به حالت سازگاری آزمایشی در Android
- برداشتن محدودیت maxInterStageShaderComponents
- بهروزرسانیهای سپیدهدم
۱۳۴ Chrome
- بهبود دادن حجم کار یادگیری ماشین با زیرگروهها
- برداشتن پشتیبانی از انواع بافت فیلترپذیر شناور بهعنوان ترکیبشدنی
- بهروزرسانیهای سپیدهدم
Chrome 133
- قالبهای رأس تکمؤلفه و unorm8x4-bgra اضافی
- اجازه دادن به درخواست محدودیتهای ناشناخته با مقدار تعریفنشده
- تغییرات قوانین تراز WGSL
- بهبود عملکرد WGSL با کنار گذاشتن
- استفاده از displaySize در VideoFrame برای بافتهای خارجی
- مدیریت تصاویر با جهتگیریهای غیرپیشفرض بااستفاده از copyExternalImageToTexture
- بهبود تجربه توسعهدهنده
- فعال کردن حالت سازگاری با featureLevel
- پاکسازی ویژگیهای زیرگروه آزمایشی
- منسوخ کردن محدودیت maxInterStageShaderComponents
- بهروزرسانیهای سپیدهدم
۱۳۲ Chrome
- استفاده از نمای بافت
- ترکیب بافتهای شناور ۳۲ بیتی
- مشخصه GPUDevice adapterInfo
- پیکربندی بافت بوم با قالب نامعتبر باعث خطای جاوا اسکریپت میشود
- محدودیتهای فیلتر کردن نمونهبرداری روی بافتها
- آزمایش زیرگروههای گسترده
- بهبود تجربه توسعهدهنده
- پشتیبانی آزمایشی از قالبهای بافت نرمالسازیشده ۱۶ بیتی
- بهروزرسانیهای سپیدهدم
۱۳۱ Chrome
- فاصلههای کلیپ در WGSL
- GPUCanvasContext getConfiguration()
- نقطه و خطهای اولیه نباید انحراف عمق داشته باشند
- عملکردهای داخلی اسکن فراگیر برای زیرگروهها
- پشتیبانی آزمایشی برای چندقرعه غیرمستقیم
- گزینه کامپایل واحد سایهزن ریاضیات دقیق
- برداشتن GPUAdapter requestAdapterInfo()
- بهروزرسانیهای سپیدهدم
Chrome 130
- ترکیب منبع دوگانه
- بهبود زمان گردآوری سایهزن در Metal
- منسوخ شدن GPUAdapter requestAdapterInfo()
- بهروزرسانیهای سپیدهدم
Chrome 129
Chrome 128
- آزمایش با زیرگروهها
- منسوخ کردن تنظیم انحراف عمق برای خطوط و نقاط
- پنهان کردن هشدار DevTools خطای ثبتنشده درصورت preventDefault
- ابتدا نمونهبرداری درونیابی WGSL و سپس
- بهروزرسانیهای سپیدهدم
Chrome 127
- پشتیبانی آزمایشی از OpenGL ES در Android
- مشخصه اطلاعات GPUAdapter
- بهبودهای قابلیت تعامل WebAssembly
- خطاهای بهبودیافته کدبند فرمان
- بهروزرسانیهای سپیدهدم
Chrome 126
- افزایش حد maxTextureArrayLayers
- بهینهسازی بارگذاری بافر برای زیرینه Vulkan
- بهبود زمان گردآوری سایهزن
- بافرهای فرمان ارسالی باید منحصربهفرد باشند
- بهروزرسانیهای سپیدهدم
Chrome 125
Chrome 124
- بافتهای فضای ذخیرهسازی فقط خواندنی و خواندنی-نوشتنی
- پشتیبانی از عاملان خدماتی و عاملان همرسانیشده
- مشخصههای اطلاعات آداپتور جدید
- رفع اشکالها
- بهروزرسانیهای سپیدهدم
Chrome 123
- پشتیبانی از توابع داخلی DP4a در WGSL
- پارامترهای اشارهگر نامحدود در WGSL
- شکر نحوی برای ارجاعزدایی ترکیبات در WGSL
- وضعیت فقط خواندنی جداگانه برای جنبههای ژرفانمایی و عمق
- بهروزرسانیهای سپیدهدم
Chrome 122
- گسترش دسترسی با حالت سازگاری (ویژگی درحال توسعه)
- افزایش حد maxVertexAttributes
- بهروزرسانیهای سپیدهدم
Chrome 121
- پشتیبانی از WebGPU در Android
- استفاده از DXC بهجای FXC برای ترجمه سایهزن در Windows
- پرسشهای مُهر زمان در گذرگاههای محاسباتی و رندر
- نقاط ورودی پیشفرض به واحدهای سایهزن
- پشتیبانی از display-p3 بهعنوان فضای رنگ GPUExternalTexture
- اطلاعات پشتههای حافظه
- بهروزرسانیهای سپیدهدم
Chrome 120
- پشتیبانی از مقادیر ممیز شناور ۱۶ بیتی در WGSL
- محدودیتها را کنار بزنید
- تغییرات در وضعیت عمق-استنسیل
- بهروزرسانیهای اطلاعات آداپتور
- کمّیسازی پُرسمانهای مُهر زمان
- ویژگیهای نظافت بهاره
Chrome 119
- بافتهای شناور ۳۲ بیتی فیلترپذیر
- قالب رأس unorm10-10-10-2
- قالب بافت rgb10a2uint
- بهروزرسانیهای سپیدهدم
Chrome 118
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture() - پشتیبانی آزمایشی از بافت فضای ذخیرهسازی خواندن-نوشتن و فقط خواندنی
- بهروزرسانیهای سپیدهدم
Chrome 117
- لغو تنظیم بافر رأس
- لغو تنظیم گروه پیوند
- بیصدا کردن خطاهای ایجاد خط لوله ناهمزمان هنگام گم شدن دستگاه
- بهروزرسانیهای ایجاد واحد سایهزن SPIR-V
- بهبود تجربه توسعهدهنده
- ذخیره کردن خطوط لوله با چیدمان تولیدشده خودکار
- بهروزرسانیهای سپیدهدم
Chrome 116
- یکپارچهسازی WebCodecs
- دستگاه ازدسترفته توسط GPUAdapter
requestDevice()برگردانده شد - اگر با
importExternalTexture()تماس گرفته شد، بازپخش ویدیو روان باشد - مطابقت با مشخصات
- بهبود تجربه توسعهدهنده
- بهروزرسانیهای سپیدهدم
Chrome 115
- افزونههای زبان WGSL پشتیبانیشده
- پشتیبانی آزمایشی از Direct3D 11
- در حالت اتصال به برق متناوب، بهطور پیشفرض از واحد پردازش گرافیکی مجزا استفاده کنید
- بهبود تجربه توسعهدهنده
- بهروزرسانیهای سپیدهدم
Chrome 114
- بهینهسازی جاوا اسکریپت
- getCurrentTexture() در بوم پیکربندینشده InvalidStateError را پرتاب میکند
- بهروزرسانیهای WGSL
- بهروزرسانیهای سپیدهدم