מה חדש ב-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

רשימה של כל הנושאים שמופיעים בסדרת המאמרים מה חדש ב-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