تاریخ انتشار: 29 ژانویه 2025
فرمتهای unorm8x4-bgra و راس 1 جزء اضافی
فرمت راس "unorm8x4-bgra"
و قالبهای راس 1 جزء زیر اضافه شده است: "uint8"
, "sint8"
, "unorm8"
" , " "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
، و "float16"
. فرمت راس "unorm8x4-bgra"
بارگذاری رنگهای راس کدگذاری شده با BGRA را در عین حفظ سایهزن یکسان، کمی راحتتر میکند. علاوه بر این، فرمت راس 1 جزء به شما امکان میدهد فقط دادههایی را درخواست کنید که زمانی که قبلاً حداقل دو برابر بیشتر برای انواع دادههای 8 و 16 بیتی مورد نیاز بود، درخواست کنید. ورودی chromestatus و شماره 376924407 را ببینید.
اجازه دهید محدودیت های ناشناخته با مقدار تعریف نشده درخواست شود
برای اینکه WebGPU API در طول تکامل کمتر شکننده شود، اکنون می توانید هنگام درخواست یک دستگاه GPU، محدودیت های ناشناخته با مقدار undefined
درخواست کنید. این در کد برنامه زیر مفید است، برای مثال در جایی که adapter.limits.someLimit
میتواند undefined
باشد، اگر someLimit
دیگر وجود نداشته باشد. مشخصات PR 4781 را ببینید.
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 را ساده می کند و آن را با فایرفاکس و سافاری سازگارتر می کند. میتوانید کد نمونهای را پیدا کنید که تفاوتهای بین کامپایلرهای Tint، Naga و WebKit را در مشخصات PR نشان میدهد.
عملکرد WGSL با دور انداختن افزایش می یابد
به دلیل افت عملکرد قابل توجهی که هنگام رندر کردن یک افکت انعکاس فضای صفحه نمایش پیچیده (SSR) مشاهده میشود، اجرای دستور رد کردن از معنایی ارائهشده توسط پلتفرم برای تنزل رتبه به فراخوانی کمکی در صورت وجود استفاده میکند. این کار باعث بهبود عملکرد سایه زن هایی می شود که از Discard استفاده می کنند. به شماره 372714384 مراجعه کنید.
از VideoFrame displaySize برای بافت های خارجی استفاده کنید
ابعاد displayWidth
و displayHeight
باید به عنوان اندازه ظاهری GPUExternalTexture هنگام وارد کردن یک VideoFrame طبق مشخصات WebGPU استفاده شود. با این حال، اندازه قابل مشاهده به اشتباه استفاده شد و باعث ایجاد مشکلاتی در هنگام استفاده از textureLoad()
در GPUExternalTexture شد. این در حال حاضر ثابت شده است. شماره 377574981 را ببینید.
با استفاده از copyExternalImageToTexture، تصاویر را با جهت گیری های غیر پیش فرض مدیریت کنید
متد copyExternalImageToTexture()
GPUQueue برای کپی کردن محتوای یک تصویر یا بوم در یک بافت استفاده می شود. اکنون به درستی تصاویر را با جهت گیری های غیر پیش فرض مدیریت می کند. زمانی که منبع یک ImageBitmap با imageOrientation
"from-image"
یا یک تصویر با جهت غیر پیشفرض بود، قبلاً اینطور نبود. شماره 384858956 را ببینید.
بهبود تجربه توسعه دهندگان
وقتی adapter.limits
مقادیر بالایی را نشان میدهد ممکن است شگفتانگیز باشد، اما متوجه نمیشوید که هنگام درخواست یک دستگاه GPU به صراحت نیاز به درخواست محدودیت بالاتر دارید. اگر این کار را انجام ندهید ممکن است بعداً به طور غیرمنتظرهای به محدودیتها برسید.
برای کمک به شما، پیامهای خطا همراه با نکاتی گسترش یافتهاند که به شما میگوید در هنگام فراخوانی requestDevice()
، صراحتاً محدودیت بالاتری را درخواست کنید، زمانی که هیچ محدودیتی در requiredLimits
مشخص نشده است. به شماره 42240683 مراجعه کنید.
مثال زیر هنگام ایجاد یک بافر 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 فعال کنید
درخواست آداپتور GPU در حالت سازگاری آزمایشی اکنون با تنظیم گزینه استاندارد شده featureLevel
روی "compatibility"
امکان پذیر است. رشتههای "core"
(پیشفرض) و "compatibility"
تنها مقادیر مجاز هستند. مثال زیر و مشخصات PR 4897 را ببینید.
// 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
جایگزین گزینه non-standardized compatibilityMode
می شود در حالی که ویژگی non-standardized featureLevel
جایگزین ویژگی isCompatibilityMode
می شود.
از آنجایی که هنوز آزمایشی است، در حال حاضر باید Chrome را با پرچم «پشتیبانی از WebGPU ناامن» در chrome://flags/#enable-unsafe-webgpu
اجرا کنید. برای بازی با آن webgpureport.org را بررسی کنید.
ویژگی های پاکسازی زیرگروه آزمایشی
ویژگیهای زیرگروههای آزمایشی منسوخ شده "chromium-experimental-subgroups"
و "chromium-experimental-subgroup-uniform-control-flow"
حذف میشوند. به شماره 377868468 مراجعه کنید.
ویژگی آزمایشی "subgroups"
تنها چیزی است که اکنون هنگام آزمایش با زیرگروه ها به آن نیاز دارید. ویژگی آزمایشی "subgroups-f16"
منسوخ شده است و به زودی حذف خواهد شد. هنگامی که برنامه شما هر دو ویژگی "shader-f16"
و "subgroups"
را درخواست می کند، می توانید از مقادیر f16 با زیرگروه ها استفاده کنید. شماره 380244620 را ببینید.
محدودیت maxInterStageShaderComponents را منسوخ کنید
محدودیت maxInterStageShaderComponents
به دلیل ترکیبی از عوامل منسوخ شده است:
- افزونگی با
maxInterStageShaderVariables
: این محدودیت در حال حاضر هدف مشابهی را دنبال می کند، کنترل مقدار داده ارسال شده بین مراحل سایه زن. - اختلافات جزئی: در حالی که تفاوت های جزئی در نحوه محاسبه دو حد وجود دارد، این تفاوت ها جزئی هستند و می توان به طور موثر در محدوده
maxInterStageShaderVariables
مدیریت کرد. - ساده سازی: حذف
maxInterStageShaderComponents
رابط سایه زن را ساده می کند و پیچیدگی را برای توسعه دهندگان کاهش می دهد. به جای مدیریت دو محدودیت جداگانه با تفاوتهای ظریف، میتوانند رویmaxInterStageShaderVariables
با نام مناسبتر و جامعتر تمرکز کنند.
هدف حذف کامل آن در Chrome 135 است. به قصد منسوخ کردن و صدور 364338810 مراجعه کنید.
به روز رسانی سحر
wgpu::Device::GetAdapterInfo(adapterInfo)
به شما امکان می دهد اطلاعات آداپتور را مستقیماً از wgpu::Device
دریافت کنید. شماره 376600838 را ببینید.
ساختار WGPUProgrammableStageDescriptor
به WGPUComputeState
تغییر نام داده است تا حالت محاسبه با حالت های راس و قطعه سازگار باشد. شماره 379059434 را ببینید.
مقدار wgpu::VertexStepMode::VertexBufferNotUsed
enum حذف شده است. یک طرح بافر راس که استفاده نمی شود اکنون می تواند با {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
بیان شود. شماره 383147017 را ببینید.
این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.
چه چیزی در WebGPU جدید است
فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.
کروم 133
- فرمتهای unorm8x4-bgra و راس 1 جزء اضافی
- اجازه دهید محدودیت های ناشناخته با مقدار تعریف نشده درخواست شود
- قوانین تراز WGSL تغییر می کند
- عملکرد WGSL با دور انداختن افزایش می یابد
- از VideoFrame displaySize برای بافت های خارجی استفاده کنید
- با استفاده از copyExternalImageToTexture، تصاویر را با جهت گیری های غیر پیش فرض مدیریت کنید
- بهبود تجربه توسعه دهندگان
- حالت سازگاری را با featureLevel فعال کنید
- ویژگی های پاکسازی زیرگروه آزمایشی
- محدودیت maxInterStageShaderComponents را منسوخ کنید
- به روز رسانی سحر
کروم 132
- استفاده از نمای بافت
- ترکیب بافت های شناور 32 بیتی
- ویژگی GPUDevice adapterInfo
- پیکربندی بافت بوم با فرمت نامعتبر خطای جاوا اسکریپت را ایجاد می کند
- فیلتر کردن محدودیت های نمونه بر روی بافت ها
- آزمایش زیرگروه های گسترده
- بهبود تجربه توسعه دهندگان
- پشتیبانی آزمایشی از فرمتهای بافت عادی ۱۶ بیتی
- به روز رسانی سحر
کروم 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
- به روز رسانی سحر