תמיכה ניסיונית ב-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.](https://developer.chrome.com/static/blog/new-in-webgpu-127/image/opengl-es-android.jpg?authuser=5&hl=he)
התכונה הזו עדיין בשלב ניסיוני, ולכן צריך לבצע את השלבים הבאים:
- מפעילים את הדגלים הבאים של Chrome: 'תמיכה לא בטוחה ב-WebGPU', 'תכונות למפתחים של WebGPU' ו'הפעלת שורת הפקודה במכשירים ללא הרשאות בסיס'.
- מפעילים ניפוי באגים ב-USB במכשיר Android.
- מחברים את מכשיר Android לתחנת העבודה, מריצים את
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
כדי לתת עדיפות לקצה העורפי של OpenGL ES על פני Vulkan ומפעילים מחדש את Chrome.
מאפיין מידע על GPUAdapter
עכשיו אפשר לקבל פרטים מזהים של מתאם בצורה סנכרונית עם המאפיין info
של GPUAdapter. בעבר, הפעלת השיטה האסינכרונית של GPUAdapter requestAdapterInfo()
הייתה הדרך היחידה לקבל פרטי מתאם. עם זאת, 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()
, המקור data
ב-writeBuffer()
וקוד המקור data
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]).
עדכונים לגבי זריחה
ממשק ה-API של webgpu.h לא חושף יותר את wgpuSurfaceGetPreferredFormat()
, שהוא הערך המקביל C ל-wgpu::Surface::GetPreferredFormat()
של Dawn. במקום זאת, אפשר להשתמש ב-wgpu::Surface::GetCapabilities()
כדי לקבל את רשימת הפורמטים הנתמכים, ואז להשתמש ב-formats[0]
כדי לקבל את פורמט הטקסטורה המועדף למשטח הזה. בינתיים, אם תבוצע קריאה אל wgpu::Surface::GetPreferredFormat()
, תוצג אזהרה על הוצאה משימוש. ראו בעיה 290.
השימושים הנתמכים במרקמים של משטח זמינים עכשיו דרך wgpu::SurfaceCapabilities::usages
בקריאה ל-wgpu::Surface::GetCapabilities()
. הם צפויים לכלול תמיד את wgpu::TextureUsage::RenderAttachment
. ראו בעיה 301.
זה כולל רק חלק מהעדכונים העיקריים. אתם מוזמנים לעיין ברשימה המלאה של ההתחייבויות.
מה חדש ב-WebGPU
רשימה של כל מה שדיברנו עליו בסדרה מה חדש ב-WebGPU.
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים ב-WebAssembly יכולת פעולה הדדית
- שיפור בשגיאות מקודד פקודות
- עדכונים לגבי זריחה
Chrome 126
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאת מאגר נתונים זמני לקצה העורפי של Vulkan
- שיפורים בזמן האיסוף של Shader
- מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
- עדכונים לגבי זריחה
Chrome 125
Chrome 124
- טקסטורות אחסון לקריאה בלבד ולקריאה-כתיבה
- תמיכה בעובדי שירות ובעובדים משותפים
- מאפיינים חדשים של פרטי מתאמים
- תיקוני באגים
- עדכונים לגבי זריחה
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים בלתי מוגבלים של מצביע ב-WGSL
- תחביר תחבירי לביטול התייחסויות של מרוכבים ב-WGSL
- מצב קריאה בלבד נפרד להבטי שבלונה ובעומק
- עדכונים לגבי זריחה
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בשלבי פיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים לגבי זריחה
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC להידור של תוכנת ההצללה ב-Windows
- שאילתות חותמות זמן באישורי מחשוב ועיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולים של תוכנת ההצללה
- תמיכה ב-Display-p3 כמרחב צבעים של GPUExternalTexture
- מידע על ערימות זיכרון
- עדכונים לגבי זריחה
Chrome 120
- תמיכה בערכי נקודה צפה (floating-point) של 16 ביט ב-WGSL
- מרחיבים את הגבולות
- שינויים במצב העומק של סטנסיל
- עדכונים במידע על מתאם
- כימות שאילתות חותמות זמן
- תכונות לניקוי האביב
Chrome 119
- טקסטורות צפות של 32 ביט שניתן לסנן
- פורמט unorm10-10-10-2 קודקוד
- פורמט טקסטורה של IMAP10a2uint
- עדכונים לגבי זריחה
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית במרקם האחסון לקריאה בלבד ולקריאה בלבד
- עדכונים לגבי זריחה
Chrome 117
- ביטול הגדרה של מאגר נתונים זמני של קודקודים
- ביטול ההגדרה של קבוצת קישור
- השתקת שגיאות מיצירה של צינור עיבוד נתונים אסינכרוני כשהמכשיר אבד
- עדכונים ליצירת מודול של תוכנת ההצללה (shader) SPIR-V
- שיפור חוויית הפיתוח
- שמירה במטמון של צינורות עיבוד נתונים באמצעות פריסה שנוצרת באופן אוטומטי
- עדכונים לגבי זריחה
Chrome 116
- שילוב של קודק WebCodec
- המכשיר שאבד הוחזר על ידי GPUAdapter
requestDevice()
- הפעלת הסרטון ב-
importExternalTexture()
צריכה להיות חלקה - תאימות מפרטת
- שיפור חוויית הפיתוח
- עדכונים לגבי זריחה
Chrome 115
- תוספים נתמכים לשפות של WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחיבור לחשמל
- שיפור חוויית הפיתוח
- עדכונים לגבי זריחה
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() בבד ציור שלא הוגדר גורם לשגיאה InvalidStateError
- עדכונים ל-WGSL
- עדכונים לגבי זריחה