מה חדש ב-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' כדי להגדיר את העורף של OpenGL ES כעדיף על Vulkan ומפעילים מחדש את Chrome.

מאפיין המידע של 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(). מידע נוסף זמין בבעיה מספר 339049388.

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

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

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]).

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

‫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

רשימה של כל הנושאים שמופיעים בסדרה What's New in WebGPU.

‫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