diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c b/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c index 178528464c5..950897cc4f3 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c +++ b/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c @@ -326,6 +326,12 @@ etna_emit_texture_desc(struct etna_context *ctx) if (texture_use_int_filter(&sv->base, &ss->base, true)) SAMP_CTRL0 |= VIVS_NTE_DESCRIPTOR_SAMP_CTRL0_INT_FILTER; + if (util_format_description(sv->base.format)->colorspace == UTIL_FORMAT_COLORSPACE_ZS && + ss->base.min_mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + SAMP_CTRL0 &= ~VIVS_NTE_DESCRIPTOR_SAMP_CTRL0_MIP__MASK; + SAMP_CTRL0 |= VIVS_NTE_DESCRIPTOR_SAMP_CTRL0_MIP(TEXTURE_FILTER_NEAREST); + } + etna_set_state(stream, VIVS_NTE_DESCRIPTOR_TX_CTRL(x), COND(sv->ts.enable, VIVS_NTE_DESCRIPTOR_TX_CTRL_TS_ENABLE) | VIVS_NTE_DESCRIPTOR_TX_CTRL_TS_MODE(sv->ts.mode) | diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture_state.c b/src/gallium/drivers/etnaviv/etnaviv_texture_state.c index a3dbbd65d6c..2ccfef15af1 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture_state.c +++ b/src/gallium/drivers/etnaviv/etnaviv_texture_state.c @@ -356,6 +356,12 @@ etna_emit_new_texture_state(struct etna_context *ctx) struct etna_sampler_view *sv = etna_sampler_view(ctx->sampler_view[x]); val = (ss->config0 & sv->config0_mask) | sv->config0; + + if (util_format_description(sv->base.format)->colorspace == UTIL_FORMAT_COLORSPACE_ZS && + ss->base.min_mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + val &= ~VIVS_NTE_SAMPLER_CONFIG0_MIP__MASK; + val |= VIVS_NTE_SAMPLER_CONFIG0_MIP(TEXTURE_FILTER_NEAREST); + } } /*10000*/ EMIT_STATE(NTE_SAMPLER_CONFIG0(x), val); @@ -496,6 +502,12 @@ etna_emit_texture_state(struct etna_context *ctx) struct etna_sampler_view *sv = etna_sampler_view(ctx->sampler_view[x]); val = (ss->config0 & sv->config0_mask) | sv->config0; + + if (util_format_description(sv->base.format)->colorspace == UTIL_FORMAT_COLORSPACE_ZS && + ss->base.min_mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { + val &= ~VIVS_TE_SAMPLER_CONFIG0_MIP__MASK; + val |= VIVS_TE_SAMPLER_CONFIG0_MIP(TEXTURE_FILTER_NEAREST); + } } /*02000*/ EMIT_STATE(TE_SAMPLER_CONFIG0(x), val);