Tính năng mới trong WebGPU (Chrome 147 – 148)

François Beaufort
François Beaufort

Ngày xuất bản: 22 tháng 4 năm 2026

Tiện ích linear_indexing của WGSL

Tiện ích ngôn ngữ WGSL linear_indexing cho phép bạn sử dụng các giá trị tích hợp sau đây trong nhóm công việc:

  • global_invocation_index: Vị trí tuyến tính của lệnh gọi hiện tại trong lưới chương trình đổ bóng tính toán tổng. Giá trị đầu vào u32 được tính dựa trên global_invocation_id, workgroup_sizenum_workgroups.

  • workgroup_index: Vị trí tuyến tính của nhóm công việc hiện tại trong lưới chương trình đổ bóng tính toán tổng thể. Giá trị đầu vào u32 trong đó tất cả các lệnh gọi trong cùng một nhóm công việc đều dùng chung một chỉ mục.

Tiện ích này giải quyết vấn đề tính toán chỉ mục thủ công từ toạ độ 3D, đây là một quy trình lặp đi lặp lại và dễ xảy ra lỗi. Bằng cách chuyển logic này vào chính ngôn ngữ, WGSL cải thiện khả năng đọc mã và loại bỏ các phép tính lặp đi lặp lại thông thường.

Bạn có thể phát hiện tính năng này của tiện ích ngôn ngữ bằng navigator.gpu.wgslLanguageFeatures. Hãy xem ví dụ sau và ý định phát hành.

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

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

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

  override x : u32;
  override y : u32;
  override z : u32;

  @compute @workgroup_size(x, y, z)
  fn main(@builtin(workgroup_index) wg_index : u32,
          @builtin(global_invocation_index) g_index : u32) {

  // The workgroup_index built-in value is equivalent to:
  // (@builtin(workgroup_id).x +
  // (@builtin(workgroup_id).y * @builtin(num_workgroups).x) +
  // (@builtin(workgroup_id).z * @builtin(num_workgroups).x * @builtin(num_workgroups).y))

  // The global_invocation_index built-in value is equivalent to:
  // (@builtin(global_invocation_id).x +
  // (@builtin(global_invocation_id).y * x * @builtin(num_workgroups).x) +
  // (@builtin(global_invocation_id).z * x * @builtin(num_workgroups).x * y * @builtin(num_workgroups).y))
  }`,
});

WebGPU trên Linux NVIDIA

Sau khi triển khai WebGPU trên Linux trước đó, khả năng hỗ trợ đang mở rộng để bao gồm các trình điều khiển NVIDIA hiện đại (2024-05) trên Wayland. Xem vấn đề 442791440.

Thông tin cập nhật về Dawn

wgpu::FeatureName::AdapterPropertiesDRM (chỉ có trên Vulkan) cho phép bạn truy vấn thông tin DRM Linux về bộ chuyển đổi. Xem Dawn CL 299575.

Nội dung này chỉ đề cập đến một số điểm nổi bật chính. Hãy xem danh sách đầy đủ các cam kết.

Tính năng mới trong WebGPU

Danh sách mọi nội dung đã được đề cập trong loạt bài Tính năng mới trong WebGPU.

Chrome 147-148

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