radv: only use VkSamplerCreateInfo::compareOp if enabled
Cc: <mesa-stable@lists.freedesktop.org> Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2350 Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3392> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3392>
This commit is contained in:
@@ -6700,6 +6700,7 @@ radv_init_sampler(struct radv_device *device,
|
|||||||
bool compat_mode = device->physical_device->rad_info.chip_class == GFX8 ||
|
bool compat_mode = device->physical_device->rad_info.chip_class == GFX8 ||
|
||||||
device->physical_device->rad_info.chip_class == GFX9;
|
device->physical_device->rad_info.chip_class == GFX9;
|
||||||
unsigned filter_mode = V_008F30_SQ_IMG_FILTER_MODE_BLEND;
|
unsigned filter_mode = V_008F30_SQ_IMG_FILTER_MODE_BLEND;
|
||||||
|
unsigned depth_compare_func = V_008F30_SQ_TEX_DEPTH_COMPARE_NEVER;
|
||||||
|
|
||||||
const struct VkSamplerReductionModeCreateInfoEXT *sampler_reduction =
|
const struct VkSamplerReductionModeCreateInfoEXT *sampler_reduction =
|
||||||
vk_find_struct_const(pCreateInfo->pNext,
|
vk_find_struct_const(pCreateInfo->pNext,
|
||||||
@@ -6707,11 +6708,14 @@ radv_init_sampler(struct radv_device *device,
|
|||||||
if (sampler_reduction)
|
if (sampler_reduction)
|
||||||
filter_mode = radv_tex_filter_mode(sampler_reduction->reductionMode);
|
filter_mode = radv_tex_filter_mode(sampler_reduction->reductionMode);
|
||||||
|
|
||||||
|
if (pCreateInfo->compareEnable)
|
||||||
|
depth_compare_func = radv_tex_compare(pCreateInfo->compareOp);
|
||||||
|
|
||||||
sampler->state[0] = (S_008F30_CLAMP_X(radv_tex_wrap(pCreateInfo->addressModeU)) |
|
sampler->state[0] = (S_008F30_CLAMP_X(radv_tex_wrap(pCreateInfo->addressModeU)) |
|
||||||
S_008F30_CLAMP_Y(radv_tex_wrap(pCreateInfo->addressModeV)) |
|
S_008F30_CLAMP_Y(radv_tex_wrap(pCreateInfo->addressModeV)) |
|
||||||
S_008F30_CLAMP_Z(radv_tex_wrap(pCreateInfo->addressModeW)) |
|
S_008F30_CLAMP_Z(radv_tex_wrap(pCreateInfo->addressModeW)) |
|
||||||
S_008F30_MAX_ANISO_RATIO(max_aniso_ratio) |
|
S_008F30_MAX_ANISO_RATIO(max_aniso_ratio) |
|
||||||
S_008F30_DEPTH_COMPARE_FUNC(radv_tex_compare(pCreateInfo->compareOp)) |
|
S_008F30_DEPTH_COMPARE_FUNC(depth_compare_func) |
|
||||||
S_008F30_FORCE_UNNORMALIZED(pCreateInfo->unnormalizedCoordinates ? 1 : 0) |
|
S_008F30_FORCE_UNNORMALIZED(pCreateInfo->unnormalizedCoordinates ? 1 : 0) |
|
||||||
S_008F30_ANISO_THRESHOLD(max_aniso_ratio >> 1) |
|
S_008F30_ANISO_THRESHOLD(max_aniso_ratio >> 1) |
|
||||||
S_008F30_ANISO_BIAS(max_aniso_ratio) |
|
S_008F30_ANISO_BIAS(max_aniso_ratio) |
|
||||||
|
Reference in New Issue
Block a user