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.