תמיכה ניסיונית ב-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. בעבר, הפעלת השיטה האסינכרונית של 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 ל-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
- מצב נפרד לקריאה בלבד של אספקטים של תבנית ועומק
- עדכונים לגבי זריחה
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
- ביטול ההגדרה של מאגר הנקודות
- ביטול ההגדרה של קבוצת הקישור
- השתקת שגיאות שנובעות מיצירת צינור עיבוד נתונים אסינכררוני כשהמכשיר אבד
- עדכונים ליצירת מודול של תוכנת ההצללה (shader) 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
- עדכונים לגבי זריחה