When you configure your WebGPU device, you can define specific hardware features and resource limits required by your project. You can add these parameters to your Allow Filters or Deny Filters lists to control which devices to support or exclude based on their capabilities.
Before you can filter devices by required features or limits, you need to:
Filter your device depending on what features your device supports.
To filter devices by required features:
The filtering asset contains the following feature options:
| Feature Name | Description |
|---|---|
| None | No specific feature requirements. |
| BGRA8UnormStorage | Supports using the bgra8unorm texture formatA file format for handling textures during real-time rendering by 3D graphics hardware, such as a graphics card or mobile device. More infoSee in Glossary for storage usage ( bgra8-unorm-storage). |
| ClipDistances | Allows vertex shadersA program that runs on the GPU. More info See in Glossary to write to user-defined clip distances ( clip-distances). |
| CoreFeaturesAndLimits | Guarantees support for WebGPU core features and minimum required limits (core-features-and-limits). |
| Depth32FloatStencil8 | Supports the depth32float-stencil8 combined depth and stencil texture format. |
| DepthClipControl | Allows disabling depth clipping, which enables the use of depth clamping (depth-clip-control). |
| DualSourceBlending | Enables dual-source blending, which allows shaders to output two colors to the same color attachment (dual-source-blending). |
| Float32Blendable | Allows blending operations on 32-bit floating-point color attachments (float32-blendable). |
| Float32Filterable | Allows linear filtering when sampling 32-bit floating-point textures (float32-filterable). |
| IndirectFirstInstance | Enables the firstInstance parameter in indirect draw calls (indirect-first-instance). |
| PrimitiveIndex | Allows shaders to read the primitive index (primitive-index). |
| RG11B10UfloatRenderable | Allows rendering directly to textures using the rg11b10ufloat format (rg11b10ufloat-renderable). |
| ShaderF16 | Enables the use of 16-bit floating-point types (f16) for performance optimizations in shaders (shader-f16). |
| Subgroups | Enables subgroup operations in compute and fragment shaders (subgroups). |
| TextureComponentSwizzle | Allows customizing how texture channels (R, G, B, A) are swizzled when reading (texture-component-swizzle). |
| TextureCompressionASTC | Supports Adaptive Scalable Texture CompressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression, Animation Compression, Audio Compression, Build Compression. See in Glossary (ASTC) formats ( texture-compression-astc). |
| TextureCompressionASTCSliced3D | Supports 3D sliced textures using ASTC compression (texture-compression-astc-sliced-3d). |
| TextureCompressionBC | Supports Block Compression (BC) formats, commonly used on desktop hardware (texture-compression-bc). |
| TextureCompressionBCSliced3D | Supports 3D sliced textures using BC compression (texture-compression-bc-sliced-3d). |
| TextureCompressionETC2 | Supports Ericsson Texture Compression3D Graphics hardware requires Textures to be compressed in specialized formats which are optimized for fast Texture sampling. More info See in Glossary (ETC2) formats, standard on mobile devices ( texture-compression-etc2). |
| TextureFormatsTier1 | Provides Tier 1 level extended support for texture formats (texture-formats-tier-1). |
| TextureFormatsTier2 | Provides Tier 2 level extended support for texture formats (texture-formats-tier-2). |
| TimestampQuery | Allows querying GPU timestamp execution times for accurate performance profiling (timestamp-query). |
Filter devices depending on required resource counts, dimensions, and memory allocations. These limits ensure the device can handle the specific load and architecture of your application.
To filter devices by limits:
The filtering asset has the following limit options:
| Limit Name | Description |
|---|---|
| None | No specific limit requirement. |
| MaxBindGroups | The maximum number of bind groups that can be bound simultaneously in a pipeline. |
| MaxBindGroupsPlusVertexBuffers | The combined maximum limit for the sum of bound bind groups and bound vertex buffers. |
| MaxBindingsPerBindGroup | The maximum number of individual resources (textures, buffers, samplers) allowed within a single bind group. |
| MaxBufferSize | The maximum allowed size (in bytes) for a single buffer. |
| MaxColorAttachmentBytesPerSample | The maximum total bytes per sample across all color attachments in a single render pass. |
| MaxColorAttachments | The maximum number of color attachments that can be output to simultaneously. |
| MaxComputeInvocationsPerWorkgroup | The maximum total number of shader invocations (threads) allowed in a single compute work group (X × Y × Z). |
| MaxComputeWorkgroupSizeX | The maximum size of a compute work group in the X dimension. |
| MaxComputeWorkgroupSizeY | The maximum size of a compute work group in the Y dimension. |
| MaxComputeWorkgroupSizeZ | The maximum size of a compute work group in the Z dimension. |
| MaxComputeWorkgroupsPerDimension | The maximum number of compute work groups that can be dispatched in any single dimension (X, Y, or Z). |
| MaxComputeWorkgroupStorageSize | The maximum amount of shared memory (in bytes) available per compute work group. |
| MaxDynamicStorageBuffersPerPipelineLayout | The maximum number of dynamic storage buffers allowed in a pipeline layout. |
| MaxDynamicUniformBuffersPerPipelineLayout | The maximum number of dynamic uniform buffers allowed in a pipeline layout. |
| MaxInterStageShaderVariables | The maximum number of variables that can be passed between shader stages (for example, from vertex to fragment). |
| MaxSampledTexturesPerShaderStage | The maximum number of sampled textures accessible within a single shader stage. |
| MaxSamplersPerShaderStage | The maximum number of texture samplers allowed within a single shader stage. |
| MaxStorageBufferBindingSize | The maximum binding size (in bytes) allowed for a single storage buffer. |
| MaxStorageBuffersInFragmentStage | The maximum number of storage buffers accessible specifically in the fragment shader stage. |
| MaxStorageBuffersInVertexStage | The maximum number of storage buffers accessible specifically in the vertex shaderA program that runs on each vertex of a 3D model when the model is being rendered. More info See in Glossary stage. |
| MaxStorageBuffersPerShaderStage | The maximum number of storage buffers accessible across any single shader stage. |
| MaxStorageTexturesInFragmentStage | The maximum number of storage textures accessible specifically in the fragment shader stage. |
| MaxStorageTexturesInVertexStage | The maximum number of storage textures accessible specifically in the vertex shader stage. |
| MaxStorageTexturesPerShaderStage | The maximum number of storage textures accessible across any single shader stage. |
| MaxTextureArrayLayers | The maximum number of 2D array layers allowed in a texture array. |
| MaxTextureDimension1D | The maximum length of a 1D texture. |
| MaxTextureDimension2D | The maximum width or height of a 2D texture. |
| MaxTextureDimension3D | The maximum width, height, or depth of a 3D texture. |
| MaxUniformBufferBindingSize | The maximum binding size (in bytes) allowed for a single uniform buffer. |
| MaxUniformBuffersPerShaderStage | The maximum number of uniform buffers accessible within a single shader stage. |
| MaxVertexAttributes | The maximum number of vertex attributes supported in a single vertex layout. |
| MaxVertexBuffers | The maximum number of vertex buffers that can be bound simultaneously. |
| MaxVertexBufferArrayStride | The maximum allowed stride (in bytes) between elements in a vertex buffer array. |
| MinStorageBufferOffsetAlignment | The required minimum alignment (in bytes) for storage buffer binding offsets. |
| MinUniformBufferOffsetAlignment | The required minimum alignment (in bytes) for uniform buffer binding offsets. |