On Tue, Nov 01, 2011 at 05:57:36PM +0800, Yuanhan Liu wrote: > According to bspec, MIPCnt(was set to intelObj->_MaxLevel) was used for > min/mag filter mode determination. For a normal case with no mipmap like > this: > > glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); > glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); > > hardware would always choose mag filter(GL_LINEAR) here since MIPCnt was > set to 0 zero, then would make LOD be zero. Then according the formula: > MagMode = (LOD - Base <= 0)
Here are some more comments about this: LOD is a pre-computed value. if preClamp is enabled, then LOD would be: LOD = min(min(MIPCnt, MAX_LOD), LOD); So, if MIPCnt was set to 0, and preClamp was enabled, then the _final_ LOD would be 0, and hardware choose mag filter. Thoughts? > > Thus hardware choose Mag filter. > > This would fix all oglc filtercubemin subcase fail > > Signed-off-by: Yuanhan Liu <yuanhan....@linux.intel.com> > --- > src/mesa/drivers/dri/intel/intel_tex_validate.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c > b/src/mesa/drivers/dri/intel/intel_tex_validate.c > index e2b8699..c06a043 100644 > --- a/src/mesa/drivers/dri/intel/intel_tex_validate.c > +++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c > @@ -21,8 +21,14 @@ intel_update_max_level(struct intel_texture_object > *intelObj, > { > struct gl_texture_object *tObj = &intelObj->base; > > - if (sampler->MinFilter == GL_NEAREST || > - sampler->MinFilter == GL_LINEAR) { > + /* > + * According to Bspec vol5c 1.2.1.5 LOD Computation Pseudocode, > + * the MIPCnt(here intelObj->_MaxLevel) was used for min/mag > + * determination. > + */ Also it seemts that this comments insn't good enough, will update it in the next patch. Thanks, Yuanhan Liu > + if ((sampler->MinFilter == sampler->MagFilter) && > + (sampler->MinFilter == GL_NEAREST || > + sampler->MinFilter == GL_LINEAR)) { > intelObj->_MaxLevel = tObj->BaseLevel; > } else { > intelObj->_MaxLevel = tObj->_MaxLevel; > -- > 1.7.4.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev