[Mesa-dev] [PATCH] anv/state: enable coordinate address rounding for Min/Mag filters
Jason Ekstrand
jason at jlekstrand.net
Fri Nov 18 18:50:54 UTC 2016
Thanks!
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On Fri, Nov 18, 2016 at 4:44 AM, Iago Toral Quiroga <itoral at igalia.com>
wrote:
> This patch improves pass rate of dEQP-VK.texture.explicit_lod.2d.sizes.*
> from 68.0% (98/144) to 83.3% (120/144) by enabling sampler address
> rounding mode when the selected filter is not nearest, which is the same
> thing we do for OpenGL.
>
> These tests check texture filtering for various texture sizes and mipmap
> levels. The failures (without this patch) affect cases where the target
> texture has odd dimensions (like 57x35) and either the Min or the Mag
> filter
> is not nearest.
>
> ---
>
> I think this patch should fix all the failed tests, but for some reason it
> only fixes the subset where the MagFilter is not linear.
>
> src/intel/vulkan/genX_state.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/src/intel/vulkan/genX_state.c b/src/intel/vulkan/genX_state.c
> index be1bd78..4122395 100644
> --- a/src/intel/vulkan/genX_state.c
> +++ b/src/intel/vulkan/genX_state.c
> @@ -167,6 +167,11 @@ VkResult genX(CreateSampler)(
> uint32_t border_color_offset = device->border_colors.offset +
> pCreateInfo->borderColor * 64;
>
> + bool enable_min_filter_addr_rounding =
> + pCreateInfo->minFilter != VK_FILTER_NEAREST;
> + bool enable_mag_filter_addr_rounding =
> + pCreateInfo->magFilter != VK_FILTER_NEAREST;
> +
> struct GENX(SAMPLER_STATE) sampler_state = {
> .SamplerDisable = false,
> .TextureBorderColorMode = DX10OGL,
> @@ -202,12 +207,12 @@ VkResult genX(CreateSampler)(
> #endif
>
> .MaximumAnisotropy = vk_to_gen_max_anisotropy(
> pCreateInfo->maxAnisotropy),
> - .RAddressMinFilterRoundingEnable = 0,
> - .RAddressMagFilterRoundingEnable = 0,
> - .VAddressMinFilterRoundingEnable = 0,
> - .VAddressMagFilterRoundingEnable = 0,
> - .UAddressMinFilterRoundingEnable = 0,
> - .UAddressMagFilterRoundingEnable = 0,
> + .RAddressMinFilterRoundingEnable = enable_min_filter_addr_rounding,
> + .RAddressMagFilterRoundingEnable = enable_mag_filter_addr_rounding,
> + .VAddressMinFilterRoundingEnable = enable_min_filter_addr_rounding,
> + .VAddressMagFilterRoundingEnable = enable_mag_filter_addr_rounding,
> + .UAddressMinFilterRoundingEnable = enable_min_filter_addr_rounding,
> + .UAddressMagFilterRoundingEnable = enable_mag_filter_addr_rounding,
> .TrilinearFilterQuality = 0,
> .NonnormalizedCoordinateEnable = pCreateInfo->
> unnormalizedCoordinates,
> .TCXAddressControlMode = vk_to_gen_tex_address[
> pCreateInfo->addressModeU],
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161118/c9119a3f/attachment.html>
More information about the mesa-dev
mailing list