תאריך פרסום: 29 בינואר 2025
פורמטים נוספים של קודקודים עם רכיב אחד ו-unnorm8x4-bgra
נוספו פורמט הנקודה "unorm8x4-bgra"
ופורמטים של נקודות עם רכיב אחד: "uint8"
, "sint8"
, "unorm8"
, "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
ו-"float16"
.
פורמט הנקודות "unorm8x4-bgra"
מאפשר לטעון בצורה נוחה יותר צבעים של נקודות בקידוד BGRA תוך שמירה על אותו שדה. בנוסף, פורמט קודקוד עם רכיב אחד מאפשר לבקש רק את הנתונים הנחוצים, בעוד שבעבר נדרשו לפחות פי שניים יותר נתונים עבור סוגי נתונים של 8 ו-16 ביט. אפשר לעיין ברשומה ב-chromestatus ובבעיה 376924407.
מתן הרשאה לבקש הגבלות לא ידועות עם ערך לא מוגדר
כדי שה-WebGPU API יהיה פחות שברירי במהלך הפיתוח שלו, עכשיו אפשר לבקש מגבלות לא ידועות עם הערך undefined
כשמבקשים מכשיר GPU. לדוגמה, האפשרות הזו מועילה בקוד האפליקציה הבא, שבו adapter.limits.someLimit
יכול להיות undefined
אם someLimit
כבר לא קיים. spec PR 4781
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
});
שינויים בכללי ההתאמה של WGSL
אי אפשר יותר לספק ערך יישור קטן מדי למאפיין של מבנה, כי עכשיו נדרש ש-@align(n)
יחלק את RequiredAlignOf
לכל המבנים. השינוי המשמעותי הזה מפשט את השימוש בשפת WGSL ועוזר לשפר את התאימות שלה ל-Firefox ול-Safari. בבקשת העריכה (PR) של המפרט אפשר למצוא קוד לדוגמה שמראה את ההבדלים בין המהדרים של Tint, Naga ו-WebKit.
שיפור בביצועים של WGSL באמצעות ביטול נתונים
בגלל ירידה משמעותית בביצועים שנצפתה בזמן עיבוד גרפי של אפקט מורכב של שיקוף במרחב המסך (SSR), ההטמעה של הצהרת הביטול משתמשת בסמינטיקה שסופקו על ידי הפלטפורמה כדי להוריד את הקריאה לפעולה לעזרה כשהיא זמינה. כך אפשר לשפר את הביצועים של שגיאות שמשתמשות ב-discard. בעיה מס' 372714384
שימוש ב-displaySize של VideoFrame למרקמים חיצוניים
צריך להשתמש במאפיינים displayWidth
ו-displayHeight
כגודל המשוער של GPUExternalTexture כשמייבאים VideoFrame בהתאם למפרט WebGPU. עם זאת, הגודל הגלוי היה בשימוש שגוי וגרם לבעיות כשניסינו להשתמש ב-textureLoad()
ב-GPUExternalTexture. השגיאה תוקנה. בעיה מס' 377574981
טיפול בתמונות בכיוונים שאינם ברירת המחדל באמצעות copyExternalImageToTexture
שיטת copyExternalImageToTexture()
GPUQueue משמשת להעתקת התוכן של תמונה או קנבס למרקם. עכשיו הוא מטפל כראוי בתמונות עם כיוונים שאינם כיוון ברירת המחדל. בעבר, המצב היה שונה כשהמקור היה ImageBitmap עם imageOrientation
"from-image"
או תמונה עם כיוון שונה מברירת המחדל. בעיה מס' 384858956
שיפור חוויית המפתחים
יכול להיות שתופתע כשהערך של adapter.limits
יהיה גבוה, אבל לא תדעו שצריך לבקש במפורש מגבלה גבוהה יותר כשמבקשים מכשיר GPU. אם לא תעשו זאת, יכול להיות שתגיעו למגבלות באופן בלתי צפוי בשלב מאוחר יותר.
כדי לעזור לכם, הוספנו להודעות השגיאה רמזים שמציינים שצריך לבקש במפורש מגבלה גבוהה יותר אם לא צוינה מגבלה ב-requiredLimits
בזמן הקריאה ל-requestDevice()
. בעיה מס' 42240683
בדוגמה הבאה מוצגת הודעת שגיאה משופרת שמופיעה ביומן במסוף DevTools כשיוצרים מאגר נתונים של GPU בגודל שחורג מהמגבלה שמוגדרת כברירת מחדל למכשיר לגבי גודל המאגר המקסימלי.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit. - While calling [Device].CreateBuffer([BufferDescriptor]).
הפעלת מצב תאימות באמצעות featureLevel
עכשיו אפשר לבקש מתאם GPU במצב תאימות ניסיוני על ידי הגדרת האפשרות הסטנדרטית featureLevel
לערך "compatibility"
. המחרוזות "core"
(ברירת המחדל) ו-"compatibility"
הן הערכים היחידים שמותר להשתמש בהם. אפשר לעיין בדוגמה הבאה ובבקשת התיקון 4897.
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
}
האפשרות featureLevel
מחליפה את האפשרות compatibilityMode
שאינה סטנדרטית, והמאפיין featureLevel
שאינו סטנדרטי מחליף את המאפיין isCompatibilityMode
.
מכיוון שהתכונה עדיין נמצאת בגרסת ניסוי, צריך להריץ את Chrome עם הדגל 'תמיכה לא בטוחה ב-WebGPU' בכתובת chrome://flags/#enable-unsafe-webgpu
בינתיים. אתם יכולים לנסות את הכלי באתר webgpureport.org.
ניקוי של תכונות ניסיוניות של קבוצות משנה
התכונות הניסיוניות של קבוצות המשנה "chromium-experimental-subgroups"
ו-"chromium-experimental-subgroup-uniform-control-flow"
יוצאו משימוש. בעיה מס' 377868468
התכונה הניסיונית "subgroups"
היא כל מה שדרוש לכם עכשיו כשאתם מבצעים ניסויים עם קבוצות משנה. התכונה הניסיונית "subgroups-f16"
הוצאה משימוש ויוסר בקרוב. אפשר להשתמש בערכי f16 עם קבוצות משנה כשהבקשה של האפליקציה כוללת גם את התכונות "shader-f16"
וגם את התכונות "subgroups"
. בעיה מס' 380244620
הוצאה משימוש של המגבלה maxInterStageShaderComponents
המגבלה maxInterStageShaderComponents
הוצאה משימוש בגלל שילוב של גורמים:
- יתירות עם
maxInterStageShaderVariables
: המגבלה הזו כבר משמשת למטרה דומה, היא קובעת את כמות הנתונים המועברים בין שלבי ה-shader. - אי-התאמות קלות: יש הבדלים קלים באופן שבו שתי המגבלות מחושבות, אבל ההבדלים האלה הם קלים וניתן לנהל אותם ביעילות במסגרת המגבלה
maxInterStageShaderVariables
. - פשטות: הסרת
maxInterStageShaderComponents
משפרת את ממשק ה-shader ומפחיתה את המורכבות עבור המפתחים. במקום לנהל שתי מגבלות נפרדות עם הבדלים עדינים, הם יכולים להתמקד במגבלהmaxInterStageShaderVariables
שמתאימה יותר לשם שלה ומקיפה יותר.
המטרה היא להסיר אותו לחלוטין בגרסה 135 של Chrome. אפשר לעיין בכוונה להוצאה משימוש ובבעיה 364338810.
עדכונים של Dawn
ה-wgpu::Device::GetAdapterInfo(adapterInfo)
מאפשר לקבל את פרטי המתאם ישירות מ-wgpu::Device
. בעיה מס' 376600838
שם המבנה WGPUProgrammableStageDescriptor
השתנה ל-WGPUComputeState
כדי שהמצב של המחשוב יהיה עקבי עם המצבים של הנקודות והשברים. בעיה מס' 379059434
ערך ה-enum wgpu::VertexStepMode::VertexBufferNotUsed
הוסר. עכשיו אפשר להשתמש ב-{.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
כדי לציין פריסה של מאגר קודקודים שלא בשימוש. בעיה מס' 383147017
כאן מפורטות רק כמה מהנקודות העיקריות. רשימת ההצהרות המלאה
מה חדש ב-WebGPU
רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.
Chrome 133
- פורמטים נוספים של קודקודים מסוג unorm8x4-bgra וקודקודים עם רכיב אחד
- איך מאפשרים לבקש מגבלות לא ידועות עם ערך לא מוגדר
- שינויים בכללי היישור של WGS84
- שיפור בביצועים של WGSL באמצעות ביטול
- שימוש ב-displaySize של VideoFrame לצורך טקסטורות חיצוניות
- טיפול בתמונות עם כיוונים שאינם ברירת המחדל באמצעות copyExternalImageToTexture
- שיפור חוויית המפתחים
- הפעלת מצב תאימות באמצעות featureLevel
- ניקוי של תכונות ניסיוניות של קבוצות משנה
- הוצאה משימוש של המגבלה maxInterStageShaderComponents
- עדכונים של Dawn
Chrome 132
- שימוש בתצוגת טקסטורה
- מיזוג של מרקמים מסוג float ב-32 ביט
- המאפיין adapterInfo של GPUDevice
- הגדרת הקשר של לוח הציור בפורמט לא חוקי גורמת לשגיאת JavaScript
- הגבלות על סינון של טקסטורות
- ניסוי עם תת-קבוצות מורחבות
- שיפור חוויית המפתחים
- תמיכה ניסיונית בפורמטים של טקסטורות מנורמלות ב-16 ביט
- עדכונים של Dawn
Chrome 131
- חיתוך מרחקים ב-WGSL
- GPUCanvasContext getConfiguration()
- אסור שתהיה הטיה לעומק בפרימיטיבים של קווים ונקודות
- פונקציות מובנות של סריקה כוללת לקבוצות משנה
- תמיכה ניסיונית בקריאה עקיפה עם כמה משיכות
- Shader module compilation option strict math
- הסרת השיטה requestAdapterInfo() של GPUAdapter
- עדכונים של Dawn
Chrome 130
- שילוב של שני מקורות
- שיפורי זמן הידור של שפות Shader ב-Metal
- הוצאה משימוש של requestAdapterInfo() של GPUAdapter
- עדכונים של Dawn
Chrome 129
Chrome 128
- ניסוי עם קבוצות משנה
- הוצאה משימוש של הגדרת הטיה של עומק לקווים ולנקודות
- הסתרת אזהרת DevTools על שגיאה שלא תועדה אם preventDefault
- WGSL מבצעת אינטרפולציה של הדגימה קודם ואז
- עדכונים של Dawn
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים בתאימות הדדית של WebAssembly
- שיפור שגיאות של מקודד הפקודות
- עדכונים של Dawn
Chrome 126
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאה למאגר לצד העורפי של Vulkan
- שיפורים בזמן הידור של שגיאות (shaders)
- מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
- עדכונים של Dawn
Chrome 125
Chrome 124
- טקסטורות אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers וב-Shared Workers
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים של Dawn
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים של מצביע ללא הגבלה ב-WGSL
- תחביר פשוט יותר לביטול ההפניה למשתנים מורכבים ב-WGSL
- מצב נפרד לקריאה בלבד של אספקטים של תבנית ועומק
- עדכונים של Dawn
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
- שיפור חוויית המפתחים
- אחסון צינורות עיבוד נתונים במטמון עם פריסה שנוצרה באופן אוטומטי
- עדכונים של Dawn
Chrome 116
- שילוב WebCodecs
- מכשיר שאבד שהוחזר על ידי GPUAdapter
requestDevice()
- שמירה על הפעלה חלקה של סרטונים אם מתבצעת קריאה ל-
importExternalTexture()
- תאימות למפרט
- שיפור חוויית המפתחים
- עדכונים של Dawn
Chrome 115
- תוספים נתמכים לשפת WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחשמל AC
- שיפור חוויית המפתחים
- עדכונים של Dawn
Chrome 114
- אופטימיזציה של JavaScript
- הקריאה getCurrentTexture() ב-Canvas לא מוגדר מפעילה את השגיאה InvalidStateError
- עדכונים מ-WGSL
- עדכונים של Dawn