[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