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