Bug 2604 - color tiling does not work correctly with XRandR
color tiling does not work correctly with XRandR
Product: xorg
Classification: Unclassified
Component: Driver/Radeon
x86 (IA32) Linux (All)
: high normal
Assigned To: Xorg Project Team
Depends on:
  Show dependency treegraph
Reported: 2005-02-23 14:43 UTC by Roland Scheidegger
Modified: 2005-07-03 23:49 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Note You need to log in before you can comment on or make changes to this bug.
Description Roland Scheidegger 2005-02-23 14:43:19 UTC
XRandR causes errors with color tiling. This can most easily be seen when
pageflip is enabled and a fullscreen app (for instance torcs) uses XRandR (not
vidmode like most apps do) to change the resolution (heavy flickering can be
seen, one of the two buffers is wrong).
I'll try to investigate this, though I need to figure out first how XRandR
actually works...
Comment 1 Alex Deucher 2005-02-25 08:57:38 UTC
I think xrandr just indirectly calls switchmode() and clamps the viewport.
Comment 2 Roland Scheidegger 2005-02-25 19:19:48 UTC
Apparently, what happens (at least with torcs) is that when RADEONDoAdjustFrame
is called when XRandr causes the resolution switch, info->have3DWindows is 0 and
thus the workaround to fix the horrible flickering when scrolling in a virtual
screen gets applied (i.e. the RADEON_CRTC_OFFSET_FLIP_CNTL bit gets unset). I
don't know why info->have3DWindows is 0 but the drm apparently thinks the 3d
client is already active (otherwise it would reinit the flip_cntl bit). But the
workaround is ugly anyway and should be replaced with a proper solution.
However, I got somewhat stuck with properly implementing that before, it's not
so easy.
Comment 3 Roland Scheidegger 2005-07-04 16:49:46 UTC
fixed, at the cost of getting the flickering back when scrolling vertically in a
virtual screen (if both color tiling and page flip are enabled). IMHO the
workaround causes more harm than good, especially since it's unclear why exactly
it fails (might not be related to xrandr at all). And the workaround didn't do
anything when some 3d window was active anyway.