מה חדש ב-WebGPU (גרסה 136 של Chrome)

François Beaufort
François Beaufort

תאריך פרסום: 23 באפריל 2025

המאפיין isFallbackAdapter של GPUAdapterInfo

המאפיין הבוליאני isFallbackAdapter של GPUAdapterInfo מציין אם ל-GPUAdapter יש מגבלות משמעותיות בביצועים בתמורה לתאימות רחבה יותר, להתנהגות צפויה יותר או לשיפור הפרטיות. היה צורך להוסיף את המאפיין הזה כי לספריות שמקבלות אובייקטים של GPUDevice שסופקו על ידי המשתמש לא הייתה גישה למידע הזה דרך המאפיין adapterInfo ב-GPUDevice. אפשר לעיין בדוגמה הבאה ובבעיה מספר 403172841.

const adapter = await navigator.gpu.requestAdapter();

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

מכיוון ש-Chrome עדיין לא תומך במתאמי חזרה, הערך של isFallbackAdapter הוא תמיד false במכשירי המשתמשים. אנחנו בודקים אם אפשר להוציא משימוש את המאפיין isFallbackAdapter של GPUAdapter ולהסיר אותו. אפשר לעיין בכוונה להשיק.

שיפורים בזמן הקימפול של shader ב-D3D12

צוות Chrome ממשיך לשפר את Tint, מהדר שפת הצללה של WebGPU, על ידי הוספת ייצוג ביניים (IR) למכשירים שתומכים ב-WebGPU עם קצה עורפי של D3D12. ה-IR הזה, שממוקם בין עץ התחביר המופשט (AST) של Tint לבין כותב העורף של HLSL, יהפוך את הקומפיילר ליעיל יותר וקל יותר לתחזוקה, ובסופו של דבר יועיל למפתחים ולמשתמשים. בבדיקות ראשוניות, הגרסה החדשה של Tint מהירה עד פי 10 בתרגום של הצללות WGSL של Unity ל-HLSL.

תרשים זרימה שמראה את תהליך ההמרה של קוד הצללה של WGSL להוראות ברמה נמוכה של GPU.
יצירת צינור עיבוד נתונים של רינדור ב-Windows.

השיפורים האלה – שכבר זמינים ב-Android, ב-ChromeOS וב-macOS – מתרחבים בהדרגה למכשירי Windows שתומכים ב-WebGPU עם קצה העורף D3D12. מידע נוסף

שמירה והעתקה של תמונות בלוח הציור

משתמשי Chrome יכולים עכשיו ללחוץ לחיצה ימנית על קנבס WebGPU ולגשת לאפשרויות בתפריט ההקשר שמירת תמונה בשם… או העתקת תמונה. ראו בעיה מספר 40902474.

בדף
המשתמש בחר באפשרות 'שמירת התמונה בשם…' בתפריט ההקשר.

הסרת ההגבלות של מצב תאימות

תכונת "core-features-and-limits" הניסיונית, כשהיא זמינה ב-GPUDevice, מבטלת את כל ההגבלות של מצב התאימות (תכונות ומגבלות) כשמפעילים את הדגל chrome://flags/#enable-unsafe-webgpu. ראו issue 395855517.

בקשה ל-GPUAdapter עם האפשרות featureLevel: "compatibility" מרמזת לדפדפן לבחור במצב התאימות הניסיוני של WebGPU. אם הפעולה בוצעה ללא שגיאות, המתאם שמתקבל הוא 'תאימות-ברירת מחדל'. אחרת, זוהי "ברירת מחדל של ליבה", שזהה לשימוש באפשרות featureLevel: "core". בנוסף, קריאה ל-requestDevice() ללא requiredFeatures ו-requiredLimits מבקשת GPUDevice עם היכולות שמוגדרות כברירת מחדל ב-GPUAdapter.

מתאמים שמוגדרים כברירת מחדל לליבה תמיד תומכים בתכונה "core-features-and-limits", והיא מופעלת אוטומטית ב-GPUDevices שנוצרו מהם. מתאמים שמוגדרים כברירת מחדל לתאימות עשויים לתמוך בתכונה "core-features-and-limits", ואפשר לבקש אותה ב-GPUDevices שנוצרו מהם. שני סוגי המתאמים עשויים לתמוך גם בתכונות כמו "float32-blendable", שהיא אופציונלית גם במצב ליבה וגם במצב תאימות.

הדוגמה הבאה היא לאפליקציה שנדרשת לה הרשאה "float32-blendable" והיא תומכת בשימוש בתכונות ליבה אם הן זמינות, אבל משתמשת רק בתכונות תאימות אם תכונות הליבה לא זמינות.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

המאפיינים הניסיוניים featureLevel ו-isCompatibilityMode של GPUAdapter הוסרו לטובת התכונה "core-features-and-limits". מידע נוסף

עדכונים של Dawn

השם של ה-enum callback statusInstanceDropped שונה ל-CallbackCancelled כדי להבהיר שהקריאה החוזרת בוטלה, אבל יכול להיות שעדיין מתבצע עיבוד ברקע שמשויך לאירוע, כמו קומפילציה של צינורות. השם החדש הוא כללי יותר, למקרה שיוסף בהמשך מנגנון ביטול אחר. אפשר לעיין בבעיה מספר 520.

הסוג wgpu::PopErrorScopeStatus::EmptyStack enum שמציין שלא הייתה אפשרות להסיר את מחסנית היקף השגיאה קיבל את השם wgpu::PopErrorScopeStatus::Error (שמתאים גם באופן כללי יותר). עכשיו הקריאה החוזרת (callback) כוללת גם הודעת הסבר על השגיאה, כדי לעזור בניפוי הבאגים. אפשר לעיין בבעיה מספר 369.

המידע הזה כולל רק נקודות עיקריות. רשימה מלאה של קומיטים

מה חדש ב-WebGPU

רשימה של כל הנושאים שמופיעים בסדרת המאמרים מה חדש ב-WebGPU.

‫Chrome 149-150

‫Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

‫Chrome 128

Chrome 127

Chrome 126

‫Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113