מה חדש ב-WebGPU ‏ (Chrome 144)

François Beaufort
François Beaufort

תאריך פרסום: 7 בינואר 2026

תוסף subgroup_id של WGSL

התוסף לשפת WGSL‏ subgroup_id מאפשר לכם להשתמש בערכים המובנים החדשים הבאים בקבוצות עבודה כשהתוסף subgroups מופעל:

  • subgroup_id: מספק את המזהה של קבוצת משנה של הפעלה בתוך קבוצת העבודה הנוכחית.
  • num_subgroups: מחזירה את מספר תתי-הקבוצות שקיימות בקבוצת העבודה.

בעבר, כדי ליצור אינדקס לזיכרון באמצעות מזהי הפעלה של קבוצת משנה, היה צריך לשחזר מזהה של קבוצת משנה (בדרך כלל באמצעות פעולות אטומיות) כדי למנוע חפיפה בגישה לזיכרון. עכשיו אפשר להשתמש ב-subgroup_id כדי למלא את החצי השני של המשוואה. הפונקציונליות הזו עדיין לא זמינה ב-D3D backend, ולכן היא מדומה שם. אפשר ליצור שוויון ל-local_invocation_index בתור subgroup_invocation_id + subgroup_size * subgroup_id. שימו לב: יכול להיות שיהיו מקרים שבהם קבוצות המשנה לא יהיו מלאות.

אפשר לזהות את התכונה של התוסף הזה לשפה באמצעות navigator.gpu.wgslLanguageFeatures. מומלץ להשתמש בהנחיית requires כדי לציין את האפשרות לאי ניידות באמצעות requires subgroup_id; בחלק העליון של קוד ה-shader של WGSL. אפשר לעיין בדוגמה הבאה ובכוונה להשיק.

if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_id")) {
  throw new Error(`WGSL subgroup_id and num_subgroups built-in values are not available`);
}

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
  throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });

const shaderModule = device.createShaderModule({ code: `
  enable subgroups;
  requires subgroup_id;

  @compute @workgroup_size(64, 1, 1)
  fn main(@builtin(subgroup_id) subgroup_id : u32,
          @builtin(num_subgroups) num_subgroups : u32) {
    // TODO: Use subgroup_id and num_subgroups values.
  }`,
});

התוסף WGSL uniform_buffer_standard_layout

התוסף לשפת WGSL‏ uniform_buffer_standard_layout מאפשר למאגרי נתונים אחידים להשתמש באותם אילוצים של פריסת זיכרון כמו מאגרי נתונים לאחסון, וכך קל יותר לשתף מבני נתונים בשני סוגי המאגרים. המשמעות היא שמאגרי נתונים זמניים אחידים כבר לא צריכים להיות מיושרים ל-16 בייט באלמנטים של מערך, או להוסיף ריפוד להיסטים של מבנה מקונן כדי שיהיו כפולה של 16 בייט.

אפשר לזהות את התכונה של התוסף הזה לשפה באמצעות navigator.gpu.wgslLanguageFeatures. מומלץ להשתמש בהנחיית requires כדי לציין את האפשרות לאי ניידות באמצעות requires uniform_buffer_standard_layout; בחלק העליון של קוד ה-shader של WGSL. אפשר לעיין בדוגמה הבאה ובכוונה להשיק.

if (!navigator.gpu.wgslLanguageFeatures.has("uniform_buffer_standard_layout")) {
  throw new Error(`WGSL uniform buffer standard layout is not available`);
}

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const shaderModule = device.createShaderModule({ code: `
  requires uniform_buffer_standard_layout;

  struct S {
      x: f32
  }
  struct Uniforms {
      a: S,
      b: f32
      // b is at offset 4. Without standard layout, alignment rules would
      // force b to be at offset 16 (or a multiple of 16), and you would have
      // to add extra fields or use an @align attribute.
  }

  @group(0) @binding(0) var<uniform> u: Uniforms;

  @fragment fn fs_main() -> @location(0) vec4<f32> {
      return vec4<f32>(u.a.x);
  }`,
});

‫WebGPU ב-Linux

צוות Chrome משיק את WebGPU ל-Linux בהדרגה, החל מתמיכה במעבדי GPU של Intel Gen12+, אבל יש תוכנית ראשונית להרחיב את התמיכה הזו למכשירים נוספים (AMD,‏ NVIDIA). ההטמעה הזו משתמשת בארכיטקטורה שבה WebGPU משתמש ב-Vulkan, ושאר Chromium נשאר ב-OpenGL, תוך שימוש בנתיבי קוד טובים ומוכרים. מידע נוסף

שיפור המהירות של writeBuffer ו-writeTexture

בוצעה אופטימיזציה של writeBuffer() ושל writeTexture() ב-Chrome, וכתוצאה מכך הביצועים השתפרו עד פי 2 לעומת הגרסה הקודמת, בהתאם לגודל הנתונים שמועברים. השינוי הזה משפיע גם על כל המשתמשים בהטמעה של Dawn Wire. מידע נוסף

עדכונים של Dawn

צוות ה-GPU של Android פרסם את גרסת האלפא הראשונה של Kotlin bindings ל-WebGPU ב-Android, שזמינה באמצעות Jetpack. חבילת androidx.webgpu מאפשרת למפתחי Android לגשת לממשק API מודרני של GPU באמצעות Kotlin, בלי להיתקל בבעיות שקיימות ב-OpenGL או במורכבות של Vulkan – זו התפתחות מרגשת לאקוסיסטם!

המידע הזה כולל רק נקודות עיקריות. רשימה מלאה של קומיטים

מה חדש ב-WebGPU

רשימה של כל הנושאים שמופיעים בסדרת המאמרים מה חדש ב-WebGPU.

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

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