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

François Beaufort
François Beaufort

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

תמיכה במצב תאימות של WebGPU ב-OpenGL ES 3.1

ממשק WebGPU מתוכנן כך שיתאים לממשקי API מודרניים לגרפיקה כמו Vulkan,‏ Metal ו-D3D12, אבל להרבה משתמשים יש חומרה ישנה שלא תומכת בתקנים האלה. כדי לגשר על הפער הזה ולהבטיח נגישות רחבה, אנחנו משיקים ב-Chrome תכונה חדשה שנקראת 'מצב תאימות'.

במצב הזה אפשר להפעיל WebGPU בממשקי API ישנים יותר לגרפיקה, כמו OpenGL ES 3.1. טירגוט של קבוצת משנה מוגבלת מעט של מפרט WebGPU מבטיח שהאפליקציה האינטרנטית תהיה נגישה לכולם, החל ממערכות הגיימינג העדכניות ביותר ועד למחשבים ניידים ולמכשירים ניידים ישנים יותר. הצוות מתחיל עם Android, אבל בודק אפשרות לתמיכה במכשירים אחרים, כמו ChromeOS עם OpenGL ES 3.1 ו-Windows עם Direct3D 11.

בהרבה אפליקציות אינטרנט, כדי להפעיל את מצב התאימות צריך להעביר featureLevel: "compatibility" כשקוראים ל-requestAdapter(). אם המכשיר שלכם תומך ב-Core WebGPU,‏ Chrome יחזיר מתאם עם יכולות Core, אבל אפליקציית האינטרנט תדע להישאר בגבולות התאימות, אלא אם היא תפעיל את התכונה "core-features-and-limits" (או תפעיל את כל התכונות הזמינות). באפליקציות מורכבות יותר, יכול להיות שיידרשו שינויים קלים כדי להתאים למגבלות של המצב הזה.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

מידע מפורט על ההגבלות האדריכליות הספציפיות של המצב הזה מופיע במדריך בנושא יסודות WebGPU. בנוסף, כל הדוגמאות של WebGPU תומכות עכשיו במצב תאימות. אפשר גם לקרוא את הצהרת הכוונות לגבי משלוח.

קבצים מצורפים זמניים

אפשר להשתמש בדגל החדש TRANSIENT_ATTACHMENT GPUTextureUsage כדי ליצור קבצים מצורפים שצורכים פחות זיכרון. כך פעולות של העברת רינדור נשארות בזיכרון של המשבצת, מה שמונע תנועה של VRAM ויכול למנוע הקצאה של VRAM לטקסטורות.

כשמגדירים טקסטורה כזמנית (או כטקסטורה ללא זיכרון), המעבד הגרפי יודע שהוא צריך את התוכן של הטקסטורה רק באופן זמני – כלומר, רק במהלך שלב העיבוד הנוכחי. בנוסף, מכיוון שהתוכן של המרקם נמחק אחרי שלב העיבוד, יכול להיות שהמנהל לא יצטרך להקצות לו VRAM בכלל.

בדוגמה הבאה אפשר לראות איך יוצרים טקסטורה זמנית.

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

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

אפשר לעיין בדוגמה של MSAA ב-WebGPU‏ – Hello Triangle ובהודעה על כוונה להשיק.

התוסף texture_and_sampler_let של WGSL

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

אפשר לעיין בדוגמה הבאה ובכוונה להשיק.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

עדכונים של Dawn

אלה רמות המגבלה החדשות שזמינות:

אימות SPIR-V מופעל כברירת מחדל ב-Android כדי לספק שכבת אבטחה נוספת ולמנוע חוסר יציבות של מנהל ההתקן כתוצאה מקלט פגום. מידע נוסף

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

מה חדש ב-WebGPU

רשימה של כל הנושאים שנסקרו בסדרת המאמרים What's New in WebGPU.

Chrome 146

Chrome 145

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