Поддерживаемые расширения языка WGSL
Член wgslLanguageFeatures
объекта GPU
перечисляет имена поддерживаемых языковых расширений WGSL. Поддерживаемые языковые расширения WGSL включаются автоматически, поэтому вам не нужно явно запрашивать одно из них. Этот список в настоящее время пуст, но вы можете ожидать их появления в будущем (например, do-while loops
). См. issue dawn:1777 .
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Экспериментальная поддержка Direct3D 11
Команда Chromium работает над добавлением поддержки WebGPU для Direct3D 11. Теперь вы можете поэкспериментировать с ней локально, запустив Chrome на Windows с флагами командной строки --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. См. issue dawn:1705 .
Получите дискретный графический процессор по умолчанию при питании от сети переменного тока
На устройствах MacOS с двумя GPU, если requestAdapter()
вызывается без параметра powerPreference
, возвращается дискретный GPU, когда устройство пользователя подключено к сети переменного тока. В противном случае возвращается интегрированный GPU. См. изменение 4499307 .
Улучшение опыта разработчиков
Новые предупреждения DevTools
Если ключ depth
используется в GPUExtend3DDict
, в консоли DevTools отображается предупреждение, поскольку правильный ключ — depthOrArrayLayers
. См. issue chromium:1440900 .
Предупреждение также выдается, если GPUBlendComponent
имеет смесь явных и дефолтных членов. См. проблему dawn:1785 .
Несмотря на то, что нулевые отправка и розыгрыши допустимы, предупреждение призывает разработчиков избегать их, когда это возможно. См. выпуск dawn:1786 .
Улучшенные сообщения об ошибках
Улучшенное сообщение об ошибке теперь предоставляется при использовании GPUCommandEncoder
, если finish()
уже был вызван. См. issue dawn:1736 .
При отправке буферов команд с уничтоженными объектами метки буферов команд, которые использовались в submit()
теперь видны в сообщении об ошибке. См. issue dawn:1747 .
Недопустимая часть состояния трафарета глубины теперь указывается в сообщении об ошибке при проверке depthStencil
. См. проблему dawn:1735 .
Сообщение об ошибке проверки minBindingSize
теперь сообщает группу и номер привязки, которая не прошла проверку, а также буфер. См. issue dawn:1604 .
Сообщения об ошибках, возвращаемые методом mapAsync()
объекта GPUBuffer
, были улучшены, чтобы помочь разработчикам при отладке. См. пример ниже и проблему chromium:1431622 .
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
Метки в инструментах отладки macOS
Переключатель отладки use_user_defined_labels_in_backend
позволяет вам пересылать метки объектов в бэкэнд, чтобы их можно было увидеть в инструментах отладки для конкретных платформ, таких как RenderDoc, PIX или Instruments. С этого момента, лучший опыт отладки предоставляется на macOS, когда вы включаете его для отладки . Смотрите проблему dawn:1784

Записать HLSL в случае сбоя компиляции
Переключатель отладки dump_shaders
позволяет вам регистрировать входные шейдеры WGSL и переведенные бэкэнд-шейдеры. С этого момента, когда вы включаете его для отладки , HLSL будет сбрасываться, если он не может компилироваться. Смотрите проблему dawn:1681
Обновления рассвета
Сбросить буфер вершин
Передача nullptr
вместо wgpu::Buffer
в SetVertexBuffer()
на wgpu::RenderPassEncoder
или wgpu::RenderBundleEncoder
позволяет вам сбросить ранее установленный буфер вершин в данном слоте. См. issue dawn:1675 .
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Временные вложения
Вы можете создавать вложения, которые позволяют операциям рендеринга оставаться в памяти плитки, избегая трафика VRAM и потенциально избегая выделения VRAM для текстур, устанавливая использование wgpu::TextureUsage::TransientAttachment
. Эта функция поддерживается только для Metal и Vulkan. См. issue dawn: 1695 .
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
Строительство без depot_tools
Новая опция CMake DAWN_FETCH_DEPENDENCIES
позволяет извлекать зависимости Dawn с помощью скрипта Python, который считывает файлы DEPS, вместо того, чтобы требовать установки depot_tools
всеми проектами, которые от него зависят. См. изменение 131750 .
Что нового в WebGPU
Список всего, что было рассмотрено в серии « Что нового в WebGPU» .
Хром 138
- Сокращение для использования буфера в качестве связующего ресурса
- Требования к размеру меняются для буферов, отображаемых при создании
- Отчет об архитектуре последних графических процессоров
- Отменить использование атрибута GPUAdapter isFallbackAdapter
- Обновления рассвета
Хром 137
- Использовать вид текстуры для привязки externalTexture
- Буферы копируются без указания смещения и размера
- WGSL workgroupUniformLoad с использованием указателя на атомарный
- Атрибут powerPreference GPUAdapterInfo
- Удалить атрибут совместимости GPURequestAdapterOptions
- Обновления рассвета
Хром 136
- GPUAdapterInfo — атрибут FallbackAdapter
- Улучшение времени компиляции шейдера на D3D12
- Сохраняйте и копируйте изображения холста
- Снять ограничения режима совместимости
- Обновления рассвета
Хром 135
- Разрешить создание макета конвейера с макетом группы нулевой привязки
- Разрешить областям просмотра выходить за пределы границ целевых объектов рендеринга
- Более простой доступ к экспериментальному режиму совместимости на Android
- Удалить ограничение maxInterStageShaderComponents
- Обновления рассвета
Хром 134
- Улучшите рабочие нагрузки машинного обучения с помощью подгрупп
- Удалить поддержку плавающих фильтруемых типов текстур как смешиваемых
- Обновления рассвета
Хром 133
- Дополнительные форматы вершин unorm8x4-bgra и 1-компонентные
- Разрешить запрашивать неизвестные лимиты с неопределенным значением
- Изменения правил выравнивания WGSL
- Повышение производительности WGSL с отбрасыванием
- Используйте VideoFrame displaySize для внешних текстур
- Обработка изображений с ориентацией, отличной от стандартной, с помощью copyExternalImageToTexture
- Улучшение опыта разработчиков
- Включить режим совместимости с featureLevel
- Экспериментальная подгруппа функций очистки
- Отменить ограничение maxInterStageShaderComponents
- Обновления рассвета
Хром 132
- Использование вида текстуры
- Смешивание 32-битных плавающих текстур
- Атрибут GPUDevice adapterInfo
- Настройка контекста холста с недопустимым форматом приводит к ошибке JavaScript
- Фильтрация ограничений сэмплера на текстуры
- Расширенные эксперименты с подгруппами
- Улучшение опыта разработчиков
- Экспериментальная поддержка 16-битных нормализованных форматов текстур
- Обновления рассвета
Хром 131
- Расстояния клипов в WGSL
- GPUCanvasContext получитьКонфигурацию()
- Точечные и линейные примитивы не должны иметь смещения глубины.
- Встроенные функции сканирования для подгрупп
- Экспериментальная поддержка многоразового непрямого вывода
- Опция компиляции шейдерного модуля строгая математика
- Удалить GPUAdapter requestAdapterInfo()
- Обновления рассвета
Хром 130
- Смешивание двух источников
- Улучшение времени компиляции шейдеров на Metal
- Устаревание GPUAdapter requestAdapterInfo()
- Обновления рассвета
Хром 129
- Поддержка HDR с режимом тональной компрессии Canvas
- Расширенная поддержка подгрупп
- Обновления рассвета
Хром 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
- Используйте DXC вместо FXC для компиляции шейдеров в Windows
- Запросы временных меток в проходах вычислений и рендеринга
- Точки входа по умолчанию в шейдерные модули
- Поддержка display-p3 как цветового пространства GPUExternalTexture
- Информация о кучах памяти
- Обновления рассвета
Хром 120
- Поддержка 16-битных значений с плавающей точкой в WGSL
- Раздвиньте границы
- Изменения в состоянии трафарета глубины
- Обновления информации об адаптере
- Квантование запросов временных меток
- Особенности генеральной уборки
Хром 119
- Фильтруемые 32-битные плавающие текстуры
- формат вершин unorm10-10-10-2
- формат текстуры rgb10a2uint
- Обновления рассвета
Хром 118
- Поддержка HTMLImageElement и ImageData в
copyExternalImageToTexture()
- Экспериментальная поддержка текстур хранения данных для чтения и записи и только для чтения
- Обновления рассвета
Хром 117
- Сбросить буфер вершин
- Отменить привязку группы
- Ошибки тишины при создании асинхронного конвейера при потере устройства
- Обновления создания шейдерного модуля SPIR-V
- Улучшение опыта разработчиков
- Кэширование конвейеров с автоматически сгенерированной компоновкой
- Обновления рассвета
Хром 116
- Интеграция WebCodecs
- Потерянное устройство, возвращенное GPUAdapter
requestDevice()
- Сохраняйте плавность воспроизведения видео, если вызывается
importExternalTexture()
- Соответствие спецификации
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 115
- Поддерживаемые расширения языка WGSL
- Экспериментальная поддержка Direct3D 11
- Получите дискретный графический процессор по умолчанию при питании от сети переменного тока
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 114
- Оптимизировать JavaScript
- getCurrentTexture() на ненастроенном холсте выдает InvalidStateError
- Обновления WGSL
- Обновления рассвета