From ad48411d721e0b433a0f1876dc83d7979bd993b2 Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Thu, 20 Jun 2019 20:01:28 -0400 Subject: [PATCH] etnaviv: fix linear_nearest / nearest_linear filters on GC7000Lite MIN filter is only used when LOD MAX is at least 4 (I guess the 2 LSB don't actually exist). Signed-off-by: Jonathan Marek Reviewed-by: Lucas Stach --- src/gallium/drivers/etnaviv/etnaviv_texture_desc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c b/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c index aef856b1798..f4f059a3c5d 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c +++ b/src/gallium/drivers/etnaviv/etnaviv_texture_desc.c @@ -62,13 +62,15 @@ etna_create_sampler_state_desc(struct pipe_context *pipe, cs->SAMP_CTRL1 = VIVS_NTE_DESCRIPTOR_SAMP_CTRL1_UNK1; uint32_t min_lod_fp8 = MIN2(etna_float_to_fixp88(ss->min_lod), 0xfff); uint32_t max_lod_fp8 = MIN2(etna_float_to_fixp88(ss->max_lod), 0xfff); + uint32_t max_lod_min = ss->min_img_filter != ss->mag_img_filter ? 4 : 0; + if (ss->min_mip_filter != PIPE_TEX_MIPFILTER_NONE) { cs->SAMP_LOD_MINMAX = - VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX_MAX(max_lod_fp8) | + VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX_MAX(MAX2(max_lod_fp8, max_lod_min)) | VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX_MIN(min_lod_fp8); } else { cs->SAMP_LOD_MINMAX = - VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX_MAX(min_lod_fp8) | + VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX_MAX(MAX2(max_lod_fp8, max_lod_min)) | VIVS_NTE_DESCRIPTOR_SAMP_LOD_MINMAX_MIN(min_lod_fp8); } cs->SAMP_LOD_BIAS = -- 2.30.2