From 2ee7ef76898d8269c9f9c9ff4bbce57ab4b37fea Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 5 Nov 2018 17:07:11 +0100 Subject: [PATCH] [dxbc] Enable sample shading when using interpolation functions Fixes artifacts on RADV when enabling MSAA in World of Warcraft (#456). --- src/dxbc/dxbc_compiler.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index 3a4c234c..9c06360e 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -2798,9 +2798,12 @@ namespace dxvk { void DxbcCompiler::emitInterpolate(const DxbcShaderInstruction& ins) { + m_module.enableCapability(spv::CapabilityInterpolationFunction); + m_module.enableCapability(spv::CapabilitySampleRateShading); + // The SPIR-V instructions operate on input variable pointers, // which are all declared as four-component float vectors. - const uint32_t registerId = ins.src[0].idx[0].offset; + uint32_t registerId = ins.src[0].idx[0].offset; DxbcRegisterValue result; result.type = getInputRegType(registerId); @@ -6125,7 +6128,6 @@ namespace dxvk { void DxbcCompiler::emitPsInit() { m_module.enableCapability(spv::CapabilityDerivativeControl); - m_module.enableCapability(spv::CapabilityInterpolationFunction); m_module.setExecutionMode(m_entryPointId, spv::ExecutionModeOriginUpperLeft);