Что нового в WebGPU (Chrome 140)

Франсуа Бофор
François Beaufort

Опубликовано: 27 августа 2025 г.

Устройство запрашивает использование адаптера

Согласно спецификации WebGPU , адаптер помечается как «потребленный» после успешного запроса устройства. Следовательно, любые последующие вызовы requestDevice() с использованием того же адаптера теперь будут приводить к отклонению промиса. Ранее эти вызовы возвращали устройство, потерянное при создании. См. проблему 415825174 .

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

await adapter.requestDevice(); // Fails because adapter has been consumed.

Сокращенная запись для использования текстуры там, где используется представление текстуры.

Теперь GPUTexture можно использовать напрямую в качестве GPUBindingResource для передачи в шейдер для привязки. Его также можно использовать в качестве view GPURenderPassColorAttachment, GPURenderPassColorAttachment resolveTarget и view для улучшения эргономики. Это предлагает более простой подход, чем использование GPUTextureView для получения представления по умолчанию. См. проблему 425906323 .

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel поддерживает одномерные текстуры.

Теперь одномерные текстуры можно сэмплировать с помощью textureSampleLevel() для обеспечения согласованности с двумерными текстурами. Это позволяет сэмплировать одномерную текстуру из вершинного шейдера, что ранее было возможно только из фрагментного шейдера с помощью textureSample() . См. проблему 382514673 .

Прекратить использование текстур в режиме только для чтения в bgra8unorm

Использование формата "bgra8unorm" с текстурами, хранящимися только для чтения, теперь считается устаревшим. Спецификация WebGPU явно запрещает это, а его предыдущее разрешение в Chrome было ошибкой, поскольку этот формат предназначен только для записи и не является переносимым. См. проблему 427681156 .

Удалите атрибут isFallbackAdapter из списка GPUAdapter.

Как было объявлено ранее, атрибут GPUAdapter isFallbackAdapter теперь удален. Он заменен атрибутом GPUAdapterInfo isFallbackAdapter , который был введен в Chrome 136. См. намерение удалить .

Утренние обновления

Функция wgpuInstanceGetWGSLLanguageFeatures() используется для получения списка языковых функций WGSL, поддерживаемых экземпляром. Ранее она возвращала значение WGPUStatus . Теперь она не возвращает значение, поскольку не может завершиться ошибкой. См. проблему 429178774 .

Функция wgpuSurfacePresent() теперь возвращает ошибку WGPUStatus , если у поверхности нет текущей текстуры. См. проблему 425930323.

Новая функция wgpu::InstanceFeatureName::MultipleDevicesPerAdapter позволяет адаптерам создавать несколько устройств без их "использования". См. проблему 415825174 .

Параметр dump_shaders_on_failure позволяет выводить данные из шейдеров только при сбое в целях отладки . Он применяется исключительно к бэкендам D3, хотя в будущем возможно расширение на другие бэкенды. См. проблему 429187478 .

В бэкэнд Vulkan были внесены многочисленные изменения для снижения накладных расходов при отправке проходов рендеринга, особенно для повышения производительности на мобильных графических процессорах. Например: кэширование VkFramebuffers .

Здесь описаны лишь некоторые из ключевых моментов. Ознакомьтесь с полным списком изменений .

Что нового в WebGPU?

Список всего, что было рассмотрено в серии статей «Что нового в WebGPU» .

Хром 144

Хром 143

Хром 142

Хром 141

Хром 140

Хром 139

Хром 138

Хром 137

Хром 136

Хром 135

Хром 134

Хром 133

Хром 132

Хром 131

Хром 130

Хром 129

Хром 128

Хром 127

Хром 126

Хром 125

Хром 124

Хром 123

Хром 122

Хром 121

Хром 120

Хром 119

Хром 118

Хром 117

Хром 116

Хром 115

Хром 114

Хром 113