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