תוספי שפה נתמכים של WGSL
האיבר wgslLanguageFeatures
באובייקט GPU
מציג את השמות של תוספי השפה הנתמכים של WGSL. תוספים נתמכים של שפות WGSL מופעלים באופן אוטומטי, כך שאין צורך לבקש אותם באופן מפורש. הרשימה הזו ריקה כרגע, אבל צפויים הרבה סוגים בעתיד (לדוגמה, do-while loops
). ראו בעיה שחר: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 נפרד כברירת מחדל באספקת חשמל
במכשירי macOS עם ממשק GPU כפול, אם מפעילים את הפונקציה requestAdapter()
בלי האפשרות powerPreference
, ה-GPU הנפרד מוחזר כשהמכשיר של המשתמש מחובר לחשמל. אחרת, ה-GPU המשולב מוחזר. ראו שינוי 4499307.
שיפור חוויית המפתח
אזהרות חדשות לגבי כלי פיתוח
אם משתמשים במפתח depth
בתוך GPUExtend3DDict
, תוצג אזהרה במסוף כלי הפיתוח כי המפתח הנכון הוא depthOrArrayLayers
. ראו בעיה chromium:1440900.
אזהרה נוספת מוצגת גם אם בGPUBlendComponent
יש שילוב של חברים מפורשים וחברים שהוגדרו כברירת מחדל. ראו גיליון dawn:1785.
למרות ששליחות והגרלות בגודל אפס תקפות, אזהרה מעודדת מפתחים להימנע מהם כשזה אפשרי. ראו גיליון dawn:1786.
הודעות שגיאה טובות יותר
הודעת שגיאה משופרת מוצגת עכשיו כשמשתמשים ב-GPUCommandEncoder
אם כבר בוצעה קריאה אל finish()
. ראו גיליון dawn:1736.
כששולחים מאגר נתונים זמני של פקודות עם אובייקטים הרוסים, התוויות של מאגרי הנתונים הזמניים ששימשו ב-submit()
גלויות עכשיו בהודעת השגיאה. ראו גיליון dawn:1747.
החלק הלא חוקי במצב השבלונה של העומק מצוין עכשיו בהודעת השגיאה במהלך האימות של depthStencil
. ראו גיליון dawn:1735.
הודעת השגיאה minBindingSize
של האימות מדווחת עכשיו על הקבוצה והמספר של הקישור שנכשל באימות, וגם על מאגר הנתונים הזמני. ראו גיליון 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 או Instrument. מעכשיו, אפשר להפעיל ב-macOS חוויית ניפוי באגים טובה יותר לניפוי באגים. לעיון בגיליון dawn:1784
![צילום מסך של אפליקציית כלי הנגינה ב-macOS, עם תוויות מותאמות אישית שמגיעות מ-WebGPU.](https://developer.chrome.com/static/blog/new-in-webgpu-115/image/screenshot-instruments-a-75d5272ed4ccf.png?authuser=9&hl=he)
רישום HLSL אם הידור נכשל
מתג ניפוי הבאגים dump_shaders
מאפשר לרשום ביומן תוכנות הצללה (shader) של WGSL ורכיבי הצללה מתורגמים לקצה העורפי. מעכשיו, אם מפעילים את האפשרות לניפוי באגים, ה-HLSL ייכשל אם ייכשל בהידור. לעיון בגיליון 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);
קבצים מצורפים זמניים
אפשר ליצור קבצים מצורפים שמאפשרים לפעולות העברה של רינדור להישאר בזיכרון של כרטיסי המידע, וכך להימנע מתנועת 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 מאפשרת לאחזר יחסי תלות של שחר באמצעות סקריפט Python שקורא קובצי DEPS, במקום לדרוש התקנה של depot_tools
בכל הפרויקטים שתלויים בו. ראו שינוי 131750.
מה חדש ב-WebGPU
רשימה של כל מה שדיברנו עליו בסדרה מה חדש ב-WebGPU.
Chrome 128
- התנסות עם תתי-קבוצות
- הוצאה משימוש של הגדרה של הטיית עומק לקווים ולנקודות
- הסתרת האזהרה של כלי הפיתוח לגבי שגיאה שלא תועדה אםpreventDefault
- קודם כל דגימת אינטרפולציה של WGSL
- עדכונים לגבי זריחה
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים ב-WebAssembly יכולת פעולה הדדית
- שיפור בשגיאות מקודד פקודות
- עדכונים לגבי זריחה
Chrome 126
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאת מאגר נתונים זמני לקצה העורפי של Vulkan
- שיפורים בזמן האיסוף של Shader
- מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
- עדכונים לגבי זריחה
Chrome 125
Chrome 124
- טקסטורות אחסון לקריאה בלבד ולקריאה-כתיבה
- תמיכה בעובדי שירות ובעובדים משותפים
- מאפיינים חדשים של פרטי מתאמים
- תיקוני באגים
- עדכונים לגבי זריחה
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים בלתי מוגבלים של מצביע ב-WGSL
- תחביר תחבירי לביטול התייחסויות של מרוכבים ב-WGSL
- מצב קריאה בלבד נפרד להבטי שבלונה ובעומק
- עדכונים לגבי זריחה
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בשלבי פיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים לגבי זריחה
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC להידור של תוכנת ההצללה ב-Windows
- שאילתות חותמות זמן באישורי מחשוב ועיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולים של תוכנת ההצללה
- תמיכה ב-Display-p3 כמרחב צבעים של GPUExternalTexture
- מידע על ערימות זיכרון
- עדכונים לגבי זריחה
Chrome 120
- תמיכה בערכי נקודה צפה (floating-point) של 16 ביט ב-WGSL
- מרחיבים את הגבולות
- שינויים במצב העומק של סטנסיל
- עדכונים במידע על מתאם
- כימות שאילתות חותמות זמן
- תכונות לניקוי האביב
Chrome 119
- טקסטורות צפות של 32 ביט שניתן לסנן
- פורמט unorm10-10-10-2 קודקוד
- פורמט טקסטורה של IMAP10a2uint
- עדכונים לגבי זריחה
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית במרקם האחסון לקריאה בלבד ולקריאה בלבד
- עדכונים לגבי זריחה
Chrome 117
- ביטול הגדרה של מאגר נתונים זמני של קודקודים
- ביטול ההגדרה של קבוצת קישור
- השתקת שגיאות מיצירה של צינור עיבוד נתונים אסינכרוני כשהמכשיר אבד
- עדכונים ליצירת מודול של תוכנת ההצללה (shader) SPIR-V
- שיפור חוויית הפיתוח
- שמירה במטמון של צינורות עיבוד נתונים באמצעות פריסה שנוצרת באופן אוטומטי
- עדכונים לגבי זריחה
Chrome 116
- שילוב של קודק WebCodec
- המכשיר שאבד הוחזר על ידי GPUAdapter
requestDevice()
- הפעלת הסרטון ב-
importExternalTexture()
צריכה להיות חלקה - תאימות מפרטת
- שיפור חוויית הפיתוח
- עדכונים לגבי זריחה
Chrome 115
- תוספים נתמכים לשפות של WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחיבור לחשמל
- שיפור חוויית הפיתוח
- עדכונים לגבי זריחה
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() בבד ציור שלא הוגדר גורם לשגיאה InvalidStateError
- עדכונים ל-WGSL
- עדכונים לגבי זריחה