Bug 31313

Summary: X rotates display with delay and black screen effect
Product: xorg Reporter: Levon <deimusmeister>
Component: Server/Ext/RandRAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED MOVED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: 7.5 (2009.10)   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Levon 2010-11-02 00:44:39 UTC
Hello,

When rotating X's display 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


Steps to reproduce
1. Run following on machine with xorg-x11-drv-intel 
2. In terminal run following from normal orientation : xrandr -o left

Actual result : 
Screen is rotated with delay and black screen effect then it shows normal rotated screen

Expected result : 
Should rotate screen with no delays and any black screen effect. 
Like when rotating from the right orientation to the left orientation.



Details : 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

Xorg-server 1:7.5
xserver-xorg-video-intel 2:2.11.0
xserver-xorg-video-intel 2:2.12.0
xserver-xorg-video-intel 2:2.13.0


Regards,
Levon
Comment 1 Chris Wilson 2010-11-30 06:59:16 UTC
See the proposal for per-crtc pixmaps in RandR 1.4.
Comment 2 Chris Wilson 2012-07-14 09:29:23 UTC
Randr1.4 was still born. However, this is indeed quite annoying since it should be possible to achieve a seamless transition to a rotated framebuffer in the current setup. :|
Comment 3 Chris Wilson 2012-07-16 08:03:51 UTC
This is just an unnecessary forced disable due to the crtc_disable() in apply(). Comparing xrandr.c with xserver/randr/rrcrtc.c, I think it is a workaround for randr1.0 as randr1.2 drivers handle the situation fine.
Comment 4 Chris Wilson 2012-07-16 08:12:55 UTC
Nope, actually missing a bit of protocol to change the screen size and adjust the CRTCs simultaneously.
Comment 5 GitLab Migration User 2018-12-13 18:32:58 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/xserver/issues/216.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.