מה חדש ב-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 Developer Features ו-Enable command line on non-rooted devices.
  2. מפעילים את ניפוי הבאגים ב-USB במכשיר Android.
  3. מחברים את מכשיר Android לתחנת העבודה, מריצים את adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' כדי להגדיר את העדיפות ל-OpenGL ES backend על פני 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

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

‫Chrome 155-156

‫Chrome 153-154

‫Chrome 151-152

‫Chrome 149-150

‫Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

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