v148 · WebGPU

Feature Limits

Compatibility mode accepts modest restrictions to run on older hardware. This table compares spec-defined limits and WGSL feature availability between core WebGPU and compatibility mode.

Feature detection: checking…
Same in both
Reduced in compat
Removed in compat
Texture limits
LimitCoreCompatibilityStatus
maxTextureDimension1D81924096reduced
maxTextureDimension2D81924096reduced
maxTextureDimension3D20482048same
maxTextureArrayLayers256256same
Cube array textures✗ removedremoved
Compute limits
LimitCoreCompatibilityStatus
maxComputeWorkgroupSizeX256128reduced
maxComputeWorkgroupSizeY256128reduced
maxComputeWorkgroupSizeZ6464same
maxComputeInvocationsPerWorkgroup256128reduced
Pipeline restrictions
RestrictionCoreCompatibilityStatus
Storage buffers in vertex stage✓ allowed✗ not allowedremoved
Blend state per attachmentindependentuniform (all must match)restricted
Sample mask in fragmentremoved
WGSL features
WGSL FeatureCoreCompatibilityStatus
Fine derivatives (dpdxFine / dpdyFine)removed
Coarse derivatives (dpdx / dpdy)same
Linear interpolation (@interpolate linear)removed
textureSampleBaseClampToEdgesame
// Request compatibility adapter
const compat = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility"
});

// Check limits — will differ from core
const maxTex = compat.limits.maxTextureDimension2D;
// → 4096 in compat (vs 8192 in core)

const maxWG = compat.limits.maxComputeWorkgroupSizeX;
// → 128 in compat (vs 256 in core)

// Write portable WGSL — avoid:
// - dpdxFine / dpdyFine
// - storage buffers in @vertex stage
// - @interpolate(linear)
// - textureSampleLevel on cube arrays

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗