מרקמי אחסון לקריאה בלבד ולקריאה-כתיבה
סוג הקישור של טקסטורות האחסון מאפשר לשיחות לקרוא מטקסטורות האחסון בלי להוסיף את השימוש ב-TEXTURE_BINDING
, ולבצע פעולות קריאה וכתיבה מעורבות בפורמטים מסוימים. כשתוסף השפה של WGSL "readonly_and_readwrite_storage_textures"
מופיע ב-navigator.gpu.wgslLanguageFeatures
, אפשר עכשיו להגדיר הרשאת גישה GPUStorageTexture
ל-"read-write"
או ל-"read-only"
בזמן יצירת פריסה של קבוצת קישור. בעבר, האפשרות הזו הייתה מוגבלת ל-"write-only"
.
לאחר מכן, קוד ה-WGSL של ה-shader יכול להשתמש במאפיין הגישה read_write
ו-read
עבור טקסטורות אחסון, הפונקציות המובנות textureLoad()
ו-textureStore()
פועלות בהתאם, ופונקציה מובנית חדשה textureBarrier()
זמינה לסנכרון של גישות לזיכרון טקסטורה בקבוצת עבודה.
מומלץ להשתמש בהנחיה של requires כדי לסמן את האפשרות לבעיות בהעברה באמצעות requires readonly_and_readwrite_storage_textures;
בחלק העליון של קוד ה-WGSL של ה-shader. אפשר לראות את הדוגמה הבאה ואת הבעיה dawn: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.
תמיכה בקובצי שירות (service worker) ובעובדים משותפים
WebGPU ב-Chrome מעביר את התמיכה ב-web workers לשלב הבא, ומציע עכשיו תמיכה גם ב-service workers וגם ב-shared workers. אפשר להשתמש בקובצי שירות (service workers) כדי לשפר את המשימות ברקע ואת היכולות אופליין, ובעובדים משותפים (shared workers) כדי לשתף משאבים בצורה יעילה בין סקריפטים. בעיה chromium:41494731
כדאי לעיין בתוסף לדוגמה ל-Chrome ובתוסף WebLLM ל-Chrome כדי לראות איך משתמשים ב-WebGPU ב-service worker של תוסף.
מאפיינים חדשים של פרטי המתאם
מאפייני המידע הלא סטנדרטיים של המתאם d3dShaderModel
ו-vkDriverVersion
זמינים עכשיו בקריאה ל-requestAdapterInfo()
אם המשתמש הפעיל את הדגל 'WebGPU Developer Features' ב-chrome://flags/#enable-webgpu-developer-features
. מתי התכונה נתמכת:
הערך
d3dShaderModel
הוא מספר המודל המקסימלי של שפת שדרוג הקוד (shader) של D3D שנתמך. לדוגמה, הערך 62 מציין שהדרייבר הנוכחי תומך ב-HLSL SM 6.2. במסמכי התיעוד ובבעיה dawn:1254.השדה
vkDriverVersion
הוא מספר הגרסה של מנהל ה-Vulkan שצוין על ידי הספק. במסמכי התיעוד ובבעיה chromium:327457605.
תיקוני באגים
יצירת שני צינורות עיבוד נתונים עם קבוצות קישור תואמות באמצעות layout: "auto"
, ואז יצירת קבוצת קישור עם צינור עיבוד נתונים ראשון ושימוש בו בצינור עיבוד הנתונים השני, מעלה עכשיו GPUValidationError. האירוע היה באג בהטמעה שתוקן עכשיו באמצעות בדיקות מתאימות. ראו issue dawn:2402.
עדכונים של Dawn
ב-Dawn API, פונקציית ה-callback של השגיאה שלא תועדה שהוגדרה באמצעות wgpuDeviceSetUncapturedErrorCallback
לא נקראת עכשיו אחרי אובדן מכשיר ה-GPU. התיקון הזה תואם את Dawn למפרט של JavaScript API ולהטמעה של Blink. בעיה dawn:2459
הסקירה הזו כוללת רק חלק מהנקודות העיקריות. אתם מוזמנים לעיין ברשימה המלאה של ההתחייבויות.
מה חדש ב-WebGPU
רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.
Chrome 130
- שילוב של שני מקורות
- שיפורי זמן הידור של שפות Shader ב-Metal
- הוצאה משימוש של requestAdapterInfo() של GPUAdapter
- עדכונים לגבי זריחה
Chrome 129
Chrome 128
- ניסוי עם תתי-קבוצות
- הוצאה משימוש של הגדרת הטיה של עומק לקווים ולנקודות
- הסתרת אזהרת DevTools על שגיאה שלא תועדה אם preventDefault
- WGSL מבצעת אינטרפולציה של הדגימה קודם ואז
- עדכונים לגבי Dawn
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים ב-WebAssembly יכולת פעולה הדדית
- שיפור שגיאות של מקודד הפקודות
- עדכונים לגבי Dawn
Chrome 126
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאה למאגר לצד העורפי של Vulkan
- שיפורים בזמן הידור של שגיאות (shader)
- מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
- עדכונים לגבי זריחה
Chrome 125
Chrome 124
- טקסטורות אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers וב-Shared Workers
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים לגבי זריחה
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים של מצביע ללא הגבלה ב-WGSL
- תחביר פשוט יותר לביטול ההפניה למשתנים מורכבים ב-WGSL
- מצב נפרד לקריאה בלבד של אספקטים של תבנית ועומק
- עדכונים לגבי זריחה
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים לגבי Dawn
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC לצורך הידור של שגיאות ב-Windows
- שאילתות של חותמות זמן בשלבי המחשוב והעיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולי שַדְר (shader)
- תמיכה ב-Display-p3 כמרחב צבעים של GPUExternalTexture
- מידע על ערמות זיכרון
- עדכונים לגבי Dawn
Chrome 120
- תמיכה בערכים של נקודה צפה (floating-point) באורך 16 ביט ב-WGSL
- מעבר למגבלות
- שינויים במצב של סטאק עומק
- עדכונים של פרטי המתאם
- קידוד נתונים של שאילתות עם חותמות זמן
- תכונות לניקוי האביב
Chrome 119
- טקסטורות של מספרים ממשיים (float) ב-32 ביט שניתן לסנן
- פורמט unorm10-10-10-2 קודקוד
- פורמט טקסטורה של rgb10a2uint
- עדכונים לגבי Dawn
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית במרקם האחסון לקריאה בלבד ולקריאה בלבד
- עדכונים לגבי Dawn
Chrome 117
- ביטול ההגדרה של מאגר הנקודות
- ביטול ההגדרה של קבוצת הקישור
- השתקת שגיאות מיצירה של צינור עיבוד נתונים אסינכרוני כשהמכשיר אבד
- עדכונים לגבי יצירת מודולים של שגיאות SPIR-V
- שיפור חוויית המפתחים
- אחסון צינורות עיבוד נתונים במטמון עם פריסה שנוצרה באופן אוטומטי
- עדכונים לגבי זריחה
Chrome 116
- שילוב WebCodecs
- מכשיר שאבד שהוחזר על ידי GPUAdapter
requestDevice()
- שמירה על הפעלה חלקה של סרטונים אם מתבצעת קריאה ל-
importExternalTexture()
- תאימות למפרט
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 115
- תוספים נתמכים לשפות של WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחשמל AC
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() ב-Canvas לא מוגדר מפעילה שגיאה מסוג InvalidStateError
- עדכונים ל-WGSL
- עדכונים לגבי Dawn