Что нового в WebGPU (Chrome 122)

Франсуа Бофор
François Beaufort

Возможно, на этот раз количество функций WebGPU покажется немного небольшим, но основные улучшения уже не за горами! В следующих выпусках будут такие функции, как DP4a, только для чтения и для чтения и записи текстур, отдельный трафарет и управление глубиной аспекта, рендеринг в 3D-текстурные срезы и улучшения компиляции шейдеров.

А пока узнайте, как улучшить тестирование моделей веб-ИИ с помощью поддержки WebGPU и WebGL в Headless Chrome и почему WebGPU может быть отключен или не работать в Chrome .

Расширьте охват с помощью режима совместимости (функция в разработке)

WebGPU хорошо согласуется с современными графическими API (Vulkan, Metal и D3D12), но некоторые устройства не поддерживают их. Это ограничивает доступность WebGPU, особенно на таких платформах, как Windows (31% пользователей Chrome не поддерживают D3D11.1+), Android (23% не поддерживают Vulkan 1.1+) и ChromeOS (распространение Vulkan растет).

Команда Chrome работает над режимом совместимости в WebGPU, чтобы решить эту проблему, предлагая слегка ограниченную версию WebGPU, которая работает на старых API, таких как D3D11 и OpenGL ES. Это расширит потенциальную базу пользователей WebGPU.

Важно, что приложения, использующие режим совместимости, остаются полностью допустимыми приложениями WebGPU. Устройства без поддержки режима совместимости будут плавно переходить по умолчанию на основной адаптер WebGPU, обеспечивая широкую применимость.

Диаграмма режима совместимости WebGPU.
Расширен режим совместимости с WebGPU.

Ознакомьтесь с предложением и оставьте комментарий , если у вас есть вопросы.

Увеличить лимит maxVertexAttributes

Максимальное количество атрибутов в общем количестве буферов при создании GPURenderPipeline по умолчанию составляет 16. Теперь можно запросить до 30, используя ограничение maxVertexAttributes , если оно поддерживается. См. следующий пример и выдайте dawn:2223 .

const adapter = await navigator.gpu.requestAdapter();

if (adapter.limits.maxVertexAttributes < 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 vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Обновления рассвета

Добавлен новый переключатель экземпляра под названием "expose_wgsl_experimental_features", чтобы экземпляр мог отображать только экспериментальные функции WGSL, но не небезопасные, так что безопасные экспериментальные функции WGSL можно использовать без необходимости включать переключатель "allow_unsafe_apis". См. issue dawn:2260 .

Последние улучшения привязок Dawn для Node.js включают следующее:

  • Добавлен GPUSupportedFeatures::getSize() .
  • Реализована функция устаревания GPUAdapter .
  • Теперь GPUInternalError корректно отображается для устройств.
  • Атрибуты теперь можно перечислять.

Это охватывает только некоторые из ключевых моментов. Ознакомьтесь с исчерпывающим списком коммитов .

Что нового в WebGPU

Список всего, что было рассмотрено в серии « Что нового в WebGPU» .

Хром 137

Хром 136

Хром 135

Хром 134

Хром 133

Хром 132

Хром 131

Хром 130

Хром 129

Хром 128

Хром 127

Хром 126

Хром 125

Хром 124

Хром 123

Хром 122

Хром 121

Хром 120

Хром 119

Хром 118

Хром 117

Хром 116

Хром 115

Хром 114

Хром 113