מה חדש ב-WebGPU (Chrome122)

François Beaufort
François Beaufort

מספר התכונות של WebGPU אולי ייראה מעט דל בשלב זה, אבל החידושים הגדולים ממש מעבר לפינה! הגרסאות הבאות יכללו תכונות כגון DP4a, מרקמים של אחסון לקריאה בלבד וקריאה-כתיבה, בקרת גובה-רוחב נפרדת בשבלונה ובעומק, עיבוד לפרוסות מרקם תלת-ממדי ושיפורים בהידור של תוכנת הצללה.

בינתיים, אפשר ללמוד איך לשפר את בדיקות מודל ה-Web AI בעזרת התמיכה ב-WebGPU וב-WebGL ב-Headless Chrome ולראות למה WebGPU מושבת או לא פועל ב-Chrome.

הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה שנמצאת בפיתוח)

WebGPU תואם היטב לממשקי API של גרפיקה מודרנית (Vulkan, Metal ו-D3D12), אבל בחלק מהמכשירים אין תמיכה בתכונות האלה. הדבר מגביל את הנגישות של WebGPU, במיוחד בפלטפורמות כמו Windows (ב-31% ממשתמשי Chrome אין את D3D11.1 ואילך), ב-Android (ב-23% אין את Vulkan 1.1 ואילך) ואת ChromeOS (הטמעה של Vulkan במגמת עלייה).

צוות Chrome עובד על מצב תאימות ב-WebGPU כדי לטפל בבעיה הזו, באמצעות הצעת גרסה של WebGPU מוגבלת במקצת, שפועלת על ממשקי API ישנים יותר כמו D3D11 ו-OpenGL ES. כך יורחב בסיס המשתמשים הפוטנציאליים של WebGPU.

חשוב לציין שאפליקציות שמשתמשות במצב תאימות יישארו אפליקציות WebGPU תקפות לחלוטין. מכשירים שאין בהם תמיכה במצב תאימות יוגדרו בצורה חלקה כברירת מחדל למתאם הליבה של WebGPU, מה שמבטיח נוחות שימוש רחבה.

תרשים של מצב התאימות ל-WebGPU.
מצב התאימות ל-WebGPU מורחב.

אם יש לכם שאלות, מומלץ לעיין בהצעה ובתגובה.

הגדלת המגבלה של maxVertexAttributes

כברירת מחדל, מספר המאפיינים המקסימלי הכולל במאגרי אחסון זמניים הוא 16. עכשיו אפשר לבקש עד 30 תכונות באמצעות המגבלה של maxVertexAttributes, כשהאפשרות נתמכת. אפשר לעיין בדוגמה הבאה ולעלות השחר:2223.

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

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertext attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

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

הוספנו מתג חדש של מופע שנקרא 'expose_wgsl_experimental_features' כדי שהמכונה תחשוף רק את התכונות הניסיוניות של WGSL ולא את התכונות שאינן בטוחות. כך אפשר להשתמש בתכונות הניסיוניות והבטוחות של WGSL בלי להפעיל את המתג 'allow_unsafe_apis'. לעיון בעלות השחר:2260.

השיפורים שבוצעו לאחרונה בקישורי שחר עבור Node.js כוללים:

  • GPUSupportedFeatures::getSize() נוסף.
  • הוטמע חוסר פעילות של GPUAdapter.
  • GPUInternalError מדווח עכשיו כראוי למכשירים.
  • עכשיו המאפיינים ניתנים לספירה.

המאמר הזה מתייחס רק לחלק מההדגשים העיקריים. כדאי לעיין ברשימת ההתחייבויות המקיפה.

מה חדש ב-WebGPU

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

Chrome 125

Chrome 124

Chrome 123

גרסה 122 של Chrome

גרסה 121 של Chrome

Chrome 120

גרסה 119 של Chrome

גרסה 118 של Chrome

גרסה 117 של Chrome

גרסה 116 של Chrome

Chrome 115

Chrome 114

גרסה 113 של Chrome