שילוב של WebCodec
WebGPU חושף ממשק API ליצירת 'מרקם חיצוני' אטום אובייקטים מ-HTMLVideoElement
עד importExternalTexture()
. אפשר להשתמש באובייקטים האלה כדי לדגום ביעילות את הפריימים של הסרטון, אולי באופן של אפס העתקה ישירות מנתוני מודל הצבעים YUV של המקור.
עם זאת, המפרט הראשוני של WebGPU לא אפשר ליצור אובייקטים מסוג GPUExternalTexture
מאובייקטים של WebCodec מסוג VideoFrame
. היכולת הזו חשובה באפליקציות מתקדמות לעיבוד וידאו, שכבר משתמשות ברכיבי WebCodec ורוצים לשלב את WebGPU בצינור עיבוד הווידאו. שילוב של קודק WebCodec מוסיף תמיכה בשימוש ב-VideoFrame
כמקור לשיחות GPUExternalTexture
ו-copyExternalImageToTexture()
. ניתן לעיין בדוגמה הבאה ובערך chromestatus.
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
כדאי לנסות את הדוגמה הניסיונית העלאת סרטונים באמצעות WebCodecs כדי להפעיל אותה.
מכשיר שאבד הוחזר על ידי GPUAdapter requestDevice()
אם השיטה requestDevice()
ב-GPUAdapter
נכשלה כי היא כבר שימשה ליצירת GPUDevice
, היא ממלאת עכשיו GPUDevice
שמסומן כ'אבד' באופן מיידי, במקום להחזיר הבטחה שנדחתה באמצעות null
. ראו בעיה ב-chromium:1234617.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
הפעלת הסרטון צריכה לפעול בצורה חלקה אם מפעילים את הפונקציה 'ייבואExternalText() '
כשמתבצעת קריאה אל importExternalTexture()
עם HTMLVideoElement
, ההפעלה של הסרטון המשויך לא מוגבלת יותר כאשר הסרטון לא גלוי באזור התצוגה. ראו בעיה כרום:1425252.
תאימות למפרט
הארגומנט message
ב-constructor של GPUPipelineError()
הוא אופציונלי. ראו שינוי chromium:4613967.
שגיאה מופעלת בעת קריאה ל-createShaderModule()
אם מקור WGSL code
מכיל \0
. ראו גיליון dawn:1345.
רמת הפירוט המקסימלית שמוגדרת כברירת מחדל (lodMaxClamp
) בדגימת טקסטורה עם createSampler()
היא 32. ראו שינוי ב-chromium:4608063.
שיפור חוויית המפתח
במסוף JavaScript של כלי הפיתוח מוצגת הודעה שמזכירה למפתחים שהם משתמשים ב-WebGPU בפלטפורמה שלא נתמכת. ראו שינוי chromium:4589369.
הודעות שגיאה של אימות מאגר נתונים זמני מוצגות באופן מיידי במסוף JavaScript של כלי הפיתוח כאשר getMappedRange()
נכשל בלי לאלץ את המפתחים לשלוח פקודות לתור. ראו שינוי chromium:4597950.
![צילום מסך של מסוף JavaScript של כלי הפיתוח, עם הודעת שגיאה באימות מאגר הנתונים הזמני.](https://developer.chrome.com/static/blog/new-in-webgpu-116/image/screenshot-devtools-java-f6335abfb3e85.png?authuser=5&hl=he)
עדכונים לגבי זריחה
השם של מתג ניפוי הבאגים של disallow_unsafe_apis
השתנה ל-allow_unsafe_apis
והוגדר כברירת מחדל כמושבת. המתג הזה מבטל שגיאות אימות בנקודות כניסה ל-API או בשילובי פרמטרים שעדיין לא נחשבים מאובטחים. המדיניות יכולה להיות שימושית לניפוי באגים.
ראו גיליון dawn:1685.
המאפיין source
שיצא משימוש wgpu::ShaderModuleWGSLDescriptor
הוסר לטובת code
. ראו שינוי dawn:130321.
השיטה החסרה wgpu::RenderBundle::SetLabel()
הוטמעה. ראו שינוי dawn:134502.
אפליקציות יכולות לבקש קצה עורפי מסוים כשהם מקבלים מתאם עם האפשרות wgpu::RequestAdapterOptionsBackendType
. אפשר לראות דוגמה למטה ואת הבעיה dawn:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
נוספה שיטת SwapChain::GetCurrentTexture()
חדשה עם שימושים נוספים במרקמים להחלפת מרקם, כדי שאפשר יהיה להשתמש בהחזרה wgpu::Texture
בעותקים. אפשר לראות דוגמה בהמשך ובעיה dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
זה כולל רק חלק מהעדכונים העיקריים. אתם מוזמנים לעיין ברשימה המלאה של ההתחייבויות.
מה חדש ב-WebGPU
רשימה של כל מה שדיברנו עליו בסדרה מה חדש ב-WebGPU.
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
- עדכונים לגבי זריחה