Экспериментальная поддержка OpenGL ES на Android
Теперь вы можете получить доступ к GPUAdapter
из серверной части OpenGL ES при запросе экспериментального режима совместимости WebGPU в Chrome для Android. Это особенно полезно для устройств Android, на которых отсутствует поддержка Vulkan 1.1 или более поздней версии. См. следующий пример и выполните команду Dawn:1545 .
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
![На странице отчета WebGPU отображается информация GPUAdapter из серверной части OpenGL ES на устройстве Android.](https://developer.chrome.com/static/blog/new-in-webgpu-127/image/opengl-es-android.jpg?authuser=5&hl=ru)
Поскольку эта функция все еще находится на экспериментальной стадии, вам необходимо выполнить следующие шаги:
- Включите следующие флаги Chrome: «Поддержка небезопасного WebGPU», «Функции разработчика WebGPU» и «Включить командную строку на нерутированных устройствах».
- Включите отладку по USB на вашем устройстве Android.
- Подключите устройство Android к рабочей станции, запустите
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
чтобы предпочесть серверную часть OpenGL ES Vulkan, и перезапустите. Хром.
Информационный атрибут GPUAdapter
Получение идентифицирующей информации об адаптере теперь можно выполнить синхронно с помощью info
атрибута GPUAdapter. Раньше вызов асинхронного метода GPUAdapter requestAdapterInfo()
был единственным способом получить информацию об адаптере. Однако requestAdapterInfo()
был удален из спецификации WebGPU и будет удален из Chrome позднее в этом году, чтобы дать веб-разработчикам достаточно времени для осуществления необходимого перехода. См. следующий пример: Статус Chrome и проблема 335383516 .
const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;
// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();
console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"
Улучшения взаимодействия с WebAssembly
Чтобы обеспечить передачу кучи WebAssembly непосредственно в WebGPU, размеры следующих аргументов BufferSource больше не ограничиваются 2 ГБ: dynamicOffsetsData
в setBindGroup()
, исходные data
в writeBuffer()
и исходные data
Pin writeTexture()
. См. выпуск 339049388 .
Улучшены ошибки кодировщика команд.
Некоторые ошибки проверки, возникающие из-за кодировщиков команд, теперь будут иметь улучшенную контекстную информацию. Например, попытка запустить этап вычислений, когда этап рендеринга был еще открыт, привела к следующей ошибке.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)
Здесь описывается причина ошибки, однако не указывается, какой вызов на самом деле вызвал ошибку проверки. Следующая ошибка демонстрирует улучшенный обмен сообщениями, включающий команду, вызвавшую ошибку. См. изменение 192245 .
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
- While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).
Обновления рассвета
API C webgpu.h больше не предоставляет wgpuSurfaceGetPreferredFormat()
, C-эквивалент wgpu::Surface::GetPreferredFormat()
. Вместо этого используйте wgpu::Surface::GetCapabilities()
чтобы получить список поддерживаемых форматов, затем используйте formats[0]
, чтобы получить формат текстуры, предпочтительный для этой поверхности. Тем временем вызов wgpu::Surface::GetPreferredFormat()
выдает предупреждение об устаревании. См. выпуск 290 .
Поддерживаемые варианты использования текстур поверхности теперь доступны через wgpu::SurfaceCapabilities::usages
при вызове wgpu::Surface::GetCapabilities()
. Ожидается, что они всегда будут включать wgpu::TextureUsage::RenderAttachment
. См. выпуск 301 .
Это касается только некоторых ключевых моментов. Ознакомьтесь с исчерпывающим списком коммитов .
Что нового в 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
- Обновления рассвета