v148 · WebGPU

Texture Format Support

Compatibility mode restricts which GPU texture formats are available. Compressed formats (BC, ETC2, ASTC) depend on hardware, and some colour formats behave differently under OpenGL ES 3.1. The grid below maps every format to its availability in core vs compat — click a card to see why.

Feature detection: checking…
Core + Compat
Core only
Device dependent
Click a format card to see compatibility details.

Live format probe

Results from device.features.has() on the current device

Feature nameThis deviceRequired for
No WebGPU device — showing static data only.
// Request a compatibility adapter
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: 'compatibility',
});

// Then check which texture features it exposes
const hasBCCompressed    = adapter.features.has('texture-compression-bc');
const hasETC2Compressed  = adapter.features.has('texture-compression-etc2');
const hasASTCCompressed  = adapter.features.has('texture-compression-astc');
const hasRG11B10Float    = adapter.features.has('rg11b10ufloat-renderable');
const hasBGRA8Unorm      = adapter.features.has('bgra8unorm-storage');

// Request device with only the features we can actually use
const device = await adapter.requestDevice({
  requiredFeatures: [
    ...(hasBCCompressed   ? ['texture-compression-bc']   : []),
    ...(hasETC2Compressed ? ['texture-compression-etc2'] : []),
    ...(hasASTCCompressed ? ['texture-compression-astc'] : []),
  ],
});

see also

implementation reference

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