From 555867d4bdbd9463df8b9e85828e6425bf0c14f8 Mon Sep 17 00:00:00 2001 From: Fabian Bieler <der.f...@gmx.net> Date: Tue, 29 Mar 2011 11:59:08 +0200 Subject: [PATCH 4/4] st/mesa: Set min/max_lod to BaseLevel w/o mipmapping
According to chapter 3.8.8 of the OpenGL 2.1 specification, the GL should always select base_level when TEXTURE_MIN_FILTER is set to GL_LINEAR or GL_NEAREST. --- src/mesa/state_tracker/st_atom_sampler.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index 2025720..14c1285 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -163,13 +163,18 @@ update_samplers(struct st_context *st) if (texobj->Target != GL_TEXTURE_RECTANGLE_ARB) sampler->normalized_coords = 1; - sampler->lod_bias = st->ctx->Texture.Unit[texUnit].LodBias + - texobj->LodBias; - - sampler->min_lod = CLAMP(texobj->BaseLevel + texobj->MinLod, - texobj->BaseLevel, texobj->MaxLevel); - sampler->max_lod = CLAMP(texobj->BaseLevel + texobj->MaxLod, - texobj->BaseLevel, texobj->MaxLevel); + if (sampler->min_mip_filter == PIPE_TEX_MIPFILTER_NONE) { + sampler->lod_bias = 0; + sampler->min_lod = texobj->BaseLevel; + sampler->max_lod = texobj->BaseLevel; + } else { + sampler->lod_bias = st->ctx->Texture.Unit[texUnit].LodBias + + texobj->LodBias; + sampler->min_lod = CLAMP(texobj->BaseLevel + texobj->MinLod, + texobj->BaseLevel, texobj->MaxLevel); + sampler->max_lod = CLAMP(texobj->BaseLevel + texobj->MaxLod, + texobj->BaseLevel, texobj->MaxLevel); + } if (sampler->max_lod < sampler->min_lod) { /* The GL spec doesn't seem to specify what to do in this case. -- 1.7.4.1
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev