Quick answer: SPIR-V Cross output containing vendor-specific extension declarations on non-vendor targets? Generator emits extensions seen in source; strip during cross-compile.

Cross-compiled GLSL contains #extension GL_NV_*. AMD driver rejects.

Strip extensions

Post-process the generated GLSL; remove vendor-specific #extension lines.

Or specialize per target

Cross-compile to different outputs per vendor. More builds; smaller outputs.

Audit source SPIR-V

If the SPIR-V has vendor extensions, the cross-compile can't help. Remove at source.

“Cross-compilers preserve extensions. Preservation isn't always desired.”

If your shader pipeline targets multiple vendors, the cleanup step is mandatory. Validate on each vendor.

Related reading