diff options
-rw-r--r-- | src/gallium/drivers/v3d/v3dx_state.c | 12 |
1 files changed, 10 insertions, 2 deletions
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) { |