----- Original Message ----- > On Mon, Jun 25, 2012 at 11:40:08AM -0700, Jose Fonseca wrote: > > My thoughts too. > > > > Brilinear filtering provides a significant boost, and I don't see > > why skip the optimization for explicit lod over implicit lods. > > Warning: code misread :-) > > Explicit lod does not need brilinear filtering because explicit lod > is > post log2. Brilinear is only about a faster log2, nothing else. > Explicit lod only needs the integer/fractional part separation. > > The whole code is: > if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) { > if (!explicit_lod && !(gallivm_debug & > GALLIVM_DEBUG_NO_BRILINEAR)) { > lp_build_brilinear_lod(float_bld, lod, BRILINEAR_FACTOR, > out_lod_ipart, out_lod_fpart); > } > else { > lp_build_ifloor_fract(float_bld, lod, out_lod_ipart, > out_lod_fpart); > } > > lp_build_name(*out_lod_fpart, "lod_fpart"); > } > else { > *out_lod_ipart = lp_build_iround(float_bld, lod); > } > > and you're not going to tell me that lp_build_brilinear_lod is faster > than lp_build_ifloor_fract (especially since it includes it ;-)
Indeed lp_build_brilinear_lod is not faster than lp_build_ifloor_fract, but brilinear is faster, not because log is a faster approximation, but because it increases the odds that fract part is zero, which means that we can sample from a single mip level, instead of lerping between two mip levels. I think you have a good point here -- lp_build_brilinear_lod is a log2 approximation which is wrong here and that's a great catch, -- but I have a point too: lp_build_ifloor_fract will slow down texture sampling. Just like log2 and brilinear log2, we need a variant of ifloor_fract, that increases the probability of fract part being zero, essentially by applying a stair case transformation like: ____/ / ____/ / ____/ Jose _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev