[Intel-gfx] Regression in i915_gem_detect_bit_6_swizzle for 945G
Herton Ronaldo Krzesinski
herton at mandriva.com.br
Thu Jun 18 04:30:56 CEST 2009
Hi,
not sure if already reported, but looks like commit
568d9a8f6d4bf81e0672c74573dc02981d31e3ea ("drm/i915: Change
DCC tiling detection case to cover only mobile parts.") introduced a
regression in linux kernel, at least for 945G chips.
With this change, this code is now run for 945 desktop parts:
if (I915_READ16(C0DRB3) != I915_READ16(C1DRB3)) {
swizzle_x = I915_BIT_6_SWIZZLE_NONE;
swizzle_y = I915_BIT_6_SWIZZLE_NONE;
} else {
swizzle_x = I915_BIT_6_SWIZZLE_9_10;
swizzle_y = I915_BIT_6_SWIZZLE_9;
}
The problem is that C0DRB3 == 0x10206, which is true for 965 (and later? only
checked 965 datasheet for now), but this isn't true for 945, 945G/945P
datasheet informs another address (8 bits 103h instead of 16 bits 206h, same
issue with C1DRB3). Also I guess the check for 945G must be different, from
datasheet:
"C1DRB0 = Total memory in chA rank0 + chA rank1 + chA rank2 + chA rank3 + chB
rank0
(in 32-MB increments)
If Channel B is empty, all of the C1DRBs are programmed with the same value as
C0DRB3."
(in the part talking about C0DRB0 and single/interleaved mode)
Probably 915 is affected too, only checked the case for 945.
Also another problem I noticed, when any tiling gets enabled on all 945G
machines I could test, the following screen corruption happens always at some
places only when using EXA (with xorg intel driver <= 2.7.1, I think until
2.6.1 is affected):
http://users.mandriva.com.br/~herton/intel_945/corrupted.png
A normal screen (without corruption) is like this:
http://users.mandriva.com.br/~herton/intel_945/normal.png
If I force to use UXA or disable tiling in xorg.conf no corruption happens.
--
[]'s
Herton
More information about the Intel-gfx
mailing list