Quick answer: SPIR-V Cross-output shader exceeding the mobile resource limit (textures + samplers)? Mobile GPUs cap at 16; consolidate or use bindless.

Compiled shader has 18 textures; AMD desktop fine; Mali compile fails.

Consolidate textures

Pack multiple greyscale textures into one RGBA. 4 textures become 1.

Or use atlas

Texture atlas; sample with UV offsets. One texture; many logical sources.

Use bindless on supported devices

Bindless extensions bypass the slot limit. Modern mobile supports; check.

“Mobile resource limits are real. Desktop ports surface them.”

Plan shader resource counts during authoring. Mobile-first design avoids the porting work.

Related reading