הגדלת המגבלה של maxTextureArrayLayers
כברירת מחדל, הערך המקסימלי המותר לעומק או למספר השכבות של טקסטורה דו-ממדית הוא 256. עכשיו אפשר לבקש עד 2048 שכבות באמצעות המגבלה maxTextureArrayLayers, אם היא נתמכת. יש לעיין בדוגמה הבאה ובבעיה 42241514.
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
אופטימיזציה של העלאת מאגר נתונים זמני עבור קצה עורפי של Vulkan
נתיב מהיר זמין עכשיו כשמפעילים את השיטה writeBuffer() של GPUQueue לקצה העורפי של Vulkan. עכשיו אפשר לכתוב את הנתונים ישירות למאגר היעד, וכך למנוע את הצורך בהעתקה ובסנכרון נוספים. האופטימיזציה הזו מצמצמת את תנועת הזיכרון הנדרשת להעלאת נתונים ל-GPU.
כדי לבצע אופטימיזציה של הנתיב המהיר, הזיכרון של מאגר הנתונים הזמני צריך להיות גלוי לכולם ואין בו פעולות GPU בהמתנה. ראו בעיה 42242084.
שיפורי הזמן של הידור של האזורים הכהים
צוות Chrome משפרת את היעילות של Tint, המהדר של שפת ה-shader של WebGPU. בשלב זה, Tint משנה את עץ התחביר המופשט (AST) של קוד ה-shader כמה פעמים לפני שהוא יוצר קוד מכונה. זהו תהליך שצורך הרבה משאבים בפלטפורמות מסוימות. כדי לבצע אופטימיזציה של התהליך, אנחנו משיקים ייצוג ביניים חדש (IR) יחד עם קצוות עורפיים שעברו עיצוב מחדש שמשתמשים בו. מטרת השינוי הזה היא לזרז את הידור של תוכנות הצללה (shader).
השיפורים האלה, שכבר זמינים ב-Android, מורחבים בהדרגה למכשירי ChromeOS שתומכים ב-WebGPU עם הקצה העורפי של Vulkan. בעיה 42250751
מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
כל GPUCommandBuffer שנשלח ל-GPUQueue באמצעות השיטה submit()
חייב להיות ייחודי, אחרת נוצרת שגיאת אימות. זו הייתה באג במפרט. בעיה מס' 42241492
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
עדכונים של Dawn
ה-wrapper של C++ webgpu_cpp.h זמין עכשיו לכותרת בלבד, מפשט את השימוש בו ומאפשר שילוב קל יותר עם wrappers חלופיים של C++. בעיה מס' 40195122
ממשק ה-API של webgpu.h לא חושף יותר את האובייקטים של Swapchain. השינוי הזה נועד להתאים את ה-API ל-JavaScript. ההגדרה הפנימית מתבצעת עכשיו באמצעות השיטה Configure()
של האובייקט החדש wgpu::Surface
, שעשויה להשתנות בעתיד. דוגמה מפורטת מופיעה במאמר פיתוח אפליקציה באמצעות WebGPU. בעיה מס' 42241264
מה חדש ב-WebGPU
רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.
Chrome 131
- חיתוך מרחקים ב-WGSL
- GPUCanvasContext getConfiguration()
- פרימיטיבים של נקודה וקווים לא יכולים להיות עם הטיית עומק
- פונקציות מובנות של סריקה כוללת לקבוצות משנה
- תמיכה ניסיונית בקריאה עקיפה עם מספר משיכות
- Shader module compilation option strict math
- הסרת השיטה requestAdapterInfo() של GPUAdapter
- עדכונים לגבי זריחה
Chrome 130
- שילוב של שני מקורות
- שיפורי זמן ההידור של המטאל
- הוצאה משימוש של requestAdapterInfo() של GPUAdapter
- עדכונים לגבי זריחה
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
- מידע על ערמות זיכרון
- עדכונים לגבי זריחה
Chrome 120
- תמיכה בערכים של נקודה צפה (floating-point) באורך 16 ביט ב-WGSL
- מעבר למגבלות
- שינויים במצב העומק של סטנסיל
- עדכונים של פרטי המתאם
- קידוד נתונים של שאילתות עם חותמות זמן
- תכונות לניקוי האביב
Chrome 119
- טקסטורות צפות של 32 ביט שניתן לסנן
- פורמט קודקוד unorm10-10-10-2
- פורמט טקסטורה של rgb10a2uint
- עדכונים לגבי Dawn
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית ברקמות אחסון לקריאה וכתיבה ולקריאה בלבד
- עדכונים לגבי Dawn
Chrome 117
- הסרה של מאגר נתונים זמני של קודקודים
- ביטול ההגדרה של קבוצת קישור
- השתקת שגיאות שנובעות מיצירת צינור עיבוד נתונים אסינכררוני כשהמכשיר אבד
- עדכונים לגבי יצירת מודולים של שגיאות SPIR-V
- שיפור חוויית המפתחים
- אחסון צינורות עיבוד נתונים במטמון עם פריסה שנוצרה באופן אוטומטי
- עדכונים לגבי זריחה
Chrome 116
- שילוב WebCodecs
- מכשיר שאבד שהוחזר על ידי GPUAdapter
requestDevice()
- הפעלת הסרטון ב-
importExternalTexture()
צריכה להיות חלקה - תאימות מפרטת
- שיפור חוויית המפתחים
- עדכונים לגבי זריחה
Chrome 115
- תוספים נתמכים לשפות של WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחשמל AC
- שיפור חוויית המפתחים
- עדכונים לגבי זריחה
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() ב-Canvas לא מוגדר מפעילה שגיאה מסוג InvalidStateError
- עדכונים מ-WGSL
- עדכונים לגבי Dawn