Browse Source

i915: GM45 has GM965-style MCH setup.

Fixes tiling swizzling mode failures that manifest in glReadPixels().

Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Eric Anholt 16 years ago
parent
commit
b612eda98e
1 changed files with 3 additions and 2 deletions
  1. 3 2
      drivers/gpu/drm/i915/i915_gem_tiling.c

+ 3 - 2
drivers/gpu/drm/i915/i915_gem_tiling.c

@@ -96,7 +96,8 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
 		 */
 		 */
 		swizzle_x = I915_BIT_6_SWIZZLE_NONE;
 		swizzle_x = I915_BIT_6_SWIZZLE_NONE;
 		swizzle_y = I915_BIT_6_SWIZZLE_NONE;
 		swizzle_y = I915_BIT_6_SWIZZLE_NONE;
-	} else if ((!IS_I965G(dev) && !IS_G33(dev)) || IS_I965GM(dev)) {
+	} else if ((!IS_I965G(dev) && !IS_G33(dev)) || IS_I965GM(dev) ||
+		   IS_GM45(dev)) {
 		uint32_t dcc;
 		uint32_t dcc;
 
 
 		/* On 915-945 and GM965, channel interleave by the CPU is
 		/* On 915-945 and GM965, channel interleave by the CPU is
@@ -118,7 +119,7 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
 			    dcc & DCC_CHANNEL_XOR_DISABLE) {
 			    dcc & DCC_CHANNEL_XOR_DISABLE) {
 				swizzle_x = I915_BIT_6_SWIZZLE_9_10;
 				swizzle_x = I915_BIT_6_SWIZZLE_9_10;
 				swizzle_y = I915_BIT_6_SWIZZLE_9;
 				swizzle_y = I915_BIT_6_SWIZZLE_9;
-			} else if (IS_I965GM(dev)) {
+			} else if (IS_I965GM(dev) || IS_GM45(dev)) {
 				/* GM965 only does bit 11-based channel
 				/* GM965 only does bit 11-based channel
 				 * randomization
 				 * randomization
 				 */
 				 */