Quick answer: SPIR-V Cross output translating image format qualifier (r32f, rgba8) inconsistently? Some platforms reject; specify explicitly per output.

GLSL output declares r32f; AMD compiler rejects with format mismatch.

Specify per-translator

spirv-cross flags for per-output format mapping. Explicit; portable.

Or use generic

If the platform doesn't support, fall back to a generic format. Detection at startup.

Verify per platform

Each shipped platform: load shader; verify validity.

“Image format qualifiers are platform-strict. Cross-platform shaders need explicit handling.”

Document the per-platform shader format mapping. Reusable; predictable.

Related reading