On Wed, Jun 2, 2010 at 7:15 AM, Cui, Hunk <hunk....@amd.com> wrote: > Hi, Alex, > > I have been established three Xorg environments, only use the XRandR > client program (it can download from http://cgit.freedesktop.org/xorg/ ). > The phenomenon, see below: > 1).Xserver-1.6.4/Geode driver-2.11.7 > Run: xrandr --output default --rotate left > Phenomenon: The screen properly rotate > Run: xrandr --output default --rotate normal --auto > Phenomenon: The screen return to normal state > 2).Xserver-1.7.1/Geode driver-2.11.7 > Run: xrandr --output default --rotate left > Phenomenon: The screen turn to black > Run: xrandr --output default --rotate normal --auto > Phenomenon: The screen return to normal state > 3).Xserver-1.8.99/Geode driver-2.11.8 > Run: xrandr --output default --rotate left > Phenomenon: The screen turn to black > Run: xrandr --output default --rotate normal --auto > Phenomenon: The screen does not return to normal state, still black > > Now the problem become more and more urgent, I use ddd tools to trace > the part of Xserver. > > In Xserver-1.6.4, I trace the source about the composite operation, as > following: > > #0 lx_do_composite (pxDst=0x8bef7f0, srcX=0, srcY=0, maskX=13860, > maskY=-1740, dstX=0, dstY=0, width=1024, height=768) at lx_exa.c:992 > #1 exaTryDriverComposite (op=<value optimized out>, pSrc=<value optimized > out>, pMask=0x0, pDst=0x8bb41c0, xSrc=0, ySrc=0, xMask=<value optimized out>, > yMask=<value optimized out>, xDst=<value optimized out>, yDst=<value > optimized out>, width=<value optimized out>, height=<value optimized out>) at > exa_render.c:688 > #2 exaComposite (op=1 '\001', pSrc=0x8bb2fc0, pMask=0x0, pDst=0x8bb41c0, > xSrc=0, ySrc=0, xMask=0, yMask=0, xDst=0, yDst=0, width=1024, height=768) at > exa_render.c:935 > #3 damageComposite (op=0 '\000', pSrc=0x8bb2fc0, pMask=0x0, pDst=0x8bb41c0, > xSrc=<value optimized out>, ySrc=<value optimized out>, xMask=<value > optimized out>, yMask=<value optimized out>, xDst=<value optimized out>, > yDst=<value optimized out>, width=<value optimized out>, height=<value > optimized out>) at damage.c:643 > #4 CompositePicture (op=1 '\001', pSrc=0x8bb2fc0, pMask=0x0, pDst=0x8bb41c0, > xSrc=0, ySrc=0, xMask=<value optimized out>, yMask=<value optimized out>, > xDst=<value optimized out>, yDst=<value optimized out>, width=1024, > height=768) at picture.c:1675 > #5 xf86RotateCrtcRedisplay (screenNum=0, blockData=0x0, pTimeout=0xbfaa3aec, > pReadmask=0x81ef240) at xf86Rotate.c:118 > #6 xf86RotateRedisplay (screenNum=0, blockData=0x0, pTimeout=0xbfaa3aec, > pReadmask=0x81ef240) at xf86Rotate.c:249 > #7 xf86RotateBlockHandler (screenNum=0, blockData=0x0, pTimeout=0xbfaa3aec, > pReadmask=0x81ef240) at xf86Rotate.c:269 > #8 BlockHandler (pTimeout=0xbfaa3aec, pReadmask=0x81ef240) at dixutils.c:384 > #9 WaitForSomething (pClientsReady=0x8be4900) at WaitFor.c:215 > #10 Dispatch () at dispatch.c:386 > #11 main (argc=1, argv=0xbfaa3c84, envp=0xbfaa3c8c) at main.c:397 > > The lx_do_composite function is the Geode-driver function, the others > are the XServer function, when I replace to the Xsever1.7.1 or Xserver1.8.99, > the maskX and maskY values are 0. That make me doubt it. Can you have some > other opinion? And you said the shadow_create, What is mean about it? >
As Michel said, the mask isn't used for this operation so ignore the the mask parameters. It's src/dst only. As I noted before, if rotation is enabled, you need to make sure: - you deal with transforms correctly in the driver composite hook, or fallback and let software handle it - you point the crtc offset at the offset of the rotation shadow buffer Alex > Thanks, > Hunk Cui > > -----Original Message----- > From: Alex Deucher [mailto:alexdeuc...@gmail.com] > Sent: Thursday, May 27, 2010 10:57 PM > To: Cui, Hunk > Cc: xorg-de...@lists.x.org; xorg@lists.freedesktop.org; Kai-Uwe Behrmann; > Adam Jackson; yang...@gmail.com > Subject: Re: The RandR-"unable to set rotation" issue in AMD Geode LX platform > > On Wed, May 26, 2010 at 11:40 PM, Cui, Hunk <hunk....@amd.com> wrote: >> Hi, all, >> >> As said on Ubuntu BTS, >> https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-geode/+bug/377929 >> >> About “unable to set rotation on AMD Geode LX800”, I used Ubuntu 9.10 which >> comes with generic kernel 2.6.31-17 and Xserver 1.6.4, geode-driver 2.11.6, >> I also able to rotate the screen just fine with the default geode driver >> that comes with this distribution using Xrandr. Rotation is working just >> fine with 'xrandr'. I used command such as: >>> xrandr -o left >>> xrandr -o right >>> xrandr -o inverted >>> xrandr -o normal >> >> I gave a try with 1.7.1 server on rotation, Geode driver 2.11.7, In our >> platform, the <OUTPUT> name is "default", >> (BTW: In general use $ xrandr -q to discover the appropriate output names >> for your configuration, the reference link: >> http://www.thinkwiki.org/wiki/Xorg_RandR_1.2) >> >> When I tried: "xrandr --output default --rotate left". The screen turn to >> black. >> Then tried: "xrandr --output default --rotate normal --auto". The screen >> return to normal. >> >> Because from 1.6.4 server to 1.7.1 server, the part of RandR have been >> updated and changed from source code. >> >> Who know the change about the part of RandR in Xserver 1.7.1? > > I don't recall what might have changed with regard to rotation in > xserver 1.7.1 off hand. However, randr-based rotation is implemented > via composite. If your driver implements EXA, the EXA composite hook > would be used, so you need to make sure your composite hook handles > transforms or if not falls back properly so it can be handled by > software. Also make sure you implement the randr crtc hooks for > allocating the shadow pixmap used for rotation (shadow_create, > shadow_allocate, shadow_destroy). Finally in your crtc mode_set > function, make sure you set the crtc base address to the shadow buffer > is rotation is active. > > Alex > > _______________________________________________ xorg@lists.freedesktop.org: X.Org support Archives: http://lists.freedesktop.org/archives/xorg Info: http://lists.freedesktop.org/mailman/listinfo/xorg Your subscription address: arch...@mail-archive.com