From 803ec3542d0b6c52c066fa350dccb998740791b1 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 11 Oct 2019 18:41:10 +0200 Subject: [PATCH] [dxbc] Fix sample positions From the D3D11.3 functional specification: "The sample position is relative to the pixel's center" Fixes wine test failures. --- src/dxbc/dxbc_compiler.cpp | 64 +++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index 34397d342..b94e1fae7 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -7321,43 +7321,43 @@ namespace dxvk { uint32_t DxbcCompiler::emitSamplePosArray() { const std::array samplePosVectors = {{ // Invalid sample count / unbound resource - m_module.constvec2f32(0.0f, 0.0f), + m_module.constvec2f32( 0.0f, 0.0f), // VK_SAMPLE_COUNT_1_BIT - m_module.constvec2f32(0.5f, 0.5f), + m_module.constvec2f32( 0.0f, 0.0f), // VK_SAMPLE_COUNT_2_BIT - m_module.constvec2f32(0.75f, 0.75f), - m_module.constvec2f32(0.25f, 0.25f), + m_module.constvec2f32( 0.25f, 0.25f), + m_module.constvec2f32(-0.25f,-0.25f), // VK_SAMPLE_COUNT_4_BIT - m_module.constvec2f32(0.375f, 0.125f), - m_module.constvec2f32(0.875f, 0.375f), - m_module.constvec2f32(0.125f, 0.625f), - m_module.constvec2f32(0.625f, 0.875f), + m_module.constvec2f32(-0.125f,-0.375f), + m_module.constvec2f32( 0.375f,-0.125f), + m_module.constvec2f32(-0.375f, 0.125f), + m_module.constvec2f32( 0.125f, 0.375f), // VK_SAMPLE_COUNT_8_BIT - m_module.constvec2f32(0.5625f, 0.3125f), - m_module.constvec2f32(0.4375f, 0.6875f), - m_module.constvec2f32(0.8125f, 0.5625f), - m_module.constvec2f32(0.3125f, 0.1875f), - m_module.constvec2f32(0.1875f, 0.8125f), - m_module.constvec2f32(0.0625f, 0.4375f), - m_module.constvec2f32(0.6875f, 0.9375f), - m_module.constvec2f32(0.9375f, 0.0625f), + m_module.constvec2f32( 0.0625f,-0.1875f), + m_module.constvec2f32(-0.0625f, 0.1875f), + m_module.constvec2f32( 0.3125f, 0.0625f), + m_module.constvec2f32(-0.1875f,-0.3125f), + m_module.constvec2f32(-0.3125f, 0.3125f), + m_module.constvec2f32(-0.4375f,-0.0625f), + m_module.constvec2f32( 0.1875f, 0.4375f), + m_module.constvec2f32( 0.4375f,-0.4375f), // VK_SAMPLE_COUNT_16_BIT - m_module.constvec2f32(0.5625f, 0.5625f), - m_module.constvec2f32(0.4375f, 0.3125f), - m_module.constvec2f32(0.3125f, 0.6250f), - m_module.constvec2f32(0.7500f, 0.4375f), - m_module.constvec2f32(0.1875f, 0.3750f), - m_module.constvec2f32(0.6250f, 0.8125f), - m_module.constvec2f32(0.8125f, 0.6875f), - m_module.constvec2f32(0.6875f, 0.1875f), - m_module.constvec2f32(0.3750f, 0.8750f), - m_module.constvec2f32(0.5000f, 0.0625f), - m_module.constvec2f32(0.2500f, 0.1250f), - m_module.constvec2f32(0.1250f, 0.7500f), - m_module.constvec2f32(0.0000f, 0.5000f), - m_module.constvec2f32(0.9375f, 0.2500f), - m_module.constvec2f32(0.8750f, 0.9375f), - m_module.constvec2f32(0.0625f, 0.0000f), + m_module.constvec2f32( 0.0625f, 0.0625f), + m_module.constvec2f32(-0.0625f,-0.1875f), + m_module.constvec2f32(-0.1875f, 0.1250f), + m_module.constvec2f32( 0.2500f,-0.0625f), + m_module.constvec2f32(-0.3125f,-0.1250f), + m_module.constvec2f32( 0.1250f, 0.3125f), + m_module.constvec2f32( 0.3125f, 0.1875f), + m_module.constvec2f32( 0.1875f,-0.3125f), + m_module.constvec2f32(-0.1250f, 0.3750f), + m_module.constvec2f32( 0.0000f,-0.4375f), + m_module.constvec2f32(-0.2500f,-0.3750f), + m_module.constvec2f32(-0.3750f, 0.2500f), + m_module.constvec2f32(-0.5000f, 0.0000f), + m_module.constvec2f32( 0.4375f,-0.2500f), + m_module.constvec2f32( 0.3750f, 0.4375f), + m_module.constvec2f32(-0.4375f,-0.5000f), }}; uint32_t arrayTypeId = getArrayTypeId({