i965: Use proper texture alignment units for cubemaps on Gen5+.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 15 Aug 2011 19:04:37 +0000 (12:04 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 7 Sep 2011 14:49:55 +0000 (07:49 -0700)
In particular, S3TC compressed textures need align_h == 4.

Fixes skybox errors in Quake 4 and FEAR.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34628
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_tex_layout.c

index 46a417a08edafd27eb216e13ecc23b6fc986bfc1..b5d2cf31290560a4beaa9f46a4a9c9b2293fcb2d 100644 (file)
@@ -49,11 +49,14 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
    switch (mt->target) {
    case GL_TEXTURE_CUBE_MAP:
       if (intel->gen >= 5) {
-          GLuint align_h = 2;
+          GLuint align_w;
+          GLuint align_h;
           GLuint level;
           GLuint qpitch = 0;
          int h0, h1, q;
 
+         intel_get_texture_alignment_unit(mt->format, &align_w, &align_h);
+
          /* On Ironlake, cube maps are finally represented as just a series
           * of MIPLAYOUT_BELOW 2D textures (like 2D texture arrays), separated
           * by a pitch of qpitch rows, where qpitch is defined by the equation