Wednesday, November 3, 2010

Xserver : black screen delay when rotating using xrandr

When rotating X's display orientation on the fly 
using xrandr -o left|normal|inverted|right
command, following transitions are performed with 
black screen delay effect i.e. the display becomes 
black for a moment then displays rotated screen.

The following transitions are performed with a delay 
a black screen is shown with ~1 second duration, then 
rotated screen appears
normal > right|left 
inverted > normal|left|right
left > normal|inverted
right > normal|inverted

The following transitions are performed smoothly with 
no delays, i.e. "immediately"
normal > inverted
left > right
right > left
Reason of the problem
Most time consuming code while rotating the display orientation
with xrandr is 
ret = crtc->funcs->set_mode_major(crtc, mode, rotation, x, y);  
intel video drivers function call. This call is located in 
hw/xfree86/modes/xf86Crtc.c file in xf86CrtcSetModeTransform 
function.

HW Platforms:
Graphics : Intel GMA 3150 graphics
Graphics : Intel Graphics Media Accelerator (GMA) 950
Corresponding bug is opened in Xservers's intel video drivers 
project
https://bugs.freedesktop.org/show_bug.cgi?id=31313