[Mesa-dev] [PATCH 2/2] i915: fallback for NPOT cubemap texture

Yuanhan Liu yuanhan.liu at linux.intel.com
Tue Feb 28 23:11:06 PST 2012


According to 3DSTATE_MAP_STATE at page of 104 in Bspec
vol3d 3D Instructions:
  [DevGDG and DevAlv]: Must be a power of 2 for cube maps

Well, it turned out to be that we need do this for other
platforms as well, like pineview.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46666

NOTE: This is a candidate for stable release branches.

Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>
---
 src/mesa/drivers/dri/i915/i915_texstate.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c
index 0e500e2..e3ab50e 100644
--- a/src/mesa/drivers/dri/i915/i915_texstate.c
+++ b/src/mesa/drivers/dri/i915/i915_texstate.c
@@ -319,6 +319,18 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
            ((wt != GL_CLAMP) && (wt != GL_CLAMP_TO_EDGE))))
           return false;
 
+      /*
+       * According to 3DSTATE_MAP_STATE at page of 104 in Bspec
+       * Vol3d 3D Instructions:
+       *   [DevGDG and DevAlv]: Must be a power of 2 for cube maps.
+       *
+       * Well, it turned out to be that we need do this for other
+       * platforms as well, like pineview.
+       */
+      if (tObj->Target == GL_TEXTURE_CUBE_MAP_ARB &&
+          !is_power_of_two(firstImage->Height))
+         return false;
+
       state[I915_TEXREG_SS3] = ss3;     /* SS3_NORMALIZED_COORDS */
 
       state[I915_TEXREG_SS3] |=
-- 
1.7.7



More information about the mesa-dev mailing list