הגדלת המגבלה של 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, המהדר של שפת ההצללה של WebGPU. בשלב זה, הגוון משנה את עץ התחביר המופשט של קוד ההצללה (AST) מספר פעמים לפני יצירת קוד מכונה – תהליך שדורש משאבים רבים בפלטפורמות מסוימות. כדי לבצע את האופטימיזציה הזו, אנחנו מוסיפים ייצוג ביניים (IR) חדש, וגם קצוות עורפיים בעיצוב מחודש שמוגדר בו. השינוי הזה נועד להאיץ את הקומפילציה של תוכנת הצללה (shader).
![ביצירת צינור עיבוד נתונים מתבצע המרה של WGSL ל-SPIR-V באמצעות מהדר Tint, ולאחר מכן ל-ISA באמצעות המהדר של מנהל ההתקן.](https://developer.chrome.google.cn/static/blog/new-in-webgpu-126/image/render-pipeline-creation-diagram.jpg?hl=he)
השיפורים האלה, שכבר זמינים ב-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.
עדכונים בשעות השחר
ה-wrapper של C++ webgpu_cpp.h מיועד כעת לכותרת בלבד, והופך את השימוש בו לפשוט יותר ומאפשר שילוב קל יותר עם wrappers חלופיים של C++. יש לעיין בבעיה 40195122.
ה-webgpu.h C API לא חושף יותר את הרעיון של אובייקטים של Swapchain. השינוי הזה מתבצע כדי להתאים בצורה מדויקת ל-JavaScript API. ההגדרה הפנימית מתבצעת עכשיו באמצעות השיטה Configure()
של אובייקט wgpu::Surface
החדש, שכפופה לשינויים עתידיים. אתה יכול לראות דוגמה במסמכי התיעוד בנושא בניית אפליקציה באמצעות WebGPU. לעיון בבעיה 42241264.
כדאי לעיין ברשימת ההתחייבויות המקיפה.
מה חדש ב-WebGPU
רשימה של כל מה שמכוסה בסדרה מה חדש ב-WebGPU.
גרסה 126 של Chrome
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאה במאגר נתונים זמני עבור הקצה העורפי של Vulkan
- שיפורים בזמני ההידור של Shader
- מאגרי הפקודות ששולחים צריכים להיות ייחודיים
- עדכונים עם שחר
Chrome 125
Chrome 124
- טקסטורות של אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers ובעובדים משותפים
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים עם שחר
Chrome 123
- ב-WGSL יש תמיכה בפונקציות מובנות של DP4a
- פרמטרים לא מוגבלים של מצביע ב-WGSL
- תחביר סוכר להפחתת אזכור של רכיבים ב-WGSL
- מצב קריאה בלבד נפרד להיבטים של שבלונה ועומק
- עדכונים עם שחר
גרסה 122 של Chrome
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה שנמצאת בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים עם שחר
גרסה 121 של Chrome
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC להידור של תוכנת הצללה (shader) ב-Windows
- שאילתות עם חותמת זמן באישורי מחשוב ועיבוד
- נקודות כניסה המוגדרות כברירת מחדל למודולים של תוכנת הצללה (shader)
- תמיכה ב-display-p3 כמרחב צבעים של GPUExternalTexture
- מידע על ערימות זיכרון
- עדכונים עם שחר
Chrome 120
- תמיכה בערכי נקודה צפה (floating-point) של 16 ביט ב-WGSL
- בוחנים את הגבולות
- שינויים במצב העומק של שבלונה
- עדכונים של פרטי המתאם
- יצירת כמות של שאילתות בחותמות זמן
- תכונות לניקוי אביב
גרסה 119 של Chrome
- טקסטורות צפות של 32 ביט שניתן לסנן
- פורמט קודקוד unorm10-10-10-2
- פורמט מרקם rgb10a2uint
- עדכונים עם שחר
גרסה 118 של Chrome
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית במרקם של אחסון לקריאה בלבד ולקריאה בלבד
- עדכונים עם שחר
גרסה 117 של Chrome
- ביטול הגדרה של מאגר נתונים זמני של קודקוד
- ביטול ההגדרה של קבוצת קישור
- השתקת שגיאות מיצירה של צינור עיבוד נתונים אסינכרוני כשמכשיר אבד
- עדכונים ליצירת מודול של תוכנת הצללה (shader) SPIR-V
- שיפור חוויית המפתחים
- שמירה במטמון של צינורות עיבוד נתונים עם פריסה שנוצרת באופן אוטומטי
- עדכונים עם שחר
גרסה 116 של Chrome
- שילוב עם קודק אינטרנט
- מכשיר שאבד הוחזר על ידי GPUAdapter
requestDevice()
- הפעלת הסרטון צריכה להיות חלקה אם מתקשרים ל-
importExternalTexture()
- תאימות למפרט
- שיפור חוויית המפתחים
- עדכונים עם שחר
Chrome 115
- תוספים נתמכים של שפות WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל כשאין חיבור לחשמל
- שיפור חוויית המפתחים
- עדכונים עם שחר
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() בבד קנבס שלא הוגדר עלול לגרום ל- InvalidStateError
- עדכונים לגבי WGSL
- עדכונים עם שחר