r600: Use TRUNC_COORD on samplers
authorChristopher Egert <cme3000@gmail.com>
Sun, 17 May 2020 17:12:02 +0000 (19:12 +0200)
committerChristopher Egert <cme3000@gmail.com>
Sat, 23 May 2020 23:40:50 +0000 (01:40 +0200)
As per d573d1d82524b8a2e5f56938069cabc0f0176a0e the same should be done
here. It seems like TRUNCATE_COORD not available on r600, so this is
limited to evergreen.

Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5078>

src/gallium/drivers/r600/evergreen_state.c

index d1f3b9e7b0af3f5f97630138c8792e3450730a65..f9c71668fbfce71010b3e20773863cb0de830a52 100644 (file)
@@ -574,6 +574,8 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx,
        unsigned max_aniso = rscreen->force_aniso >= 0 ? rscreen->force_aniso
                                                       : state->max_anisotropy;
        unsigned max_aniso_ratio = r600_tex_aniso_filter(max_aniso);
+       bool trunc_coord = state->min_img_filter == PIPE_TEX_FILTER_NEAREST &&
+                          state->mag_img_filter == PIPE_TEX_FILTER_NEAREST;
        float max_lod = state->max_lod;
 
        if (!ss) {
@@ -608,6 +610,7 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx,
        ss->tex_sampler_words[2] =
                S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 8)) |
                (state->seamless_cube_map ? 0 : S_03C008_DISABLE_CUBE_WRAP(1)) |
+               S_03C008_TRUNCATE_COORD(trunc_coord) |
                S_03C008_TYPE(1);
 
        if (ss->border_color_use) {