תוספי שפה נתמכים של WGSL
המאפיין wgslLanguageFeatures
של האובייקט GPU
מפרט את השמות של תוספי השפה הנתמכים ב-WGSL. תוספי שפה נתמכים של WGSL מופעלים באופן אוטומטי, ולכן אין צורך לבקש אותם במפורש. הרשימה הזו ריקה כרגע, אבל צפויות להופיע בה בעיות רבות בעתיד (לדוגמה, do-while loops
). אפשר לעיין בissue dawn:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
תמיכה ניסיונית ב-Direct3D 11
צוות Chromium פועל להוספת תמיכה ב-WebGPU ל-Direct3D 11. עכשיו אפשר לבצע ניסויים מקומיים באמצעות הפעלת Chrome ב-Windows עם הדגלים של שורת הפקודה --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. מידע נוסף על בעיה dawn:1705
קבלת GPU נפרד כברירת מחדל בהפעלה באמצעות AC
במכשירי macOS עם שני מעבדי GPU, אם קוראים ל-requestAdapter()
בלי האפשרות powerPreference
, מעבד ה-GPU הנפרד מוחזר כשהמכשיר של המשתמש מחובר לחשמל. אחרת, מוחזר ה-GPU המובנה. שינוי 4499307
שיפור חוויית המפתחים
אזהרות חדשות בכלי הפיתוח
אם משתמשים במקש depth
ב-GPUExtend3DDict
, מוצגת אזהרה במסוף כלי הפיתוח, כי המקש הנכון הוא depthOrArrayLayers
. מידע נוסף זמין בבעיה chromium:1440900.
התראה מופיעה גם אם בGPUBlendComponent
יש חברים עם הגדרות בוטות וחברים עם הגדרות ברירת מחדל. מידע נוסף על בעיה dawn:1785
למרות ששליחות וציורים בגודל אפס הם תקינים, מפתחים מקבלים אזהרה כדי להימנע מהם ככל האפשר. לעיון בבעיה dawn:1786
הודעות שגיאה משופרות
הודעת שגיאה משופרת מוצגת עכשיו כשמשתמשים ב-GPUCommandEncoder
if finish()
כבר הופעל. מידע נוסף על בעיה dawn:1736
כששולחים מאגרי פקודות עם אובייקטים שהושמדו, התוויות של מאגרי הפקודות שנעשה בהם שימוש ב-submit()
מוצגות עכשיו בהודעת השגיאה. מידע נוסף על בעיה dawn:1747
החלק הלא תקין במצב של תבנית העומק מצוין עכשיו בהודעת השגיאה במהלך אימות של depthStencil
. מידע נוסף על בעיה dawn:1735
הודעת השגיאה של האימות minBindingSize
כוללת עכשיו את הקבוצה ואת מספר הכריכה שנכשלו באימות, וגם את המאגר. מידע נוסף זמין במאמר בנושא בעיה dawn:1604.
הודעות השגיאה שמוחזרות על ידי השיטה mapAsync()
באובייקט GPUBuffer
שופרו כדי לעזור למפתחים בניפוי באגים. לדוגמה, issue chromium:1431622.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
תוויות בכלי ניפוי באגים ב-macOS
המתג use_user_defined_labels_in_backend
debug מאפשר להעביר תוויות של אובייקטים אל ה-backend כדי שיהיה אפשר לראות אותן בכלי ניפוי באגים ספציפיים לפלטפורמה, כמו RenderDoc, PIX או Instruments. מעכשיו, כשמפעילים ניפוי באגים ב-macOS, מקבלים חוויית ניפוי באגים משופרת. ראו issue dawn:1784

תיעוד HLSL אם ההידור נכשל
המתג dump_shaders
debug מאפשר לכם לרשום ביומן תוכנות הצללה (shader) של WGSL שהוזנו ותוכנות הצללה (shader) של הקצה העורפי שתורגמו. מעכשיו, כשתפעילו את האפשרות הזו לצורך ניפוי באגים, קובץ ה-HLSL יישמר אם הקומפילציה תיכשל. ראו issue dawn:1681
עדכונים לגבי שעות השחר
ביטול ההגדרה של מאגר קודקודים
העברת nullptr
במקום wgpu::Buffer
אל SetVertexBuffer()
ב-wgpu::RenderPassEncoder
או ב-wgpu::RenderBundleEncoder
מאפשרת לבטל את ההגדרה של מאגר קודקודים שהוגדר קודם במשבצת נתונה. לפרטים על בעיה dawn:1675
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
קבצים מצורפים זמניים
אפשר ליצור קבצים מצורפים שיאפשרו לפעולות של העברת רינדור להישאר בזיכרון של ה-Tile, וכך להימנע מתנועה של VRAM ואולי גם מהקצאת VRAM לטקסטורות, על ידי הגדרת השימוש ב-wgpu::TextureUsage::TransientAttachment
. התכונה הזו נתמכת רק ב-Metal וב-Vulkan. למידע נוסף על הבעיה: 1695
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
בנייה ללא depot_tools
אפשרות חדשה של DAWN_FETCH_DEPENDENCIES
CMake מאפשרת לאחזר תלות של Dawn באמצעות סקריפט Python שקורא קובצי DEPS, במקום לדרוש התקנה של depot_tools
בכל הפרויקטים שתלויים בו. כאן אפשר לראות את השינוי 131750.
מה חדש ב-WebGPU
רשימה של כל הנושאים שמופיעים בסדרת המאמרים מה חדש ב-WebGPU.
Chrome 140
- בקשות מהמכשיר צורכות מתאם
- קיצור דרך לשימוש בטקסטורה במקום שבו נעשה שימוש בתצוגת טקסטורה
- הפונקציה textureSampleLevel ב-WGSL תומכת בטקסטורות חד-ממדיות
- הוצאה משימוש של שימוש בטקסטורת אחסון לקריאה בלבד מסוג bgra8unorm
- הסרת המאפיין isFallbackAdapter של GPUAdapter
- עדכונים מ-Dawn
Chrome 139
- תמיכה בטקסטורות תלת-ממדיות בפורמטים דחוסים של BC ו-ASTC
- תכונה חדשה: core-features-and-limits
- תקופת ניסיון של תכונה חדשה למצב תאימות של WebGPU
- עדכונים מ-Dawn
Chrome 138
- קיצור דרך לשימוש ב-buffer כמשאב מחייב
- שינויים בדרישות הגודל של מאגרי נתונים זמניים שמופים בזמן היצירה
- דוח ארכיטקטורה של יחידות GPU מהזמן האחרון
- הוצאה משימוש של המאפיין isFallbackAdapter של GPUAdapter
- עדכונים מ-Dawn
Chrome 137
- שימוש בתצוגת טקסטורה לקישור externalTexture
- העתקת מאגרי נתונים בלי לציין היסטים וגודל
- WGSL workgroupUniformLoad using pointer to atomic
- המאפיין powerPreference של GPUAdapterInfo
- הסרת המאפיין compatibilityMode של GPURequestAdapterOptions
- עדכונים מ-Dawn
Chrome 136
- המאפיין isFallbackAdapter של GPUAdapterInfo
- שיפורים בזמן ההידור של Shader ב-D3D12
- שמירה והעתקה של תמונות בקנבס
- הגבלות במצב תאימות של מדידת השיפור
- עדכונים מ-Dawn
Chrome 135
- Allow creating pipeline layout with null bind group layout
- התרת חריגה של אזורי תצוגה מגבולות יעדי הרינדור
- גישה קלה יותר למצב התאימות הניסיוני ב-Android
- הסרת המגבלה maxInterStageShaderComponents
- עדכונים מ-Dawn
Chrome 134
- שיפור עומסי עבודה של למידת מכונה באמצעות קבוצות משנה
- הסרת התמיכה בסוגי מרקם שניתנים לסינון כמרקמים שניתנים למיזוג
- עדכונים מ-Dawn
Chrome 133
- פורמטים נוספים של קודקסי צבעים unorm8x4-bgra ושל קודקסי צבעים של רכיב אחד של קודקסי צבעים של קודקסי צבעים
- מתן אפשרות לבקש הגדלה של מגבלות לא ידועות עם ערך לא מוגדר
- שינויים בכללים של WGSL
- שיפורים בביצועים של WGSL עם discard
- שימוש ב-VideoFrame displaySize לטקסטורות חיצוניות
- טיפול בתמונות עם כיוונים שאינם ברירת המחדל באמצעות copyExternalImageToTexture
- שיפור חוויית המפתחים
- הפעלת מצב תאימות באמצעות featureLevel
- ניקוי של תכונות ניסיוניות של קבוצות משנה
- הוצאה משימוש של המגבלה maxInterStageShaderComponents
- עדכונים מ-Dawn
Chrome 132
- שימוש בתצוגת הטקסטורה
- מיזוג של מרקמים מסוג float ב-32 ביט
- המאפיין adapterInfo של GPUDevice
- הגדרת הקשר של אזור הציור בפורמט לא תקין גורמת לשגיאת JavaScript
- הגבלות על מסנני דגימה של טקסטורות
- ניסויים מורחבים בתתי-קבוצות
- שיפור חוויית המפתחים
- תמיכה ניסיונית בפורמטים של טקסטורות נורמליות של 16 ביט
- עדכונים מ-Dawn
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
- התנסות עם תתי-קבוצות
- הוצאה משימוש של הגדרת הטיית עומק לקווים ולנקודות
- הסתרת אזהרה בכלי הפיתוח לגבי שגיאה שלא נתפסה אם preventDefault
- קודם מתבצעת דגימת אינטרפולציה של WGSL ואז אחת מהפעולות הבאות:
- עדכונים מ-Dawn
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים ב-WebAssembly interop
- שיפורים בשגיאות של מקודד הפקודות
- עדכונים מ-Dawn
Chrome 126
- הגדלת המגבלה maxTextureArrayLayers
- אופטימיזציה של העלאת מאגרים עבור קצה עורפי של Vulkan
- שיפורים בזמן ההידור של Shader
- מאגרי פקודות שנשלחים צריכים להיות ייחודיים
- עדכונים מ-Dawn
Chrome 125
Chrome 124
- טקסטורות של אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers וב-Shared Workers
- מאפיינים חדשים של מידע על מתאמים
- תיקוני באגים
- עדכונים מ-Dawn
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים של מצביעים ללא הגבלה ב-WGSL
- Syntax sugar for dereferencing composites in WGSL
- מצב נפרד של קריאה בלבד לסטנסיל ולעומק
- עדכונים מ-Dawn
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים מ-Dawn
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC להידור של shader ב-Windows
- שאילתות של חותמות זמן במעברים של חישוב ועיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולים של Shader
- תמיכה ב-display-p3 כמרחב צבעים של GPUExternalTexture
- פרטי ערימות הזיכרון
- עדכונים מ-Dawn
Chrome 120
- תמיכה בערכי נקודה צפה (floating-point) של 16 ביט ב-WGSL
- בוחנים את הגבולות
- שינויים במצב של stencil עומק
- עדכונים בפרטי המתאם
- קוונטיזציה של שאילתות עם חותמות זמן
- תכונות לניקוי פסח
Chrome 119
- טקסטורות של מספר ממשי (float) ב-32 ביט שאפשר לסנן
- פורמט קודקודים unorm10-10-10-2
- פורמט טקסטורה rgb10a2uint
- עדכונים מ-Dawn
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית בטקסטורת אחסון לקריאה/כתיבה ולקריאה בלבד
- עדכונים מ-Dawn
Chrome 117
- Unset vertex buffer
- ביטול ההגדרה של קבוצת קישור
- השבתת שגיאות מיצירת צינורות אסינכרוניים כשהמכשיר אבד
- עדכונים ביצירת מודול shader של SPIR-V
- שיפור חוויית המפתחים
- שמירת צינורות לעיבוד נתונים במטמון עם פריסה שנוצרת באופן אוטומטי
- עדכונים מ-Dawn
Chrome 116
- שילוב של WebCodecs
- המאפיין isFallbackAdapter של GPUAdapter
requestDevice()
- הפעלה חלקה של סרטונים אם מתקשרים אל
importExternalTexture()
- התאמה למפרט
- שיפור חוויית המפתחים
- עדכונים מ-Dawn
Chrome 115
- תוספים נתמכים לשפת WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בהפעלה באמצעות מתח AC
- שיפור חוויית המפתחים
- עדכונים מ-Dawn
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() ב-canvas לא מוגדר מעלה InvalidStateError
- עדכונים ב-WGSL
- עדכונים מ-Dawn