آزمایش با زیرگروهها
ویژگی زیرگروهها، موازیسازی در سطح SIMD را امکانپذیر میکند و به رشتههای درون یک گروه اجازه میدهد تا با یکدیگر ارتباط برقرار کرده و عملیات ریاضی جمعی (مثلاً محاسبه مجموع ۱۶ عدد) را انجام دهند. این امر، شکلی بسیار کارآمد از اشتراکگذاری دادههای بین رشتهای را فراهم میکند.
یک پیادهسازی حداقلی از پیشنهاد زیرگروهها برای آزمایش محلی پشت پرچم «پشتیبانی از WebGPU ناامن» در chrome://flags/#enable-unsafe-webgpu
در دسترس است.
همچنین میتوانید با ثبتنام در نسخه آزمایشی origin، زیرگروههایی را در سایت خود با کاربران واقعی امتحان کنید. برای دستورالعملهای نحوه آمادهسازی سایت خود برای استفاده از نسخههای آزمایشی origin، بخش « شروع با نسخههای آزمایشی origin» را مطالعه کنید. نسخه آزمایشی origin از کروم ۱۲۸ تا ۱۳۱ (تا پایان ۱۹ فوریه ۲۰۲۵) اجرا خواهد شد. به «قصد آزمایش» مراجعه کنید.
وقتی ویژگی "subgroups"
در یک GPUAdapter
موجود است، از یک GPUDevice
با این ویژگی درخواست کنید تا پشتیبانی از زیرگروهها را در WGSL دریافت کند و محدودیتهای minSubgroupSize
و maxSubgroupSize
آن را بررسی کنید.
همچنین باید این افزونه را در کد WGSL خود با استفاده enable subgroups;
به صراحت فعال کنید. وقتی فعال شود، به موارد زیر دسترسی خواهید داشت:
-
subgroup_invocation_id
: یک مقدار داخلی برای اندیس نخ درون زیرگروه. -
subgroup_size
: یک مقدار داخلی برای دسترسی به اندازه زیرگروه. -
subgroupBallot(value)
: مجموعهای از فیلدهای بیتی را برمیگرداند که در آن بیت مربوط بهsubgroup_invocation_id
در صورتی کهvalue
برای آن فراخوانی فعال درست باشد، ۱ و در غیر این صورت ۰ است. -
subgroupBroadcast(value, id)
:value
را از فراخوانی کهid
باsubgroup_invocation_id
مطابقت دارد، به تمام فراخوانیهای درون زیرگروه پخش میکند. توجه:id
باید یک ثابت زمان کامپایل باشد.
توابع داخلی بیشتری مانند subgroupAdd
، subgroupAll
، subgroupElect
، subgroupShuffle
در آینده اضافه خواهند شد. به شماره 354738715 مراجعه کنید.
برای فعال کردن f16 در عملیات زیرگروهها، یک GPUDevice
با ویژگیهای "subgroups"
، "subgroups-f16"
و "shader-f16"
درخواست کنید، سپس آن را در کد WGSL خود با enable f16, subgroups, subgroups_f16;
فعال کنید.
قطعه کد زیر، مبنایی برای بررسی و کشف پتانسیل زیرگروهها فراهم میکند.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
// Explicitly request subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
var<workgroup> wgmem : u32;
@group(0) @binding(0)
var<storage, read> inputs : array<u32>;
@group(0) @binding(1)
var<storage, read_write> output : array<u32>;
@compute @workgroup_size(64)
fn main(@builtin(subgroup_size) subgroupSize : u32,
@builtin(subgroup_invocation_id) id : u32,
@builtin(local_invocation_index) lid : u32) {
// One thread per workgroup writes the value to workgroup memory.
if (lid == 0) {
wgmem = inputs[lid];
}
workgroupBarrier();
var v = 0u;
// One thread per subgroup reads the value from workgroup memory
// and shares that value with every other thread in the subgroup
// to reduce local memory bandwidth.
if (id == 0) {
v = wgmem;
}
v = subgroupBroadcast(v, 0);
output[lid] = v;
}`,
});
// Send the appropriate commands to the GPU...
منسوخ کردن تنظیم بایاس عمق برای خطوط و نقاط
تغییر مشخصات WebGPU باعث میشود که تنظیم depthBias
، depthBiasSlopeScale
و depthBiasClamp
روی مقداری غیر صفر، زمانی که توپولوژی یک خط لوله رندر از نوع خط یا نقطه است، یک خطای اعتبارسنجی ایجاد شود. برای اینکه به توسعهدهندگان زمان کافی برای بهروزرسانی کد خود داده شود، هشداری در کنسول DevTools در مورد این اعتبارسنجی قریبالوقوع نشان داده میشود و در این شرایط مقادیر را نیز به 0 تغییر میدهد. به شماره 352567424 مراجعه کنید.
اگر preventDefault خطای ضبط نشده را پنهان کنید، هشدار DevTools
در کنسول DevTools، اگر یک شنونده رویداد برای uncapturederror
ثبت شده باشد و متد Event preventDefault()
در فراخوانی شنونده رویداد فراخوانی شده باشد، هشدارهای مربوط به رویدادهای uncapturederror
دیگر نمایش داده نمیشوند. این رفتار با مدیریت رویداد در جاوا اسکریپت مطابقت دارد. به مثال زیر و مشکل ۴۰۲۶۳۶۱۹ مراجعه کنید.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
device.addEventListener("uncapturederror", (event) => {
// Prevents browser warning to show up in the DevTools Console.
event.preventDefault();
// TODO: Handle event.error
});
ابتدا نمونهبرداری درونیابی WGSL و یا
ویژگی interpolate
WGSL به شما امکان میدهد درونیابی دادههای ورودی/خروجی تعریفشده توسط کاربر را مدیریت کنید. اکنون، پارامترهای نمونهبرداری درونیابی جدید first
(پیشفرض) و either
کنترل بیشتری به شما میدهند: first
از مقدار اولین رأس اولیه استفاده میکند، در حالی که either
اجازه میدهد یا اولین یا آخرین رأس. به شماره 340278447 مراجعه کنید.
بهروزرسانیهای سپیدهدم
پیادهسازی WGPUFuture متعلق به Dawn برای مدیریت عملیات ناهمزمان اکنون کامل شده است. مفاهیم کلیدی شامل wgpuInstanceProcessEvents برای پردازش رویدادهای فرصتطلبانه و WGPUCallbackMode برای تعریف مکانهای فراخوانی مجدد است. WGPUFuture رویدادهای یکباره با طول عمر نامحدود را مشخص میکند و wgpuInstanceWaitAny منتظر تکمیل هرگونه رویداد آینده یا یک مهلت زمانی است. به شماره 42240932 مراجعه کنید.
مقدار CompositeAlphaMode::Auto
اکنون توسط Surface::GetCapabilities()
گزارش نمیشود. این مقدار هنوز معتبر است و معادل Surface::GetCapabilities().alphaMode[0]
میباشد. به شماره ۲۹۲ مراجعه کنید.
بخش پشتی OpenGL اکنون از Surface
با یک نقطه عطف y-flip برای هر فراخوانی Present()
پشتیبانی میکند. به شماره 344814083 مراجعه کنید.
متد Adapter::GetProperties()
به نفع استفاده از Adapter::GetInfo()
منسوخ شده است.
جاسوانت، یک مشارکتکننده خارجی، تمام فایلهای CMake را بازنویسی کرده است که بهروزرسانی آنها را آسانتر کرده و امکان پیشساختها را فراهم میکند. راهنمای شروع سریع برای استفاده از Dawn در پروژههای CMake را بررسی کنید.
این فقط برخی از نکات برجسته کلیدی را پوشش میدهد. لیست جامع کامیتها را بررسی کنید.
ویژگیهای جدید 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
- بهروزرسانیهای سپیدهدم