منتشر شده: ۲۹ ژانویه ۲۰۲۵
فرمتهای رأس اضافی unorm8x4-bgra و 1-component
فرمت رأس "unorm8x4-bgra"
و فرمتهای رأس تک جزئی زیر اضافه شدهاند: "uint8"
، "sint8"
، "unorm8"
، "snorm8"
"، "uint16"
، "sint16"
، "unorm16"
، "snorm16"
و "float16"
. فرمت رأس "unorm8x4-bgra"
بارگذاری رنگهای رأس کدگذاری شده توسط BGRA را در عین حفظ سایهزن یکسان، کمی راحتتر میکند. علاوه بر این، فرمت رأس تک جزئی به شما امکان میدهد فقط دادههای ضروری را درخواست کنید، در حالی که قبلاً حداقل دو برابر بیشتر برای انواع داده ۸ و ۱۶ بیتی مورد نیاز بود. به ورودی chromestatus و شماره ۳۷۶۹۲۴۴۰۷ مراجعه کنید.
اجازه دهید محدودیتهای ناشناخته با مقدار نامشخص درخواست شوند
برای اینکه API وبجیپییو در حین تکامل، کمتر شکننده باشد، اکنون میتوانید هنگام درخواست یک دستگاه GPU، محدودیتهای ناشناخته با مقدار undefined
درخواست کنید. این در کد برنامه زیر مفید است، به عنوان مثال، در صورتی که someLimit
دیگر وجود نداشته باشد، adapter.limits.someLimit
میتواند undefined
باشد. به مشخصات 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 از معانی ارائه شده توسط پلتفرم برای تنزل به یک فراخوانی کمکی در صورت وجود استفاده میکند. این امر عملکرد سایهزنهایی را که از discard استفاده میکنند بهبود میبخشد. به شماره 372714384 مراجعه کنید.
استفاده از VideoFrame displaySize برای بافتهای خارجی
ابعاد displayWidth
و displayHeight
باید هنگام وارد کردن یک VideoFrame طبق مشخصات WebGPU به عنوان اندازه ظاهری GPUExternalTexture استفاده شوند. با این حال، اندازه قابل مشاهده به اشتباه استفاده میشد و باعث ایجاد مشکلاتی هنگام تلاش برای استفاده از textureLoad()
در GPUExternalTexture میشد. این مشکل اکنون برطرف شده است. به شماره 377574981 مراجعه کنید.
مدیریت تصاویر با جهتهای غیر پیشفرض با استفاده از copyExternalImageToTexture
متد copyExternalImageToTexture()
GPUQueue برای کپی کردن محتویات یک تصویر یا بوم نقاشی در یک بافت استفاده میشود. اکنون این متد به درستی تصاویر با جهتگیریهای غیر پیشفرض را مدیریت میکند. این مورد قبلاً زمانی که منبع یک ImageBitmap با imageOrientation
"from-image"
یا تصویری با جهتگیری غیر پیشفرض بود، صدق نمیکرد. به شماره 384858956 مراجعه کنید.
بهبود تجربه توسعهدهنده
ممکن است تعجبآور باشد که adapter.limits
مقادیر بالایی را نشان میدهد، اما شما متوجه نیستید که هنگام درخواست یک دستگاه GPU باید صریحاً محدودیت بالاتری را درخواست کنید. عدم انجام این کار میتواند منجر به برخورد غیرمنتظره با محدودیتها در آینده شود.
برای کمک به شما، پیامهای خطا با نکاتی گسترش یافتهاند که به شما میگویند وقتی هنگام فراخوانی requestDevice()
هیچ محدودیتی در requiredLimits
مشخص نشده است، صریحاً محدودیت بالاتری را درخواست کنید. به شماره ۴۲۲۴۰۶۸۳ مراجعه کنید.
مثال زیر یک پیام خطای بهبود یافته را که هنگام ایجاد یک بافر 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
جایگزین گزینه غیراستاندارد compatibilityMode
میشود، در حالی که ویژگی غیراستاندارد featureLevel
جایگزین ویژگی isCompatibilityMode
میشود.
از آنجایی که این قابلیت هنوز در مرحله آزمایشی است، فعلاً باید کروم را با پرچم «Unsafe WebGPU Support» در chrome://flags/#enable-unsafe-webgpu
اجرا کنید. برای کار با آن به webgpureport.org مراجعه کنید.
پاکسازی ویژگیهای زیرگروه آزمایشی
ویژگیهای زیرگروه آزمایشی منسوخشدهی "chromium-experimental-subgroups"
و "chromium-experimental-subgroup-uniform-control-flow"
حذف شدهاند. به شمارهی ۳۷۷۸۶۸۴۶۸ مراجعه کنید.
ویژگی آزمایشی "subgroups"
تنها چیزی است که اکنون هنگام آزمایش زیرگروهها به آن نیاز دارید. ویژگی آزمایشی "subgroups-f16"
منسوخ شده و به زودی حذف خواهد شد. وقتی برنامه شما هر دو ویژگی "shader-f16"
و "subgroups"
را درخواست میکند، میتوانید از مقادیر f16 برای زیرگروهها استفاده کنید. به شماره 380244620 مراجعه کنید.
محدودیت maxInterStageShaderComponents را منسوخ کنید
محدودیت maxInterStageShaderComponents
به دلیل ترکیبی از عوامل زیر منسوخ شده است:
- افزونگی با
maxInterStageShaderVariables
: این محدودیت در حال حاضر هدف مشابهی را دنبال میکند و میزان دادههای منتقل شده بین مراحل سایهزن را کنترل میکند. - اختلافات جزئی: اگرچه تفاوتهای جزئی در نحوه محاسبه این دو محدودیت وجود دارد، اما این تفاوتها جزئی هستند و میتوان آنها را به طور مؤثر در محدوده
maxInterStageShaderVariables
مدیریت کرد. - سادهسازی: حذف
maxInterStageShaderComponents
رابط کاربری shader را سادهتر کرده و پیچیدگی را برای توسعهدهندگان کاهش میدهد. به جای مدیریت دو محدودیت جداگانه با تفاوتهای ظریف، آنها میتوانند رویmaxInterStageShaderVariables
که نام مناسبتر و جامعتری دارند، تمرکز کنند.
هدف حذف کامل آن در کروم ۱۳۵ است. به intent to deprecate and issue 364338810 مراجعه کنید.
بهروزرسانیهای سپیدهدم
تابع wgpu::Device::GetAdapterInfo(adapterInfo)
به شما امکان میدهد اطلاعات آداپتور را مستقیماً از یک wgpu::Device
دریافت کنید. به شماره 376600838 مراجعه کنید.
ساختار WGPUProgrammableStageDescriptor
به WGPUComputeState
تغییر نام داده شده است تا حالت محاسبه با حالتهای رأس و قطعه سازگار باشد. به شماره ۳۷۹۰۵۹۴۳۴ مراجعه کنید.
مقدار شمارشی wgpu::VertexStepMode::VertexBufferNotUsed
حذف شده است. طرحبندی بافر رأسی که استفاده نمیشود، اکنون میتواند با {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
بیان شود. به شماره ۳۸۳۱۴۷۰۱7 مراجعه کنید.
این فقط برخی از نکات برجسته کلیدی را پوشش میدهد. لیست جامع کامیتها را بررسی کنید.
ویژگیهای جدید WebGPU
فهرستی از تمام مواردی که در مجموعه «ویژگیهای جدید WebGPU» پوشش داده شده است.
کروم ۱۴۲
کروم ۱۴۱
- رنگ IR تکمیل شد
- تحلیل محدوده اعداد صحیح در کامپایلر WGSL
- بهروزرسانی SPIR-V 1.4 برای رابط کاربری Vulkan
- بهروزرسانیهای سپیدهدم
کروم ۱۴۰
- درخواستهای دستگاه، آداپتور را مصرف میکنند
- اختصار برای استفاده از بافت در جایی که از نمای بافت استفاده میشود
- WGSL textureSampleLevel از بافتهای تکبعدی پشتیبانی میکند.
- استفاده از بافت ذخیرهسازی فقط خواندنی bgra8unorm را منسوخ کنید
- ویژگی isFallbackAdapter مربوط به GPUAdapter را حذف کنید
- بهروزرسانیهای سپیدهدم
کروم ۱۳۹
- پشتیبانی از بافت سهبعدی برای فرمتهای فشرده BC و ASTC
- ویژگی جدید «ویژگیهای اصلی و محدودیتها»
- نسخه آزمایشی Origin برای حالت سازگاری با WebGPU
- بهروزرسانیهای سپیدهدم
کروم ۱۳۸
- مختصر نویسی برای استفاده از بافر به عنوان منبع اتصال
- تغییرات اندازه مورد نیاز برای بافرهای نگاشت شده در زمان ایجاد
- گزارش معماری برای پردازندههای گرافیکی اخیر
- منسوخ کردن ویژگی isFallbackAdapter در GPUAdapter
- بهروزرسانیهای سپیدهدم
کروم ۱۳۷
- استفاده از نمای بافت برای اتصال خارجی بافت
- بافرها بدون مشخص کردن آفستها و اندازه، کپی میکنند
- بارگذاری یکنواخت گروه کاری WGSL با استفاده از اشارهگر به اتمی
- ویژگی powerPreference آداپتور GPU
- ویژگی سازگاری GPURequestAdapterOptions را حذف کنید.
- بهروزرسانیهای سپیدهدم
کروم ۱۳۶
- GPUAdapterInfo ویژگی آداپتور برگشتی است
- بهبود زمان کامپایل شیدر در D3D12
- تصاویر بوم را ذخیره و کپی کنید
- محدودیتهای حالت سازگاری را بردارید
- بهروزرسانیهای سپیدهدم
کروم ۱۳۵
- اجازه ایجاد طرح خط لوله با طرح گروه اتصال تهی
- اجازه دهید نماها از مرزهای اهداف رندر فراتر روند
- دسترسی آسانتر به حالت سازگاری آزمایشی در اندروید
- حذف محدودیت maxInterStageShaderComponents
- بهروزرسانیهای سپیدهدم
کروم ۱۳۴
- بهبود حجم کار یادگیری ماشین با زیرگروهها
- حذف پشتیبانی از انواع بافتهای قابل فیلتر شدن با شناور به عنوان بافتهای قابل ترکیب
- بهروزرسانیهای سپیدهدم
کروم ۱۳۳
- فرمتهای رأس اضافی unorm8x4-bgra و 1-component
- اجازه دهید محدودیتهای ناشناخته با مقدار نامشخص درخواست شوند
- تغییرات قوانین ترازبندی WGSL
- افزایش عملکرد WGSL با حذف
- استفاده از VideoFrame displaySize برای بافتهای خارجی
- مدیریت تصاویر با جهتهای غیر پیشفرض با استفاده از copyExternalImageToTexture
- بهبود تجربه توسعهدهنده
- فعال کردن حالت سازگاری با featureLevel
- پاکسازی ویژگیهای زیرگروه آزمایشی
- محدودیت maxInterStageShaderComponents را منسوخ کنید
- بهروزرسانیهای سپیدهدم
کروم ۱۳۲
- استفاده از نمای بافت
- ترکیب بافتهای شناور ۳۲ بیتی
- ویژگی اطلاعات آداپتور GPUDevice
- پیکربندی زمینه بوم با قالب نامعتبر، خطای جاوا اسکریپت ایجاد میکند
- فیلتر کردن محدودیتهای نمونهبرداری روی بافتها
- آزمایش زیرگروههای توسعهیافته
- بهبود تجربه توسعهدهنده
- پشتیبانی آزمایشی از فرمتهای بافت نرمالشدهی ۱۶ بیتی
- بهروزرسانیهای سپیدهدم
کروم ۱۳۱
- فواصل برش در WGSL
- تابع ()GPUCanvasContext getConfiguration
- اشکال هندسی اولیه نقطه و خط نباید دارای بایاس عمق باشند.
- توابع داخلی اسکن فراگیر برای زیرگروهها
- پشتیبانی آزمایشی از چند ترسیم غیرمستقیم
- گزینه کامپایل ماژول شیدر با محاسبات دقیق
- حذف تابع requestAdapterInfo() در کارت گرافیک GPUAdapter
- بهروزرسانیهای سپیدهدم
کروم ۱۳۰
- ترکیب دو منبعی
- بهبود زمان کامپایل شیدر در Metal
- منسوخ شدن تابع GPUAdapter requestAdapterInfo()
- بهروزرسانیهای سپیدهدم
کروم ۱۲۹
کروم ۱۲۸
- آزمایش با زیرگروهها
- منسوخ کردن تنظیم بایاس عمق برای خطوط و نقاط
- اگر preventDefault خطای ضبط نشده را پنهان کنید، هشدار DevTools
- ابتدا نمونهبرداری درونیابی WGSL و یا
- بهروزرسانیهای سپیدهدم
کروم ۱۲۷
- پشتیبانی آزمایشی از OpenGL ES در اندروید
- ویژگی اطلاعات GPUAdapter
- بهبودهای تعامل وباسمبلی
- بهبود خطاهای انکودر فرمان
- بهروزرسانیهای سپیدهدم
کروم ۱۲۶
- افزایش محدودیت maxTextureArrayLayers
- بهینهسازی آپلود بافر برای بکاند ولکان
- بهبود زمان کامپایل سایهزن
- بافرهای دستور ارسالی باید منحصر به فرد باشند
- بهروزرسانیهای سپیدهدم
کروم ۱۲۵
کروم ۱۲۴
- بافتهای ذخیرهسازی فقط خواندنی و خواندنی-نوشتنی
- پشتیبانی از کارگران خدماتی و کارگران اشتراکی
- ویژگیهای اطلاعات آداپتور جدید
- رفع اشکالات
- بهروزرسانیهای سپیدهدم
کروم ۱۲۳
- پشتیبانی از توابع داخلی DP4a در WGSL
- پارامترهای اشارهگر بدون محدودیت در WGSL
- شکر نحوی برای ارجاعزدایی از ترکیبات در WGSL
- حالت فقط خواندنی جداگانه برای استنسیل و جنبههای عمق
- بهروزرسانیهای سپیدهدم
کروم ۱۲۲
- گسترش دسترسی با حالت سازگاری (ویژگی در حال توسعه)
- افزایش محدودیت maxVertexAttributes
- بهروزرسانیهای سپیدهدم
کروم ۱۲۱
- پشتیبانی از WebGPU در اندروید
- برای کامپایل سایهزن در ویندوز، به جای FXC از DXC استفاده کنید
- کوئریهای برچسب زمانی در پاسهای محاسبه و رندر
- نقاط ورودی پیشفرض به ماژولهای سایهزن
- پشتیبانی از display-p3 به عنوان فضای رنگی GPUExternalTexture
- اطلاعات مربوط به تودههای حافظه
- بهروزرسانیهای سپیدهدم
کروم ۱۲۰
- پشتیبانی از مقادیر ممیز شناور ۱۶ بیتی در WGSL
- محدودیتها را کنار بزنید
- تغییرات در حالت عمق شابلون
- بهروزرسانیهای اطلاعات آداپتور
- کوئستیزاسیون کوئستسنجی کوئستسنجی کوئستسنجی با مهر زمانی
- ویژگیهای نظافت بهاری
کروم ۱۱۹
- بافتهای شناور ۳۲ بیتی قابل فیلتر
- قالب رأس unorm10-10-10-2
- فرمت بافت rgb10a2uint
- بهروزرسانیهای سپیدهدم
کروم ۱۱۸
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture()
- پشتیبانی آزمایشی از بافت ذخیرهسازی خواندنی-نوشتنی و فقط خواندنی
- بهروزرسانیهای سپیدهدم
کروم ۱۱۷
- بافر رأس را غیرفعال کنید
- گروه اتصال را غیرفعال کنید
- خطاهای ناشی از ایجاد خط لوله ناهمگام را هنگام از دست رفتن دستگاه، بیصدا کنید
- بهروزرسانیهای ایجاد ماژول سایهزن SPIR-V
- بهبود تجربه توسعهدهنده
- ذخیره سازی خطوط لوله با طرح بندی خودکار تولید شده
- بهروزرسانیهای سپیدهدم
کروم ۱۱۶
- ادغام WebCodecs
- دستگاه گمشده توسط
requestDevice()
از نوع GPUAdapter بازگردانده میشود. - اگر تابع
importExternalTexture()
فراخوانی شود، پخش ویدیو روان خواهد بود. - انطباق با مشخصات
- بهبود تجربه توسعهدهنده
- بهروزرسانیهای سپیدهدم
کروم ۱۱۵
- افزونههای زبان WGSL پشتیبانیشده
- پشتیبانی آزمایشی از Direct3D 11
- به طور پیش فرض از پردازنده گرافیکی مجزا با برق AC استفاده کنید
- بهبود تجربه توسعهدهنده
- بهروزرسانیهای سپیدهدم
کروم ۱۱۴
- بهینهسازی جاوا اسکریپت
- تابع ()getCurrentTexture روی بوم پیکربندی نشده، خطای InvalidStateError را نمایش میدهد.
- بهروزرسانیهای WGSL
- بهروزرسانیهای سپیدهدم