anv: Fix backwards shadow comparisons

sample_c is backwards from what GL and Vulkan expect.

See intel_state.c in i965.

v2: Drop unused vk_to_gen_compare_op.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Kenneth Graunke
2016-03-03 16:43:49 -08:00
parent 3ed260f54c
commit 9d7faadd8a

View File

@@ -173,15 +173,26 @@ static const uint32_t vk_to_gen_tex_address[] = {
[VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER] = TCM_CLAMP_BORDER, [VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER] = TCM_CLAMP_BORDER,
}; };
static const uint32_t vk_to_gen_compare_op[] = { /* Vulkan specifies the result of shadow comparisons as:
[VK_COMPARE_OP_NEVER] = PREFILTEROPNEVER, * 1 if ref <op> texel,
[VK_COMPARE_OP_LESS] = PREFILTEROPLESS, * 0 otherwise.
[VK_COMPARE_OP_EQUAL] = PREFILTEROPEQUAL, *
[VK_COMPARE_OP_LESS_OR_EQUAL] = PREFILTEROPLEQUAL, * The hardware does:
[VK_COMPARE_OP_GREATER] = PREFILTEROPGREATER, * 0 if texel <op> ref,
[VK_COMPARE_OP_NOT_EQUAL] = PREFILTEROPNOTEQUAL, * 1 otherwise.
[VK_COMPARE_OP_GREATER_OR_EQUAL] = PREFILTEROPGEQUAL, *
[VK_COMPARE_OP_ALWAYS] = PREFILTEROPALWAYS, * So, these look a bit strange because there's both a negation
* and swapping of the arguments involved.
*/
static const uint32_t vk_to_gen_shadow_compare_op[] = {
[VK_COMPARE_OP_NEVER] = PREFILTEROPALWAYS,
[VK_COMPARE_OP_LESS] = PREFILTEROPLEQUAL,
[VK_COMPARE_OP_EQUAL] = PREFILTEROPNOTEQUAL,
[VK_COMPARE_OP_LESS_OR_EQUAL] = PREFILTEROPLESS,
[VK_COMPARE_OP_GREATER] = PREFILTEROPGEQUAL,
[VK_COMPARE_OP_NOT_EQUAL] = PREFILTEROPEQUAL,
[VK_COMPARE_OP_GREATER_OR_EQUAL] = PREFILTEROPGREATER,
[VK_COMPARE_OP_ALWAYS] = PREFILTEROPNEVER,
}; };
VkResult genX(CreateSampler)( VkResult genX(CreateSampler)(
@@ -228,7 +239,7 @@ VkResult genX(CreateSampler)(
.ChromaKeyEnable = 0, .ChromaKeyEnable = 0,
.ChromaKeyIndex = 0, .ChromaKeyIndex = 0,
.ChromaKeyMode = 0, .ChromaKeyMode = 0,
.ShadowFunction = vk_to_gen_compare_op[pCreateInfo->compareOp], .ShadowFunction = vk_to_gen_shadow_compare_op[pCreateInfo->compareOp],
.CubeSurfaceControlMode = OVERRIDE, .CubeSurfaceControlMode = OVERRIDE,
.BorderColorPointer = border_color_offset, .BorderColorPointer = border_color_offset,