From: Eric Anholt Date: Wed, 20 Jun 2018 17:22:44 +0000 (-0700) Subject: v3d: Fix min vs mag determination when not doing mip filtering. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=edb7890750f8230021c1efa8e4d0d7a383f076c4;p=mesa.git v3d: Fix min vs mag determination when not doing mip filtering. Fixes all 128 failing tests in dEQP-GLES3.functional.texture.filtering.*.combinations --- diff --git a/src/gallium/drivers/v3d/v3dx_state.c b/src/gallium/drivers/v3d/v3dx_state.c index 70c596855f9..c0f43d800ea 100644 --- a/src/gallium/drivers/v3d/v3dx_state.c +++ b/src/gallium/drivers/v3d/v3dx_state.c @@ -556,9 +556,17 @@ v3d_create_sampler_state(struct pipe_context *pctx, 15); sampler.max_level_of_detail = MIN2(cso->max_lod, 15); + /* If we're not doing inter-miplevel filtering, we need to + * clamp the LOD so that we only sample from baselevel. + * However, we need to still allow the calculated LOD to be + * fractionally over the baselevel, so that the HW can decide + * between the min and mag filters. + */ if (cso->min_mip_filter == PIPE_TEX_MIPFILTER_NONE) { - sampler.min_level_of_detail = 0; - sampler.max_level_of_detail = 0; + sampler.min_level_of_detail = + MIN2(sampler.min_level_of_detail, 1.0 / 256.0); + sampler.max_level_of_detail = + MIN2(sampler.max_level_of_detail, 1.0 / 256.0); } if (cso->max_anisotropy) {