diff options
author | Francisco Jerez <currojerez@gmail.com> | 2008-08-16 13:00:31 +0200 |
---|---|---|
committer | Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> | 2008-08-16 19:16:28 -0300 |
commit | 209097ba5b44a0ce0da7f1ea52150dcace2b5244 (patch) | |
tree | cf75b4a605fb5448bd6cc9d4e70ad0ccaab7ec74 /src/smi.h | |
parent | 45c6aedd6fe4e4d6abe58d1bb39ec01049404f09 (diff) |
RandR rotation implemented.
* I added the configuration file option "RandRRotation".
* I replaced pSmi->ShadowPitch with pSmi->screenStride, it seems it
makes more sense because the lower word of ShadowPitch may change
independently.
* I moved the SMI_DEDataFormat to smi_accel.c because it seems it is
a piece of code repeated many times in the driver.
* At some places, it is assumed the framebuffer is at FBOffset:
when using a shadow framebuffer, FBOffset is the location of the
on-screen framebuffer (0 should be used). This made e.g. EXA
completly useless with ShadowFB enabled (it crashed).
* In the FBManager initialization, I have replaced xf86InitFBManager
with xf86InitFBManagerRegion to reserve some additional space as
screen fb: it's unlikely to be the case, but a less efficient
alignment in the rotated mode could make the rotated mode need more
memory than the unrotated one.
This is not a problem with EXA as the offscreen memory parameters
can be easily modified when doing the rotation.
* In SMI_RefreshArea it's assumed that some DE registers are already
in some state, this is specially not true when using EXA.
* SMI_ValidMode rejects a rotated mode with different dimensions
than the panel. This seems to work now.
Signed-off-by: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>
Diffstat (limited to 'src/smi.h')
-rw-r--r-- | src/smi.h | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -220,7 +220,9 @@ typedef struct Bool shadowFB; /* Flag if shadow buffer is used */ int rotate; /* Rotation flags */ - int ShadowPitch; /* Pitch of shadow buffer */ + Bool randrRotation; /* Allow RandR rotation */ + CARD32 screenStride; /* Stride of the on-screen framebuffer */ + /* when using a shadow fb*/ int ShadowWidthBytes; /* Width of shadow buffer in bytes */ int ShadowWidth; /* Width of shadow buffer in @@ -350,6 +352,7 @@ void SMI_GEReset(ScrnInfoPtr pScrn, int from_timeout, int line, char *file); void SMI_EngineReset(ScrnInfoPtr); void SMI_SetClippingRectangle(ScrnInfoPtr, int, int, int, int); void SMI_DisableClipping(ScrnInfoPtr); +CARD32 SMI_DEDataFormat(int bpp); /* smi_hwcurs.c */ Bool SMI_HWCursorInit(ScreenPtr pScrn); |