Mesa (mesa_7_7_branch): i915: Fix GL_TEXTURE_MAX_LEVEL support ( piglit levelclamp test).
Eric Anholt
anholt at kemper.freedesktop.org
Sat Dec 19 04:36:05 UTC 2009
Module: Mesa
Branch: mesa_7_7_branch
Commit: 6785d6741db987469293d737e9b18f94d189b62e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6785d6741db987469293d737e9b18f94d189b62e
Author: Eric Anholt <eric at anholt.net>
Date: Fri Dec 18 16:57:23 2009 -0800
i915: Fix GL_TEXTURE_MAX_LEVEL support (piglit levelclamp test).
---
src/mesa/drivers/dri/i915/i915_texstate.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c
index bcab043..de25848 100644
--- a/src/mesa/drivers/dri/i915/i915_texstate.c
+++ b/src/mesa/drivers/dri/i915/i915_texstate.c
@@ -138,6 +138,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
GLuint *state = i915->state.Tex[unit], format, pitch;
GLint lodbias, aniso = 0;
GLubyte border[4];
+ GLfloat maxlod;
memset(state, 0, sizeof(state));
@@ -195,10 +196,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
state[I915_TEXREG_MS3] |= MS3_TILE_WALK;
}
+ /* We get one field with fraction bits to cover the maximum addressable (smallest
+ * resolution) LOD. Use it to cover both MAX_LEVEL and MAX_LOD.
+ */
+ maxlod = MIN2(tObj->MaxLod, tObj->MaxLevel - tObj->BaseLevel);
state[I915_TEXREG_MS4] =
((((pitch / 4) - 1) << MS4_PITCH_SHIFT) |
MS4_CUBE_FACE_ENA_MASK |
- (U_FIXED(CLAMP(tObj->MaxLod, 0.0, 11.0), 2) << MS4_MAX_LOD_SHIFT) |
+ (U_FIXED(CLAMP(maxlod, 0.0, 11.0), 2) << MS4_MAX_LOD_SHIFT) |
((firstImage->Depth - 1) << MS4_VOLUME_DEPTH_SHIFT));
More information about the mesa-commit
mailing list