מה חדש ב-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 backend, ישפר את היעילות והתחזוקה של הקומפיילר, ובסופו של דבר יועיל למפתחים ולמשתמשים. בבדיקות ראשוניות, הגרסה החדשה של 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. מידע נוסף

כשמבקשים 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". למידע נוסף

עדכונים לגבי שעות השחר

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

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

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

מה חדש ב-WebGPU

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

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