מה חדש ב-WebGPU (Chrome 114)

François Beaufort
François Beaufort

אופטימיזציה של JavaScript

שותפי הפיתוח של Chromium הגדילו את מהירות הביצועים של WebGPU בשיטות GPUComputePassEncoder,‏ GPURenderPassEncoder ו-GPUCommandEncoder על ידי צמצום התקורה של ביצוע קריאות מקוד שנוצר במנוע JavaScript של V8 למטפלים ב-C++ במנוע הרינדור של Blink. בעיה chromium:1417558

בבדיקה הבאה של מיקרו-ביצועים מוצג זמן המעבד של קריאות מ-JavaScript שנמוך מ-0.5 אלפיות השנייה לכל 10,000 משיכות, לעומת 0.3 אלפיות השנייה לכל 10,000 משיכות, כלומר שיפור של 40%.

צילום מסך של תרשים השוואה לדפדפן Chrome, שבו מוצגים שיפורים בשיחות מהירות.
תרשים של נקודת השוואה ב-Chrome שמוצגות בו השיפורים בשיחות מהירות (מקור).

getCurrentTexture()‎ בקנבס לא מוגדר גורם להודעת השגיאה InvalidStateError

קריאה ל-method‏ GPUCanvasContext getCurrentTexture() בלוח ציור לא מוגדר גורמת עכשיו להשלכה של InvalidStateError במקום OperationError, בהתאם למפרט WebGPU. אפשר לעיין בבעיה chromium:1424461.

const context = document.querySelector("canvas").getContext("webgpu");
context.getCurrentTexture(); // Throws InvalidStateError

עדכונים בנושא WGSL

עכשיו אפשר לכתוב וקטורים של AbstractInt שממולאים באפסים כ-vec2(),‏ vec3() ו-vec4(). ראו issue tint:1892. לדוגמה:

  • vec2() הוא vec2(0,0)
  • vec3() הוא vec3(0,0,0)
  • vec4() הוא vec4(0,0,0,0)

עדכונים של Dawn

שיפור הודעות השגיאה

תוויות של תיאורים לאובייקטים לא חוקיים לא נמחקות יותר, כך שתוכלו לראות אותן בהודעות השגיאה. issue dawn:1771

הוספת ממשקי API חסרים ל-Node.js

השיטות GPUAdapter::requestAdapterInfo() ו-GPUBuffer::getMapState() מיושמות עכשיו ב-Node.js. ראו issue dawn:1761.

מה חדש ב-WebGPU

רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113