Опубликовано: 23 апреля 2025 г.
Атрибут gPUAdapterInfo isFallbackAdapter
Логический атрибут gPUAdapterInfo isFallbackAdapter указывает, имеет ли GPUAdapter существенные ограничения производительности в обмен на более широкую совместимость, более предсказуемое поведение или улучшенную конфиденциальность. Это дополнение было необходимо, поскольку библиотеки, использующие предоставленные пользователем объекты GPUDevice, не могли получить доступ к этой информации через атрибут adapterInfo в GPUDevice. См. следующий пример и проблему 403172841 .
const adapter = await navigator.gpu.requestAdapter();
if (adapter?.info.isFallbackAdapter) {
// The returned adapter is a software-backed fallback adapter, which
// may have significantly lower performance and fewer features.
}
Поскольку Chrome пока не поддерживает резервные адаптеры, атрибут isFallbackAdapter в данный момент всегда имеет значение false на устройствах пользователей. Мы изучаем возможность устаревания и удаления атрибута isFallbackAdapter для GPUAdapter. См. план внедрения .
Улучшения времени компиляции шейдеров в D3D12
Команда Chrome продолжает совершенствовать Tint, компилятор языка шейдеров WebGPU, добавляя промежуточное представление (IR) для устройств, поддерживающих WebGPU с бэкендом D3D12. Это IR, расположенное между абстрактным синтаксическим деревом (AST) Tint и разработчиком бэкенда HLSL, сделает компилятор более эффективным и удобным для сопровождения, что в конечном итоге принесет пользу как разработчикам, так и пользователям. Первые тесты показывают, что новая версия Tint работает до 10 раз быстрее при преобразовании шейдеров Unity WGSL в HLSL.

Эти улучшения, уже доступные на Android, ChromeOS и macOS, постепенно распространяются на устройства Windows, поддерживающие WebGPU с бэкэндом D3D12. См. проблему 42251045 .
Сохраняйте и копируйте изображения холста.
Теперь пользователи Chrome могут щелкнуть правой кнопкой мыши по холсту WebGPU и получить доступ к пунктам контекстного меню «Сохранить изображение как…» или «Копировать изображение» . См. проблему 40902474 .

Ограничения режима совместимости лифта
Экспериментальная функция "core-features-and-limits" доступная на устройстве GPUDevice, снимает все ограничения режима совместимости (функции и ограничения), если включен флаг chrome://flags/#enable-unsafe-webgpu . См. проблему 395855517 .
Запрос GPUAdapter с параметром featureLevel: "compatibility" указывает браузеру на необходимость выбора экспериментального режима совместимости с WebGPU . В случае успеха полученный адаптер будет "compatibility-defaulting". В противном случае он будет "core-defaulting", что эквивалентно использованию параметра featureLevel: "core" . Более того, вызов requestDevice() без requiredFeatures и requiredLimits запрашивает GPUDevice с возможностями GPUAdapter по умолчанию.
Адаптеры, использующие функцию "core-features-and-limits" по умолчанию, всегда поддерживают эту функцию, и она автоматически включается на созданных на их основе графических устройствах. Для адаптеров, использующих "core-features-and-limits" по умолчанию, эта функция может поддерживаться и может быть запрошена на созданных на их основе графических устройствах. Оба типа адаптеров также могут поддерживать такие функции, как "float32-blendable" , которая является необязательной как в основном режиме, так и в режиме совместимости.
Следующий пример относится к приложению, которое требует поддержки "float32-blendable" и поддерживает использование основных функций, если они доступны, но использует только функции совместимости, если основные функции недоступны.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (!adapter || !adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
requiredFeatures.push("core-features-and-limits");
}
const device = await adapter.requestDevice({ requiredFeatures });
if (!device.features.has("core-features-and-limits")) {
// Compatibility mode restrictions validation rules will apply.
}
Экспериментальные атрибуты GPUAdapter featureLevel и isCompatibilityMode были удалены в пользу функции "core-features-and-limits" . См. проблему 395855516 .
Утренние обновления
Перечисление статуса обратного вызова InstanceDropped было переименовано в CallbackCancelled , чтобы уточнить, что обратный вызов был отменен, но фоновая обработка, связанная с этим событием, например, компиляция конвейера, может продолжаться. Новое название более универсально, на случай, если позже будет добавлен другой механизм отмены. См. проблему 520 .
Перечисление wgpu::PopErrorScopeStatus::EmptyStack , указывающее на то, что стек ошибок не удалось очистить, было переименовано в wgpu::PopErrorScopeStatus::Error (что также является более универсальным решением). Теперь функция обратного вызова также включает соответствующее пояснение к ошибке для облегчения отладки. См. проблему 369 .
Здесь описаны лишь некоторые из ключевых моментов. Ознакомьтесь с полным списком изменений .
Что нового в WebGPU?
Список всего, что было рассмотрено в серии статей «Что нового в WebGPU» .
Хром 144
- Расширение WGSL subgroup_id
- Расширение WGSL uniform_buffer_standard_layout
- WebGPU на Linux
- Более быстрая запись буфера и текстуры
- Утренние обновления
Хром 143
- Компонент текстуры swizzle
- Удалить использование текстур в хранилище только для чтения bgra8unorm
- Утренние обновления
Хром 142
Хром 141
- Завершено тонирование ИК-излучения
- Анализ целочисленных диапазонов в компиляторе WGSL
- Обновление SPIR-V 1.4 для бэкенда Vulkan
- Утренние обновления
Хром 140
- Устройство запрашивает использование адаптера
- Сокращенная запись для использования текстуры там, где используется представление текстуры.
- WGSL textureSampleLevel поддерживает одномерные текстуры.
- Прекратить использование текстур в режиме только для чтения в bgra8unorm
- Удалите атрибут isFallbackAdapter из списка GPUAdapter.
- Утренние обновления
Хром 139
- Поддержка 3D-текстур для сжатых форматов BC и ASTC.
- Новая функция «Основные функции и ограничения»
- Пробная версия Origin для режима совместимости с WebGPU
- Утренние обновления
Хром 138
- Сокращенная запись для использования буфера в качестве ресурса привязки.
- Изменения требований к размеру буферов, отображаемых при создании.
- Архитектурный отчет для современных графических процессоров.
- Устаревший атрибут isFallbackAdapter для GPUAdapter
- Утренние обновления
Хром 137
- Используйте представление текстуры для привязки внешней текстуры.
- Копирование буферов выполняется без указания смещений и размера.
- Рабочая группа WGSL UniformLoad с использованием указателя на атомарную функцию
- Атрибут powerPreference GPUAdapterInfo
- Удалите атрибут compatibilityMode из GPURequestAdapterOptions.
- Утренние обновления
Хром 136
- Атрибут gPUAdapterInfo isFallbackAdapter
- Улучшения времени компиляции шейдеров в D3D12
- Сохраняйте и копируйте изображения холста.
- Ограничения режима совместимости лифта
- Утренние обновления
Хром 135
- Разрешить создание макета конвейера с макетом группы привязки пустого значения
- Разрешите области просмотра выходить за пределы границ целевых областей рендеринга.
- Упрощенный доступ к экспериментальному режиму совместимости на Android.
- Удалите ограничение maxInterStageShaderComponents.
- Утренние обновления
Хром 134
- Оптимизация рабочих нагрузок машинного обучения с помощью подгрупп
- Удалить поддержку типов текстур с возможностью фильтрации (float filterable texture types) как смешиваемых (blendable).
- Утренние обновления
Хром 133
- Дополнительные форматы unorm8x4-bgra и 1-компонентные вершинные форматы
- Разрешить запрос неизвестных лимитов с неопределенным значением.
- Изменения в правилах выравнивания WGSL
- Повышение производительности WGSL за счет отбрасывания
- Используйте параметр `videoFrame displaySize` для внешних текстур.
- Обработка изображений с нестандартной ориентацией осуществляется с помощью функции copyExternalImageToTexture.
- Улучшение опыта разработчиков
- Включите режим совместимости с помощью featureLevel
- Очистка характеристик экспериментальной подгруппы
- Устаревшее ограничение maxInterStageShaderComponents
- Утренние обновления
Хром 132
- Использование текстурного представления
- смешивание 32-битных текстур с плавающей запятой
- Атрибут GPUDevice adapterInfo
- Настройка контекста холста с недопустимым форматом вызывает ошибку JavaScript.
- Фильтрация ограничений сэмплера для текстур
- Эксперименты с расширенными подгруппами
- Улучшение опыта разработчиков
- Экспериментальная поддержка 16-битных нормализованных форматов текстур.
- Утренние обновления
Хром 131
- Расстояние между клипами в WGSL
- GPUCanvasContext getConfiguration()
- Примитивы точек и линий не должны иметь смещения по глубине.
- Встроенные функции сканирования для подгрупп.
- Экспериментальная поддержка непрямого режима с несколькими вариантами отсчета.
- Параметр компиляции модуля шейдера: строгая математика
- Удалить GPUAdapter requestAdapterInfo()
- Утренние обновления
Хром 130
- Смешивание из двух источников
- Улучшения времени компиляции шейдеров в Metal.
- Функция requestAdapterInfo() объявлена устаревшей.
- Утренние обновления
Хром 129
- Поддержка HDR с режимом тонального отображения холста.
- Расширенная поддержка подгрупп
- Утренние обновления
Хром 128
- Экспериментирование с подгруппами
- Устаревшая настройка смещения глубины для линий и точек.
- Скрыть предупреждение DevTools о незафиксированной ошибке, если используется preventDefault.
- WGSL сначала интерполирует выборку, а затем либо
- Утренние обновления
Хром 127
- Экспериментальная поддержка OpenGL ES на Android
- Информационный атрибут GPUAdapter
- Улучшения взаимодействия с WebAssembly
- Улучшена обработка ошибок кодировщика команд.
- Утренние обновления
Хром 126
- Увеличьте лимит maxTextureArrayLayers.
- Оптимизация загрузки буфера для бэкенда Vulkan.
- Улучшения времени компиляции шейдеров
- Буферы отправленных команд должны быть уникальными.
- Утренние обновления
Хром 125
Хром 124
- Текстуры для хранения данных только для чтения и для чтения и записи
- Поддержка работников сферы услуг и работников, работающих по совместительству
- Новые атрибуты информации об адаптере
- Исправлены ошибки
- Утренние обновления
Хром 123
- Поддержка встроенных функций DP4a в WGSL
- Неограниченные параметры указателей в WGSL
- Синтаксический сахар для разыменования составных элементов в WGSL
- Отдельное состояние только для чтения для параметров трафарета и глубины.
- Утренние обновления
Хром 122
- Расширьте охват аудитории с помощью режима совместимости (функция находится в разработке).
- Увеличьте лимит maxVertexAttributes.
- Утренние обновления
Хром 121
- Поддержка WebGPU на Android
- Для компиляции шейдеров в Windows используйте DXC вместо FXC.
- Запросы по временным меткам в вычислительных и рендеринговых проходах
- Точки входа по умолчанию для модулей шейдеров
- Поддержка display-p3 в качестве цветового пространства GPUExternalTexture
- информация о кучах памяти
- Утренние обновления
Хром 120
- Поддержка 16-битных значений с плавающей запятой в WGSL
- Расширяйте границы возможного
- Изменения в состоянии глубины-шаблона
- Обновления информации об адаптере
- Квантование запросов по временным меткам
- Особенности весенней уборки
Хром 119
- Фильтруемые 32-битные текстуры с плавающей запятой
- unorm10-10-10-2 формат вершин
- формат текстуры rgb10a2uint
- Утренние обновления
Хром 118
- Поддержка HTMLImageElement и ImageData в
copyExternalImageToTexture() - Экспериментальная поддержка текстур для чтения и записи, а также для чтения и только для чтения.
- Утренние обновления
Хром 117
- Неустановленный буфер вершин
- Отключить группу привязки
- Отключение ошибок при создании асинхронного конвейера в случае потери устройства
- Обновления по созданию шейдерных модулей SPIR-V
- Улучшение опыта разработчиков
- Конвейеры кэширования с автоматически генерируемой структурой.
- Утренние обновления
Хром 116
- Интеграция с WebCodecs
-
requestDevice()объекта GPUAdapter возвращает сообщение о потере устройства. - Обеспечьте плавное воспроизведение видео, если вызывается
importExternalTexture() - Соответствие спецификации
- Улучшение опыта разработчиков
- Утренние обновления
Хром 115
- Поддерживаемые языковые расширения WGSL
- Экспериментальная поддержка Direct3D 11
- При подключении к сети переменного тока по умолчанию используется дискретная видеокарта.
- Улучшение опыта разработчиков
- Утренние обновления
Хром 114
- Оптимизировать JavaScript
- Метод getCurrentTexture() на неконфигурированном холсте вызывает ошибку InvalidStateError.
- Обновления WGSL
- Утренние обновления