שילוב של רכיבי WebCodec
WebGPU חושף API כדי ליצור אובייקטים אטומים מסוג 'מרקם חיצוני' מ-HTMLVideoElement
דרך importExternalTexture()
. אפשר להשתמש באובייקטים האלה כדי לדגום את הפריימים של הסרטון ביעילות, אולי באמצעות 0 העתקה ישירות מנתוני מודל הצבע של המקור YUV.
עם זאת, המפרט הראשוני של ה-WebGPU לא אפשר ליצור אובייקטים מסוג GPUExternalTexture
מאובייקטים של WebCodecs VideoFrame
. היכולת הזו חשובה לאפליקציות מתקדמות לעיבוד וידאו שכבר משתמשות ב-WebCodecs ומעוניינות לשלב את WebGPU בצינור עיבוד הווידאו. השילוב של WebCodecs כולל תמיכה בשימוש ב-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
. מידע נוסף על בעיה כרום: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;
הפעלת סרטון חלקה אם מתבצעת קריאה ל-ImportExternalTexture()
כשמפעילים את importExternalTexture()
באמצעות HTMLVideoElement
, הפעלת הסרטון המשויך לא מווסתת יותר כשאי אפשר לראות את הסרטון באזור התצוגה. מידע נוסף על בעיה כרום:1425252.
תאימות למפרט
הארגומנט message
ב-GPUPipelineError()
הוא אופציונלי. מידע נוסף מופיע בקטע שינוי של Chromium:4613967.
מופעלת שגיאה במהלך הקריאה ל-createShaderModule()
אם מקור WGSL code
מכיל \0
. לעיון בעלות השחר:1345.
רמת הפירוט המקסימלית המוגדרת כברירת מחדל (lodMaxClamp
) בעת דגימת מרקם עם createSampler()
היא 32. מידע נוסף מופיע בקטע שינוי של Chromium:4608063.
שיפור חוויית המפתחים
תוצג הודעה בלוח ה-JavaScript של DevTools כדי להזכיר למפתחים כשהם משתמשים ב-WebGPU בפלטפורמה לא נתמכת. מידע נוסף מופיע בקטע שינוי של Chromium:4589369.
הודעות שגיאה של אימות מאגר הנתונים הזמני מוצגות באופן מיידי במסוף ה-JavaScript של כלי הפיתוח, כאשר הקוד getMappedRange()
נכשל, בלי לאלץ את המפתחים לשלוח פקודות לתור. מידע נוסף זמין בקטע שינוי כ-Chromium:4597950.
עדכונים בשעות השחר
השם של מתג ניפוי הבאגים disallow_unsafe_apis
השתנה ל-allow_unsafe_apis
ומושבת כברירת מחדל. המתג הזה מבטל שגיאות אימות בנקודות כניסה ב-API או בשילובי פרמטרים שעדיין לא נחשבים מאובטחים. הקטע הזה יכול להיות שימושי לניפוי באגים.
להצגת השחר:1685.
המאפיין source
wgpu::ShaderModuleWGSLDescriptor
שהוצא משימוש הוסר לטובת code
. להצגת שינוי שחר:130321.
שיטת wgpu::RenderBundle::SetLabel()
החסרה יושמה. אפשר לקרוא על שינוי dawn:134502.
אפליקציות יכולות לבקש קצה עורפי מסוים כשמקבלים מתאם עם האפשרות wgpu::RequestAdapterOptionsBackendType
. למטה אפשר לראות דוגמה ולעלות השחר: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
שמוחזר בעותקים. למטה מוצגת דוגמה ומעלות השחר:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
המאמר הזה מתייחס רק לחלק מההדגשים העיקריים. כדאי לעיין ברשימת ההתחייבויות המקיפה.
מה חדש ב-WebGPU
רשימה של כל מה שמכוסה בסדרה מה חדש ב-WebGPU.
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
- עדכונים עם שחר