بافت های ذخیره سازی فقط خواندنی و خواندنی و نوشتنی
نوع اتصال بافت ذخیرهسازی به سایهزنها اجازه میدهد بدون افزودن TEXTURE_BINDING
از بافتهای ذخیرهسازی بخوانند و خواندن و نوشتن ترکیبی را در قالبهای خاصی انجام دهند. هنگامی که پسوند زبان WGSL "readonly_and_readwrite_storage_textures"
در navigator.gpu.wgslLanguageFeatures
وجود دارد، اکنون می توانید دسترسی GPUStorageTexture
هنگام ایجاد طرح بندی گروه bind روی "read-write"
یا "read-only"
تنظیم کنید. قبلاً این به "write-only"
محدود می شد.
سپس، کد سایه زن WGSL شما میتواند از واجد شرایط دسترسی read_write
و read
برای بافتهای ذخیرهسازی استفاده کند، توابع داخلی textureLoad()
و textureStore()
بر این اساس رفتار میکنند، و یک تابع داخلی textureBarrier()
برای همگامسازی دسترسیهای حافظه بافت در دسترس است. یک گروه کاری
توصیه میشود از دستورالعمل نیازمندیها برای سیگنالدهی پتانسیل غیرقابلحمل بودن با requires readonly_and_readwrite_storage_textures;
در بالای کد سایه زن WGSL شما. مثال زیر و شماره سپیده دم: 1972 را ببینید.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
پشتیبانی کارگران خدماتی و کارگران مشترک
WebGPU در Chrome پشتیبانی از کارگران وب را به سطح بعدی ارتقا میدهد و اکنون هم برای کارگران خدماتی و هم برای کارگران مشترک ارائه میدهد. میتوانید از سرویسدهندگان برای بهبود وظایف پسزمینه و قابلیتهای آفلاین، و از کارگران مشترک برای به اشتراکگذاری کارآمد منابع در بین اسکریپتها استفاده کنید. به شماره chromium:41494731 مراجعه کنید.
نمونه برنامه افزودنی کروم و افزونه کروم WebLLM را بررسی کنید تا نحوه استفاده از WebGPU را در یک سرویس دهنده برنامه افزودنی ببینید.
ویژگی های اطلاعات آداپتور جدید
اگر کاربر پرچم «ویژگیهای برنامهنویس WebGPU» را در chrome://flags/#enable-webgpu-developer-features
فعال کرده باشد، ویژگیهای اطلاعات آداپتور d3dShaderModel
و vkDriverVersion
غیر استاندارد اکنون با فراخوانی requestAdapterInfo()
در دسترس هستند. هنگامی که پشتیبانی می شود:
d3dShaderModel
حداکثر شماره مدل سایه زن D3D پشتیبانی شده است. به عنوان مثال، مقدار 62 نشان می دهد که درایور فعلی از HLSL SM 6.2 پشتیبانی می کند. رجوع به اسناد و صدور فجر: 1254 شود .vkDriverVersion
شماره نسخه مشخص شده توسط فروشنده درایور Vulkan است. به مستندات و مشکل کروم مراجعه کنید:327457605 .
رفع اشکال
ایجاد دو خط لوله با گروه های پیوندی منطبق با استفاده از layout: "auto"
، سپس ایجاد یک bindgroup با خط لوله اول، و استفاده از آن در خط لوله دوم، اکنون یک GPUValidationError را ایجاد می کند. اجازه دادن به آن یک اشکال پیاده سازی بود که اکنون با آزمایش های مناسب برطرف شده است. به شماره سپیده دم: 2402 مراجعه کنید.
به روز رسانی سحر
در Dawn API، پس از از بین رفتن دستگاه GPU، مجموعه پاسخگویی خطای ضبط نشده با wgpuDeviceSetUncapturedErrorCallback
اکنون فراخوانی نمی شود. این اصلاح Dawn را با مشخصات API جاوا اسکریپت و اجرای Blink هماهنگ می کند. به شماره سپیده دم: 2459 مراجعه کنید.
این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.
چه چیزی در 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
- به روز رسانی سحر