מה חדש ב-WebGPU (Chrome {/7}127)

François Beaufort
François Beaufort

תמיכה ניסיונית ב-OpenGL ES ב-Android

מעכשיו אפשר לגשת אל GPUAdapter מהקצה העורפי של OpenGL ES כשמבקשים את מצב התאימות הניסיוני של WebGPU ב-Chrome ל-Android. זה שימושי במיוחד במכשירי Android שאין בהם תמיכה ב-Vulkan 1.1 ומעלה. אפשר לעיין בדוגמה הבאה ובבעיה dawn:1545.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
בדף הדוח של WebGPU מוצג מידע על GPUAdapter מהקצה העורפי של OpenGL ES במכשיר Android.
פרטי מתאם OpenGL ES בכתובת webgpureport.org

התכונה הזו עדיין ניסיונית, ולכן צריך לבצע את השלבים הבאים:

  1. מפעילים את הדגלים הבאים ב-Chrome: Unsafe WebGPU Support (תמיכה לא בטוחה ב-WebGPU),‏ WebGPU Developer Features (תכונות למפתחים ב-WebGPU) ו-Enable command line on non-rooted devices (הפעלת שורת פקודה במכשירים שלא בוצע בהם Root).
  2. מפעילים ניפוי באגים ב-USB במכשיר Android.
  3. מחברים את מכשיר Android לתחנת העבודה, מריצים את adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' כדי להגדיר את העדפת ה-backend של OpenGL ES על פני Vulkan ומפעילים מחדש את Chrome.

המאפיין info של GPUAdapter

עכשיו אפשר לקבל מידע מזהה על מתאם באופן סינכרוני באמצעות המאפיין info של GPUAdapter. בעבר, הדרך היחידה לקבל מידע על המתאם הייתה באמצעות קריאה לשיטה האסינכרונית requestAdapterInfo() של GPUAdapter. עם זאת, השיטה requestAdapterInfo() הוסרה ממפרט WebGPU, והיא תוסר מ-Chrome בהמשך השנה כדי לתת למפתחי אתרים מספיק זמן לבצע את המעבר הנדרש. אפשר לעיין בדוגמה הבאה, סטטוס Chrome, ובבעיה מספר 335383516.

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

// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();

console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"

שיפורים ביכולת הפעולה ההדדית של WebAssembly

כדי להתאים את עצמם למעבר של ערימות WebAssembly ישירות אל WebGPU, הגדלים של ארגומנטים מסוג BufferSource הבאים כבר לא מוגבלים ל-2GB: ‏ dynamicOffsetsData ב-setBindGroup(),‏ source data ב-writeBuffer() ו-source data Pin writeTexture(). מידע נוסף

שיפור השגיאות במקודד הפקודות

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

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
    at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)

השגיאה הזו מתארת את הסיבה לשגיאה, אבל היא לא מציינת איזו קריאה גרמה לשגיאת האימות. השגיאה הבאה מציגה את ההודעה המשופרת שכוללת את הפקודה שהפעילה את השגיאה. שינוי 192245

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

עדכונים של Dawn

‫C API‏ webgpu.h כבר לא חושף את wgpuSurfaceGetPreferredFormat(), המקביל ב-C ל-wgpu::Surface::GetPreferredFormat() של Dawn. במקום זאת, משתמשים בפקודה wgpu::Surface::GetCapabilities() כדי לקבל את רשימת הפורמטים הנתמכים, ואז משתמשים בפקודה formats[0] כדי לקבל את פורמט הטקסטורה המועדף עבור המשטח הזה. בינתיים, קריאה ל-wgpu::Surface::GetPreferredFormat() תגרום להצגת אזהרה לגבי הוצאה משימוש. מידע נוסף

אפשר עכשיו לראות את השימושים הנתמכים במרקם של משטח מסוים דרך wgpu::SurfaceCapabilities::usages כשמתקשרים אל wgpu::Surface::GetCapabilities(). הם צפויים לכלול תמיד את wgpu::TextureUsage::RenderAttachment. מידע נוסף

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

מה חדש ב-WebGPU

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

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