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
| Limit | Core | Compatibility | Status |
|---|---|---|---|
| maxTextureDimension1D | 8192 | 4096 | reduced |
| maxTextureDimension2D | 8192 | 4096 | reduced |
| maxTextureDimension3D | 2048 | 2048 | same |
| maxTextureArrayLayers | 256 | 256 | same |
| Cube array textures | ✓ | ✗ removed | removed |
Compute limits
| Limit | Core | Compatibility | Status |
|---|---|---|---|
| maxComputeWorkgroupSizeX | 256 | 128 | reduced |
| maxComputeWorkgroupSizeY | 256 | 128 | reduced |
| maxComputeWorkgroupSizeZ | 64 | 64 | same |
| maxComputeInvocationsPerWorkgroup | 256 | 128 | reduced |
Pipeline restrictions
| Restriction | Core | Compatibility | Status |
|---|---|---|---|
| Storage buffers in vertex stage | ✓ allowed | ✗ not allowed | removed |
| Blend state per attachment | independent | uniform (all must match) | restricted |
| Sample mask in fragment | ✓ | ✗ | removed |
WGSL features
| WGSL Feature | Core | Compatibility | Status |
|---|---|---|---|
| Fine derivatives (dpdxFine / dpdyFine) | ✓ | ✗ | removed |
| Coarse derivatives (dpdx / dpdy) | ✓ | ✓ | same |
| Linear interpolation (@interpolate linear) | ✓ | ✗ | removed |
| textureSampleBaseClampToEdge | ✓ | ✓ | same |
// 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 ↗