Что нового в 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 GPURenderPassDepthStencilAttachment для улучшения эргономики. Это более простой подход, чем использование GPUTextureView для получения представления по умолчанию. См. issue 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() . См. issue 382514673 .

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

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

Удалить атрибут GPUAdapter isFallbackAdapter

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

Обновления Dawn

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

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

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

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

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

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

Что нового в WebGPU

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

Хром 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