Fix issue with builtin inputs/outputs in SPIR-V reflection

This commit is contained in:
baldurk
2019-08-16 16:12:01 +01:00
parent 67fc665bf1
commit 512c1076ec
@@ -3876,6 +3876,7 @@ ShaderBuiltin BuiltInToSystemAttribute(ShaderStage stage, const spv::BuiltIn el)
case spv::BuiltInTessLevelOuter: return ShaderBuiltin::OuterTessFactor;
case spv::BuiltInTessLevelInner: return ShaderBuiltin::InsideTessFactor;
case spv::BuiltInPatchVertices: return ShaderBuiltin::PatchNumVertices;
case spv::BuiltInFragCoord: return ShaderBuiltin::Position;
case spv::BuiltInFrontFacing: return ShaderBuiltin::IsFrontFace;
case spv::BuiltInSampleId: return ShaderBuiltin::MSAASampleIndex;
case spv::BuiltInSamplePosition: return ShaderBuiltin::MSAASamplePosition;
@@ -3955,8 +3956,11 @@ void AddSignatureParameter(bool isInput, ShaderStage stage, uint32_t id, uint32_
}
// fragment shader outputs are implicitly colour outputs
if(stage == ShaderStage::Fragment && type->storage == spv::StorageClassOutput)
if(stage == ShaderStage::Fragment && type->storage == spv::StorageClassOutput &&
sig.systemValue == ShaderBuiltin::Undefined)
sig.systemValue = ShaderBuiltin::ColorOutput;
else if(sig.systemValue != ShaderBuiltin::Undefined)
sig.regIndex = 0;
if(type->type == SPVTypeData::ePointer)
type = type->baseType;