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

François Beaufort
François Beaufort

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

Tiện ích linear_indexing 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 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 đổ bóng tính toán tổng thể. 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 làm việc hiện tại trong lưới đổ bóng điện 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 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 di 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 gặp.

Bạn có thể phát hiện tính năng của tiện ích ngôn ngữ này bằng cách sử dụ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 đó, phạm vi hỗ trợ đang được mở rộng để bao gồm trình điều khiển NVIDIA hiện đại (2024-05) trên Wayland. Hãy 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 của Linux về bộ chuyển đổi. Xem Dawn CL 299575.

Đây chỉ là một số điểm nổi bật chính. 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 149-150

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