1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-30 11:52:11 +01:00

[dxbc] Fixed output value store for geometry shaders

This commit is contained in:
Philip Rebohle 2018-02-04 23:09:07 +01:00
parent 8c64a81e27
commit b741b3b4d5
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99

View File

@ -412,7 +412,6 @@ namespace dxvk {
} break; } break;
case DxbcOperandType::InputThreadIndexInGroup: { case DxbcOperandType::InputThreadIndexInGroup: {
// FIXME this might not be supported by Vulkan?
m_cs.builtinLocalInvocationIndex = emitNewBuiltinVariable({ m_cs.builtinLocalInvocationIndex = emitNewBuiltinVariable({
{ DxbcScalarType::Uint32, 1, 0 }, { DxbcScalarType::Uint32, 1, 0 },
spv::StorageClassInput }, spv::StorageClassInput },
@ -426,7 +425,7 @@ namespace dxvk {
{ DxbcScalarType::Uint32, 1, 0 }, { DxbcScalarType::Uint32, 1, 0 },
spv::StorageClassOutput }, spv::StorageClassOutput },
spv::BuiltInSampleMask, spv::BuiltInSampleMask,
"oDepth"); "oCoverage");
} break; } break;
case DxbcOperandType::OutputDepth: { case DxbcOperandType::OutputDepth: {
@ -4360,10 +4359,19 @@ namespace dxvk {
outputReg.type.ccount = 4; outputReg.type.ccount = 4;
outputReg.id = m_oRegs.at(svMapping.regId); outputReg.id = m_oRegs.at(svMapping.regId);
emitVsSystemValueStore( auto sv = svMapping.sv;
svMapping.sv, auto mask = svMapping.regMask;
svMapping.regMask, auto value = emitValueLoad(outputReg);
emitValueLoad(outputReg));
switch (m_version.type()) {
case DxbcProgramType::VertexShader: emitVsSystemValueStore(sv, mask, value); break;
case DxbcProgramType::GeometryShader: emitGsSystemValueStore(sv, mask, value); break;
case DxbcProgramType::HullShader:
case DxbcProgramType::DomainShader:
case DxbcProgramType::PixelShader:
case DxbcProgramType::ComputeShader:
break;
}
} }
} }