Spec-Zone.ru › Web APIs

GPUSupportedFeatures

Ограниченная доступность

Эта функция не относится к Baseline, поскольку она не работает во всех наиболее широко используемых браузерах.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Экспериментальная: Это экспериментальная технология
Перед использованием в производстве внимательно изучите таблицу совместимости с браузерами.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в рабочих потоках.

Интерфейс GPUSupportedFeatures API WebGPU — это Set-подобный объект, описывающий дополнительную функциональность, поддерживаемую GPUAdapter.

Объект GPUSupportedFeatures для текущего адаптера доступен через свойство GPUAdapter.features — используйте его для проверки поддерживаемых функций вашего текущего конфигурации. Чтобы создать GPUDevice с включенной определённой функцией, необходимо указать её в массиве requiredFeatures описателя GPUAdapter.requestDevice().

Обратите внимание, что не все функции будут доступны WebGPU во всех поддерживающих браузерах, даже если эти функции поддерживаются базовым оборудованием. Это может быть связано с ограничениями базовой системы, браузера или адаптера. Например:

  • Базовая система может не гарантировать доступность функции в совместимом с браузером виде.
  • Производитель браузера может не найти безопасный способ реализации поддержки этой функции или просто ещё не добрался до неё.

Если вы планируете использовать определённую дополнительную функцию в приложении WebGPU, рекомендуется провести тщательное тестирование.

Доступные функции

Ниже перечислены дополнительные возможности, определенные в WebGPU. Имейте в виду, что точный набор доступных функций будет различаться в разных реализациях и на различных физических устройствах, и со временем будет меняться.

Название функции Описание
bgra8unorm-storage При включении разрешает STORAGE_BINDING usage bgra8unorm-format GPUTextureов.
clip-distances При включении разрешает использование clip_distances в WGSL.
depth-clip-control Разрешает отключение глубинной обрезки. Если depth-clip-control включено, свойство unclippedDepth доступно в объекте primitive, который входит в состав описателя createRenderPipeline() или createRenderPipelineAsync() при создании GPURenderPipeline. primitive описывает, как конвейер строит и растрирует примитивы из входных вершин. Установите unclipped-depth в true, чтобы отключить глубинную обрезку.
depth32float-stencil8 Разрешает создание текстур с форматом depth32float-stencil8. Если depth32float-stencil8 включено, значение depth32float-stencil8 можно использовать для свойства format описателя createTexture() при создании GPUTexture.
dual-source-blending При включении разрешает использование dual_source_blending в WGSL, которое использует оба выхода пиксельного шейдера (@blend_src(0) и @blend_src(1)) в качестве входных данных для операции смешивания с единственным цветовым прикреплением в @location(0). В WebGPU, dual-source-blending включает следующие операции смешивания факторов (указанные в свойствах dstFactor и srcFactor описателей createRenderPipeline() и createRenderPipelineAsync()): src1, one-minus-src1, src1-alpha, и one-minus-src1-alpha.
float32-blendable При включении разрешает смешивание r32float-, rg32float- и rgba32float-format GPUTextureов.
float32-filterable При включении разрешает фильтрацию r32float-, rg32float- и rgba32float-format GPUTextureов.
indirect-first-instance При включении разрешает использование ненулевых значений firstInstance в свойстве indirectBuffer методов drawIndirect() и drawIndexedIndirect(), доступных для экземпляров GPURenderPassEncoder и GPURenderBundleEncoder.
rg11b10ufloat-renderable При включении разрешает RENDER_ATTACHMENT usage rg11b10ufloat-format GPUTextureов, а также их смешивание и многократную выборку.
shader-f16 При включении разрешает использование типа с плавающей точкой полуточной точности f16 в WGSL.
texture-compression-bc Разрешает создание сжатых текстур BC двухмерного типа. Если texture-compression-bc включено, для свойства format описателя createTexture() при создании GPUTexture можно использовать следующие значения: bc1-rgba-unorm, bc1-rgba-unorm-srgb, bc2-rgba-unorm, bc2-rgba-unorm-srgb, bc3-rgba-unorm, bc3-rgba-unorm-srgb, bc4-r-unorm, bc4-r-snorm, bc5-rg-unorm, bc5-rg-snorm, bc6h-rgb-ufloat, bc6h-rgb-float, bc7-rgba-unorm, и bc7-rgba-unorm-srgb.
texture-compression-bc-sliced-3d Разрешает создание сжатых текстур BC трехмерного типа. Если texture-compression-bc-sliced-3d включено, также должно быть включено texture-compression-bc, так как оно разрешает использование форматов текстур BC (см. texture-compression-bc, выше) в двух первых измерениях. texture-compression-bc-sliced-3d разрешает использование тех же текстур в третьем измерении. Адаптеры, поддерживающие texture-compression-bc всегда поддерживают texture-compression-bc-sliced-3d. Обратите внимание, что в данный момент эта функция не поддерживается ни одним браузером.
texture-compression-astc Разрешает создание сжатых текстур ASTC двухмерного типа. Если texture-compression-astc включено, для свойства format описателя createTexture() при создании GPUTexture можно использовать следующие значения: astc-4x4-unorm, astc-4x4-unorm-srgb, astc-5x4-unorm, astc-5x4-unorm-srgb, astc-5x5-unorm, astc-5x5-unorm-srgb, astc-6x5-unorm, astc-6x5-unorm-srgb, astc-6x6-unorm, astc-6x6-unorm-srgb, astc-8x5-unorm, astc-8x5-unorm-srgb, astc-8x6-unorm, astc-8x6-unorm-srgb, astc-8x8-unorm, astc-8x8-unorm-srgb, astc-10x5-unorm, astc-10x5-unorm-srgb, astc-10x6-unorm, astc-10x6-unorm-srgb, astc-10x8-unorm, astc-10x8-unorm-srgb, astc-10x10-unorm, astc-10x10-unorm-srgb, astc-12x10-unorm, astc-12x10-unorm-srgb, и astc-12x12-unorm``astc-12x12-unorm-srgb.
texture-compression-astc-sliced-3d Разрешает создание сжатых текстур ASTC трехмерного типа. Если texture-compression-astc-sliced-3d включено, также должно быть включено texture-compression-astc, так как оно разрешает использование форматов текстур ASTC (см. texture-compression-astc, выше) в двух первых измерениях. texture-compression-astc-sliced-3d разрешает использование тех же текстур в третьем измерении. Адаптеры, поддерживающие texture-compression-astc не всегда поддерживают texture-compression-astc-sliced-3d. Обратите внимание, что в данный момент эта функция не поддерживается ни одним браузером.
texture-compression-etc2 Разрешает замеры времени выполнения вычислительных и рендеринговых пассов. Если texture-compression-etc2 включено, значение format можно установить для свойства createTexture() описателя GPUTexture при создании etc2-rgb8unorm. Кроме того, свойство etc2-rgb8unorm-srgb можно установить в описателях etc2-rgb8a1unorm и etc2-rgb8a1unorm-srgb при создании etc2-rgba8unorm и etc2-rgba8unorm-srgb соответственно. Объекты eac-r11unorm ссылаются внутри объектов, указанных в свойстве eac-r11snorm для задания места записи временных меток.

Свойства экземпляра

Следующие свойства доступны для всех Set-подобных объектов (ссылки ниже ведут к странице справки глобального объекта Set).

size Экспериментальное

Возвращает количество значений в множестве.

Методы экземпляра

Следующие методы доступны для всех Set-подобных объектов (ниже приведены ссылки на страницу справки глобального объекта Set).

has() Экспериментально

Возвращает булево значение, указывающее, присутствует ли элемент с заданным значением в множестве.

values() Экспериментально

Возвращает новый объект итератора, который возвращает значения каждого элемента в множестве в порядке вставки.

keys() Экспериментально

Псевдоним для values().

entries() Экспериментально

Возвращает новый объект итератора, содержащий [value, value] для каждого элемента в множестве в порядке вставки.

forEach() Экспериментально

Вызывает предоставленную функцию обратного вызова один раз для каждого значения, присутствующего в множестве, в порядке вставки.

Примеры

async function init() {
  if (!navigator.gpu) {
    throw Error("WebGPU not supported.");
  }

  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    throw Error("Couldn't request WebGPU adapter.");
  }

  const adapterFeatures = adapter.features;

  // Return the size of the set
  console.log(adapterFeatures.size);

  // Check whether a feature is supported by the adapter
  console.log(adapterFeatures.has("texture-compression-astc"));

  // Iterate through all the set values using values()
  const valueIterator = adapterFeatures.values();
  for (const value of valueIterator) {
    console.log(value);
  }

  // Iterate through all the set values using keys()
  const keyIterator = adapterFeatures.keys();
  for (const value of keyIterator) {
    console.log(value);
  }

  // Iterate through all the set values using entries()
  const entryIterator = adapterFeatures.entries();
  for (const entry of entryIterator) {
    console.log(entry[0]);
  }

  // Iterate through all the set values using forEach()
  adapterFeatures.forEach((value) => {
    console.log(value);
  });

  //...
}

Спецификации

Спецификация
WebGPU
# gpu-supportedfeatures

Совместимость с браузерами

Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
@@iterator 113 113 No 99 preview 121 No 81 No 25.0 121
GPUSupportedFeatures
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 No 81 No 25.0 121
entries 113 113 No 99 preview 121 No 81 No 25.0 121
feature_bgra8unorm-storage 113 113 No 99 No 121 No 81 No 25.0 121
feature_clip-distances 131 131 No 116 No 131 No No No No 131
feature_depth-clip-control 113 113 No 99 No 121 No 81 No 25.0 121
feature_depth32float-stencil8 113 113 No 99 No 121 No 81 No 25.0 121
feature_dual-source-blending 130 130 No 115 No 130 No 86 No No 130
feature_float32-blendable preview No No No No No No No No No No
feature_float32-filterable 119 119 No 105 No 121 No 81 No 25.0 121
feature_indirect-first-instance 113 113 No 99 No 121 No 81 No 25.0 121
feature_rg11b10ufloat-renderable 113 113 No 99 No 121 No 81 No 25.0 121
feature_shader-f16 120 120 No 106 No 121 No 81 No 25.0 121
feature_texture-compression-astc 113 113 No 99 No 121 No 81 No 25.0 121
feature_texture-compression-bc 113 113 No 99 No 121 No 81 No 25.0 121
feature_texture-compression-etc2 113 113 No 99 No 121 No 81 No 25.0 121
feature_timestamp-query 121 121 No 107 No 121 No 81 No 25.0 121
forEach 113 113 No 99 preview 121 No 81 No 25.0 121
has 113 113 No 99 preview 121 No 81 No 25.0 121
keys 113 113 No 99 preview 121 No 81 No 25.0 121
size 113 113 No 99 preview 121 No 81 No 25.0 121
values 113 113 No 99 preview 121 No 81 No 25.0 121

См. также

  • API WebGPU
  • Спецификация Индекс функций

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPUSupportedFeatures

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API