Поддерживаемые языковые расширения WGSL
Член wgslLanguageFeatures
объекта GPU
перечисляет имена поддерживаемых расширений языка WGSL. Поддерживаемые расширения языка WGSL включаются автоматически, поэтому вам не нужно явно запрашивать их. В настоящее время этот список пуст, но в будущем их может появиться множество (например, do-while loops
). См. выпуск 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
. См. выпуск Dawn:1705 .
Получите дискретный графический процессор по умолчанию от сети переменного тока
На устройствах macOS с двумя графическими процессорами, если requestAdapter()
вызывается без параметра powerPreference
, дискретный графический процессор возвращается, когда устройство пользователя подключено к сети переменного тока. В противном случае возвращается встроенный графический процессор. См. изменение 4499307 .
Улучшение опыта разработчиков
Новые предупреждения DevTools
Если ключ depth
используется в GPUExtend3DDict
в консоли DevTools отображается предупреждение, поскольку правильным ключом является depthOrArrayLayers
. См. выпуск chromium:1440900 .
Предупреждение также выдается, если GPUBlendComponent
имеет сочетание явных элементов и элементов по умолчанию. См. выпуск Dawn:1785 .
Несмотря на то, что диспетчеризация и отрисовка нулевого размера допустимы, предупреждение призывает разработчиков избегать их, когда это возможно. См. выпуск Dawn:1786 .
Улучшенные сообщения об ошибках
Улучшенное сообщение об ошибке теперь отображается при использовании GPUCommandEncoder
если finish()
уже был вызван. См. выпуск Dawn:1736 .
При отправке командных буферов с уничтоженными объектами метки командных буферов, которые использовались в submit()
теперь видны в сообщении об ошибке. См. выпуск Dawn:1747 .
Недопустимая часть состояния трафарета глубины теперь указывается в сообщении об ошибке при проверке depthStencil
. См. выпуск Dawn:1735 .
Сообщение об ошибке проверки minBindingSize
теперь сообщает о группе и номере привязки, которая не прошла проверку, а также о буфере. См. выпуск 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.
![Снимок экрана приложения «Инструменты» на macOS с пользовательскими метками, полученными из WebGPU.](https://developer.chrome.google.cn/static/blog/new-in-webgpu-115/image/screenshot-instruments-a-75d5272ed4ccf.png?authuser=3&hl=ru)
Зарегистрируйте HLSL, если компиляция не удалась
Переключатель отладки dump_shaders
позволяет регистрировать входные шейдеры WGSL и преобразованные серверные шейдеры. С этого момента, когда вы включите его для отладки , HLSL будет сбрасываться, если его компиляция не удалась. См. выпуск Dawn:1681.
Обновления рассвета
Сбросить буфер вершин
Передача nullptr
вместо wgpu::Buffer
в SetVertexBuffer()
в wgpu::RenderPassEncoder
или wgpu::RenderBundleEncoder
позволяет вам отключить ранее установленный буфер вершин в данном слоте. См. выпуск 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. См. выпуск «Рассвет: 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» .
Хром 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
- Интеграция веб-кодеков
- Потерянное устройство, возвращенное
requestDevice()
- Обеспечьте плавное воспроизведение видео, если вызывается
importExternalTexture()
- Соответствие спецификациям
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 115
- Поддерживаемые языковые расширения WGSL
- Экспериментальная поддержка Direct3D 11
- Получите дискретный графический процессор по умолчанию от сети переменного тока
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 114
- Оптимизировать JavaScript
- getCurrentTexture() на ненастроенном холсте выдает InvalidStateError
- Обновления WGSL
- Обновления рассвета