r300->hw.tex.filter.cmd[R300_TEX_VALUE_0 +
hw_tmu] =
gen_fixed_filter(t->filter) | (hw_tmu << 28);
- r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->filter_1
- | r300CalculateTexLodBias(r300->LODBias);
+ /* Make LOD bias a bit more per-tex and less per-everything. */
+ t->filter_1 &= ~R300_LOD_BIAS_MASK;
+ t->filter_1 |= r300CalculateTexLodBias(ctx->Texture.Unit[i].LodBias);
+ r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->filter_1;
r300->hw.tex.size.cmd[R300_TEX_VALUE_0 + hw_tmu] =
t->size;
r300->hw.tex.format.cmd[R300_TEX_VALUE_0 +
*/
switch (pname) {
case GL_TEXTURE_LOD_BIAS_EXT: {
- /* Needs to be relocated in order to make sure we got the right tmu */
GLfloat bias, min;
/* The R300's LOD bias is a signed 2's complement value with a
"no_neg_lod_bias") ? 0.0 : -16.0;
bias = CLAMP(bias, min, 16.0);
- rmesa->LODBias = bias;
+ /* There's probably a magic Mesa method for finding the REAL
+ * texture unit. I don't know it, though. */
+ if (!(ctx->Texture._EnabledUnits & (1 << ctx->Texture.CurrentUnit))) {
+ break;
+ }
+
+ /* Save our newly clamped LOD bias. */
+ ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias = bias;
break;
}