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