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

François Beaufort
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, чтобы предоставить доступ к шейдеру для связывания. Его также можно использовать как GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget и GPURenderPassDepthStencilAttachment view для повышения удобства. Это более простой подход, чем использование GPUTextureView для получения представления по умолчанию. Подробнее об этой проблеме…

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 поддерживает 1D-текстуры

Теперь выборку одномерных текстур можно выполнять с помощью 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 внесены изменения, которые позволяют снизить нагрузку при отправке проходов рендеринга, особенно для повышения производительности на мобильных графических процессорах. Например, caching VkFramebuffers.

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

Что нового в WebGPU

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

Chrome 155–156

Chrome 153–154

Chrome 151–152

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