1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-30 02:52:10 +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;
case DxbcOperandType::InputThreadIndexInGroup: {
// FIXME this might not be supported by Vulkan?
m_cs.builtinLocalInvocationIndex = emitNewBuiltinVariable({
{ DxbcScalarType::Uint32, 1, 0 },
spv::StorageClassInput },
@ -426,7 +425,7 @@ namespace dxvk {
{ DxbcScalarType::Uint32, 1, 0 },
spv::StorageClassOutput },
spv::BuiltInSampleMask,
"oDepth");
"oCoverage");
} break;
case DxbcOperandType::OutputDepth: {
@ -4360,10 +4359,19 @@ namespace dxvk {
outputReg.type.ccount = 4;
outputReg.id = m_oRegs.at(svMapping.regId);
emitVsSystemValueStore(
svMapping.sv,
svMapping.regMask,
emitValueLoad(outputReg));
auto sv = svMapping.sv;
auto mask = svMapping.regMask;
auto value = 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;
}
}
}