תוספים נתמכים לשפות WGSL
החבר wgslLanguageFeatures
באובייקט GPU
מציג את השמות של תוספות השפה הנתמכות ב-WGSL. תוספים נתמכים של שפות WGSL מופעלים באופן אוטומטי, לכן אין צורך לבקש אותם במפורש. הרשימה הזו ריקה כרגע, אבל צפויים להתווסף לה הרבה ערכים בעתיד (לדוגמה, do-while loops
). אפשר לעיין בבעיה 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
. issue dawn:1705
שימוש במעבדי GPU נפרדים כברירת מחדל בחשמל AC
במכשירי macOS עם שני מעבדי GPU, אם קוראים לפונקציה requestAdapter()
בלי להוסיף את האפשרות powerPreference
, מעבד ה-GPU הנפרד מוחזר כשהמכשיר של המשתמש מחובר לחשמל. אחרת, ה-GPU המובנה מוחזר. שינוי 4499307
שיפור חוויית המפתחים
אזהרות חדשות ב-DevTools
אם משתמשים במקש depth
ב-GPUExtend3DDict
, תוצג אזהרה במסוף כלי הפיתוח כי המקש הנכון הוא depthOrArrayLayers
. בעיה chromium:1440900
תופיע גם אזהרה אם ב-GPUBlendComponent
יש שילוב של חברים עם הגדרת ברירת מחדל וחברים עם הגדרת תוכן בוטה. issue dawn:1785
למרות שפעולות של שליחה וציור בגודל אפס הן חוקיות, מופיעה אזהרה שמעודדת את המפתחים להימנע מהן במידת האפשר. issue dawn:1786
הודעות שגיאה משופרות
עכשיו מוצגת הודעת שגיאה משופרת כשמשתמשים ב-GPUCommandEncoder
אם כבר התבצעה קריאה ל-finish()
. issue dawn:1736
כששולחים מאגרי פקודות עם אובייקטים שהושמדו, התוויות של מאגרי הפקודות ששימשו ב-submit()
גלויות עכשיו בהודעת השגיאה. issue dawn:1747
החלק הלא חוקי של מצב תבנית העומק מצוין עכשיו בהודעת השגיאה במהלך אימות depthStencil
. issue dawn:1735
הודעת השגיאה minBindingSize
על אימות נכשל כוללת עכשיו את הקבוצה והמספר של הקישור שנכשל באימות, וגם את המאגר. issue dawn:1604
הודעות השגיאה שמוחזרות על ידי השיטה mapAsync()
באובייקט GPUBuffer
שופרו כדי לעזור למפתחים לנפות באגים. דוגמה לדוח כזה מופיעה בהמשך, ואפשר למצוא דוגמה נוספת בבעיה 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
לניפוי באגים מאפשר להעביר תוויות של אובייקטים לקצה העורפי, כדי שניתן יהיה לראות אותן בכלים לניפוי באגים ספציפיים לפלטפורמה, כמו RenderDoc, PIX או Instruments. מעכשיו, חוויית ניפוי הבאגים ב-macOS תהיה טובה יותר כשמפעילים אותה לניפוי באגים. ראו issue dawn:1784
רישום HLSL אם ההידור נכשל
המתג dump_shaders
לניפוי באגים מאפשר לתעד תוכנות הצללה (shader) של WGSL להזנה ותוכנות הצללה (shader) של קצה עורפי שתורגמו. מעכשיו, כשמפעילים את האפשרות לניפוי באגים, קובץ ה-HLSL יוטמע אם הוא עובר את תהליך ה-compilation. ראו issue dawn:1681
עדכונים של Dawn
איך מבטלים את ההגדרה של מאגר קודקודים
העברת nullptr
במקום wgpu::Buffer
אל SetVertexBuffer()
ב-wgpu::RenderPassEncoder
או ב-wgpu::RenderBundleEncoder
מאפשרת לבטל את ההגדרה של מאגר קודקודים שהוגדר קודם בחריץ נתון. issue dawn:1675
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
קבצים מצורפים זמניים
אפשר ליצור קבצים מצורפים שמאפשרים לפעולות של שלב העיבוד (render pass) להישאר בזיכרון המשבצות, וכך למנוע תנועה ב-VRAM ולמנוע את הקצאת ה-VRAM לתמונות הטקסטורה. לשם כך, צריך להגדיר את השימוש ב-wgpu::TextureUsage::TransientAttachment
. התכונה הזו נתמכת רק ב-Metal וב-Vulkan. issue dawn: 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
אפשרות חדשה של CMake DAWN_FETCH_DEPENDENCIES
מאפשרת לאחזר יחסי תלות של Dawn באמצעות סקריפט Python שקורא קובצי DEPS, במקום לדרוש התקנה של depot_tools
בכל הפרויקטים שתלויים בו. שינוי 131750
מה חדש ב-WebGPU
רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.
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
- ניסוי עם תתי-קבוצות
- הוצאה משימוש של הגדרת הטיה של עומק לקווים ולנקודות
- הסתרת אזהרת 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