תוספים נתמכים לשפות 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
. ראו גיליון 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 ייכשל אם ייכשל בהידור. לעיון בגיליון dawn:1681
עדכונים של Dawn
איך מבטלים את ההגדרה של מאגר קודקודים
העברת 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);
קבצים מצורפים זמניים
אפשר ליצור קבצים מצורפים שמאפשרים לפעולות של שלב העיבוד (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 131
- חיתוך מרחקים ב-WGSL
- GPUCanvasContext getConfiguration()
- אסור שתהיה הטיה של עומק בפרימיטיבים של קווים ונקודות
- פונקציות מובנות של סריקה כוללת לקבוצות משנה
- תמיכה ניסיונית בקריאה עקיפה עם מספר משיכות
- Shader module compilation option strict math
- הסרת השיטה requestAdapterInfo() של GPUAdapter
- עדכונים לגבי זריחה
Chrome 130
- שילוב מקורות כפול
- שיפורי זמן ההידור של המטאל
- הוצאה משימוש של 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
- טקסטורות אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה בעובדי שירות ובעובדים משותפים
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים לגבי Dawn
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים של מצביע ללא הגבלה ב-WGSL
- תחביר פשוט יותר לביטול ההפניה למשתנים מורכבים ב-WGSL
- מצב נפרד לקריאה בלבד של אספקטים של תבנית ועומק
- עדכונים לגבי זריחה
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים לגבי Dawn
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC לצורך הידור של שגיאות ב-Windows
- שאילתות חותמות זמן באישורי מחשוב ועיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולי שַדְר (shader)
- תמיכה ב-display-p3 כמרחב צבע של GPUExternalTexture
- מידע על ערמות זיכרון
- עדכונים לגבי זריחה
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
- שיפור חוויית המפתחים
- אחסון צינורות עיבוד נתונים במטמון עם פריסה שנוצרה באופן אוטומטי
- עדכונים לגבי זריחה
Chrome 116
- שילוב WebCodecs
- מכשיר שאבד שהוחזר על ידי GPUAdapter
requestDevice()
- שמירה על הפעלה חלקה של סרטונים אם מתבצעת קריאה ל-
importExternalTexture()
- תאימות מפרטת
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 115
- תוספים נתמכים לשפת WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחשמל AC
- שיפור חוויית המפתחים
- עדכונים לגבי זריחה
Chrome 114
- אופטימיזציה של JavaScript
- הקריאה getCurrentTexture() ב-Canvas לא מוגדר מפעילה את השגיאה InvalidStateError
- עדכונים מ-WGSL
- עדכונים לגבי Dawn