מה חדש ב-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 הוא תמיד שגוי במכשירים של המשתמשים. אנחנו בודקים אם אפשר להוציא משימוש ולהסיר את המאפיין isFallbackAdapter של GPUAdapter. כוונת שליחה

שיפורים בזמן הידור של שגיאות ב-D3D12

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

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

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

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

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

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

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

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

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

מתאמים שמוגדרים כברירת מחדל ל-Core תמיד תומכים בתכונה "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". בעיה מס' 395855516

עדכונים בנושא Dawn

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

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

כאן מפורטות רק כמה מהנקודות העיקריות. רשימת ההצהרות המלאה

מה חדש ב-WebGPU

רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.

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