Увеличьте лимит maxTextureArrayLayers
Максимально допустимое значение глубины или количества слоев 2D-текстуры по умолчанию составляет 256. Теперь можно запрашивать до 2048, используя ограничение maxTextureArrayLayers , если оно поддерживается. См. следующий пример и проблему 42241514 .
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
Оптимизация загрузки буфера для серверной части Vulkan
Теперь доступен быстрый путь при вызове метода writeBuffer() серверной части GPUQueue для Vulkan. Данные теперь могут быть записаны непосредственно в буфер назначения, что устраняет необходимость в дополнительном копировании и синхронизации. Эта оптимизация уменьшает трафик памяти, необходимый для загрузки данных в графический процессор.
Оптимизация быстрого пути требует, чтобы память буфера была видимой для хоста и без каких-либо ожидающих операций графического процессора. См. выпуск 42242084 .
Улучшение времени компиляции шейдеров
Команда Chrome повышает эффективность Tint , компилятора языка шейдеров WebGPU. В настоящее время Tint несколько раз изменяет абстрактное синтаксическое дерево (AST) кода шейдера перед генерацией машинного кода — процесс, который на некоторых платформах является ресурсоемким. Чтобы оптимизировать это, вводится новое промежуточное представление (IR), а также переработанные серверные части, которые его используют. Это изменение направлено на ускорение компиляции шейдеров.
![Создание конвейера рендеринга включает преобразование WGSL в SPIR-V с помощью компилятора Tint, а затем в ISA с помощью компилятора драйверов.](https://developer.chrome.google.cn/static/blog/new-in-webgpu-126/image/render-pipeline-creation-diagram.jpg?authuser=3&hl=ru)
Эти улучшения, уже доступные на Android, постепенно распространяются на устройства ChromeOS, поддерживающие WebGPU с серверной частью Vulkan. См. выпуск 42250751 .
Отправленные командные буферы должны быть уникальными.
Каждый GPUCommandBuffer, отправленный в GPUQueue с помощью метода submit()
должен быть уникальным, в противном случае генерируется ошибка проверки. Это была ошибка спецификации . См. выпуск 42241492 .
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
Обновления рассвета
Оболочка C++ webgpu_cpp.h теперь содержит только заголовок, что упрощает ее использование и упрощает интеграцию с альтернативными оболочками C++. См. выпуск 40195122 .
API C webgpu.h больше не раскрывает понятие объектов Swapchain. Это изменение призвано тесно согласовываться с API JavaScript. Внутренняя настройка теперь выполняется с помощью метода Configure()
нового объекта wgpu::Surface
, который может быть изменен в будущем. Ознакомьтесь с примером в документации по созданию приложения с помощью WebGPU . См. выпуск 42241264 .
Ознакомьтесь с исчерпывающим списком коммитов .
Что нового в 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
- Обновления рассвета