תמיכה ניסיונית ב-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 });
התכונה הזו עדיין נמצאת בשלב ניסיוני, ולכן תצטרכו לבצע את השלבים הבאים:
- מפעילים את הדגלים הבאים ב-Chrome: 'תמיכה לא בטוחה ב-WebGPU', 'תכונות למפתחים של WebGPU' ו'הפעלת שורת הפקודה במכשירים ללא הרשאת root'.
- מפעילים את ניפוי הבאגים ב-USB במכשיר Android.
- מחברים את מכשיר 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()
, המקור data
ב-writeBuffer()
והמקור 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]).
עדכונים של Dawn
ממשק ה-API ל-C 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 131
- חיתוך מרחקים ב-WGSL
- GPUCanvasContext getConfiguration()
- אסור שתהיה הטיה לעומק בפרימיטיבים של קווים ונקודות
- פונקציות מובנות של סריקה כוללת לקבוצות משנה
- תמיכה ניסיונית בקריאה עקיפה עם כמה משיכות
- Shader module compilation option strict math
- הסרת השיטה requestAdapterInfo() של GPUAdapter
- עדכונים לגבי Dawn
Chrome 130
- שילוב של שני מקורות
- שיפורי זמן הידור של שפות Shader ב-Metal
- הוצאה משימוש של requestAdapterInfo() של GPUAdapter
- עדכונים לגבי Dawn
Chrome 129
Chrome 128
- ניסוי עם תתי-קבוצות
- הוצאה משימוש של הגדרת הטיה של עומק לקווים ולנקודות
- הסתרת אזהרת DevTools על שגיאה שלא תועדה אם preventDefault
- WGSL מבצעת אינטרפולציה של הדגימה קודם ואז
- עדכונים לגבי Dawn
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים בתאימות הדדית של WebAssembly
- שיפור שגיאות של מקודד הפקודות
- עדכונים לגבי Dawn
Chrome 126
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאה למאגר לצד העורפי של Vulkan
- שיפורים בזמן הידור של שגיאות (shader)
- מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
- עדכונים לגבי Dawn
Chrome 125
Chrome 124
- טקסטורות אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers וב-Shared Workers
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים לגבי Dawn
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים של מצביע ללא הגבלה ב-WGSL
- תחביר פשוט יותר לביטול ההפניה למשתנים מורכבים ב-WGSL
- מצב נפרד לקריאה בלבד של אספקטים של תבנית ועומק
- עדכונים לגבי Dawn
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים לגבי Dawn
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC לצורך הידור של שגיאות ב-Windows
- שאילתות של חותמות זמן בשלבי המחשוב והעיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולי שַדְר (shader)
- תמיכה ב-display-p3 כמרחב צבע של GPUExternalTexture
- מידע על ערמות זיכרון
- עדכונים לגבי Dawn
Chrome 120
- תמיכה בערכים של נקודה צפה (floating-point) באורך 16 ביט ב-WGSL
- מעבר למגבלות
- שינויים במצב של עומק-המרקע
- עדכונים של פרטי המתאם
- קידוד נתונים של שאילתות עם חותמות זמן
- תכונות לניקיון האביב
Chrome 119
- טקסטורות של מספרים ממשיים (float) ב-32 ביט שניתן לסנן
- פורמט קודקוד unorm10-10-10-2
- פורמט טקסטורה של rgb10a2uint
- עדכונים לגבי Dawn
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית ברקמות אחסון לקריאה וכתיבה ולקריאה בלבד
- עדכונים לגבי Dawn
Chrome 117
- ביטול ההגדרה של מאגר הנקודות
- ביטול ההגדרה של קבוצת הקישור
- השתקת שגיאות שנובעות מיצירת צינור עיבוד נתונים אסינכררוני כשהמכשיר אבד
- עדכונים לגבי יצירת מודולים של שפות SPIR-V
- שיפור חוויית המפתחים
- אחסון צינורות עיבוד נתונים במטמון עם פריסה שנוצרה באופן אוטומטי
- עדכונים לגבי Dawn
Chrome 116
- שילוב WebCodecs
- מכשיר שאבד וחוזר על ידי GPUAdapter
requestDevice()
- שמירה על הפעלה חלקה של סרטונים אם מתבצעת קריאה ל-
importExternalTexture()
- תאימות למפרט
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 115
- תוספים נתמכים לשפת WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחשמל AC
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() ב-Canvas לא מוגדר מפעילה שגיאה מסוג InvalidStateError
- עדכונים מ-WGSL
- עדכונים לגבי Dawn