kdrive: Move Xephyr-specific fields out of KdScreenInfo
memory_base, memory_size, off_screen_base fields in KdScreenInfo are used only by fake EXA in Xephyr. Move them into Xephyr, cleanup Xfake and Xfbdev. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
This commit is contained in:
parent
62883b499b
commit
5337ddcfd9
|
@ -220,6 +220,22 @@ ephyrWindowLinear (ScreenPtr pScreen,
|
||||||
return priv->base + row * priv->bytes_per_line + offset;
|
return priv->base + row * priv->bytes_per_line + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Figure out display buffer size. If fakexa is enabled, allocate a larger
|
||||||
|
* buffer so that fakexa has space to put offscreen pixmaps.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
ephyrBufferHeight(KdScreenInfo *screen)
|
||||||
|
{
|
||||||
|
int buffer_height;
|
||||||
|
if (ephyrFuncs.initAccel == NULL)
|
||||||
|
buffer_height = screen->height;
|
||||||
|
else
|
||||||
|
buffer_height = 3 * screen->height;
|
||||||
|
return buffer_height;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
ephyrMapFramebuffer (KdScreenInfo *screen)
|
ephyrMapFramebuffer (KdScreenInfo *screen)
|
||||||
{
|
{
|
||||||
|
@ -236,21 +252,10 @@ ephyrMapFramebuffer (KdScreenInfo *screen)
|
||||||
|
|
||||||
priv->bytes_per_line = ((screen->width * screen->fb[0].bitsPerPixel + 31) >> 5) << 2;
|
priv->bytes_per_line = ((screen->width * screen->fb[0].bitsPerPixel + 31) >> 5) << 2;
|
||||||
|
|
||||||
/* point the framebuffer to the data in an XImage */
|
buffer_height = ephyrBufferHeight(screen);
|
||||||
/* If fakexa is enabled, allocate a larger buffer so that fakexa has space to
|
|
||||||
* put offscreen pixmaps.
|
|
||||||
*/
|
|
||||||
if (ephyrFuncs.initAccel == NULL)
|
|
||||||
buffer_height = screen->height;
|
|
||||||
else
|
|
||||||
buffer_height = 3 * screen->height;
|
|
||||||
|
|
||||||
priv->base = hostx_screen_init (screen, screen->width, screen->height, buffer_height);
|
priv->base = hostx_screen_init (screen, screen->width, screen->height, buffer_height);
|
||||||
|
|
||||||
screen->memory_base = (CARD8 *) (priv->base);
|
|
||||||
screen->memory_size = priv->bytes_per_line * buffer_height;
|
|
||||||
screen->off_screen_base = priv->bytes_per_line * screen->height;
|
|
||||||
|
|
||||||
if ((scrpriv->randr & RR_Rotate_0) && !(scrpriv->randr & RR_Reflect_All))
|
if ((scrpriv->randr & RR_Rotate_0) && !(scrpriv->randr & RR_Reflect_All))
|
||||||
{
|
{
|
||||||
scrpriv->shadow = FALSE;
|
scrpriv->shadow = FALSE;
|
||||||
|
|
|
@ -180,6 +180,8 @@ extern Bool ephyrCursorInit(ScreenPtr pScreen);
|
||||||
|
|
||||||
extern void ephyrCursorEnable(ScreenPtr pScreen);
|
extern void ephyrCursorEnable(ScreenPtr pScreen);
|
||||||
|
|
||||||
|
extern int ephyrBufferHeight(KdScreenInfo *screen);
|
||||||
|
|
||||||
/* ephyr_draw.c */
|
/* ephyr_draw.c */
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
|
|
@ -428,6 +428,7 @@ ephyrDrawInit(ScreenPtr pScreen)
|
||||||
KdScreenPriv(pScreen);
|
KdScreenPriv(pScreen);
|
||||||
KdScreenInfo *screen = pScreenPriv->screen;
|
KdScreenInfo *screen = pScreenPriv->screen;
|
||||||
EphyrScrPriv *scrpriv = screen->driver;
|
EphyrScrPriv *scrpriv = screen->driver;
|
||||||
|
EphyrPriv *priv = screen->card->driver;
|
||||||
EphyrFakexaPriv *fakexa;
|
EphyrFakexaPriv *fakexa;
|
||||||
Bool success;
|
Bool success;
|
||||||
|
|
||||||
|
@ -441,9 +442,9 @@ ephyrDrawInit(ScreenPtr pScreen)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
fakexa->exa->memoryBase = screen->memory_base;
|
fakexa->exa->memoryBase = (CARD8 *) (priv->base);
|
||||||
fakexa->exa->memorySize = screen->memory_size;
|
fakexa->exa->memorySize = priv->bytes_per_line * ephyrBufferHeight(screen);
|
||||||
fakexa->exa->offScreenBase = screen->off_screen_base;
|
fakexa->exa->offScreenBase = priv->bytes_per_line * screen->height;
|
||||||
|
|
||||||
/* Since we statically link against EXA, we shouldn't have to be smart about
|
/* Since we statically link against EXA, we shouldn't have to be smart about
|
||||||
* versioning.
|
* versioning.
|
||||||
|
|
|
@ -171,9 +171,6 @@ fakeMapFramebuffer (KdScreenInfo *screen)
|
||||||
if (priv->base)
|
if (priv->base)
|
||||||
free (priv->base);
|
free (priv->base);
|
||||||
priv->base = malloc (priv->bytes_per_line * screen->height);
|
priv->base = malloc (priv->bytes_per_line * screen->height);
|
||||||
screen->memory_base = (CARD8 *) (priv->base);
|
|
||||||
screen->memory_size = 0;
|
|
||||||
screen->off_screen_base = 0;
|
|
||||||
|
|
||||||
if (scrpriv->shadow)
|
if (scrpriv->shadow)
|
||||||
{
|
{
|
||||||
|
|
|
@ -345,15 +345,12 @@ fbdevMapFramebuffer (KdScreenInfo *screen)
|
||||||
|
|
||||||
screen->width = priv->var.xres;
|
screen->width = priv->var.xres;
|
||||||
screen->height = priv->var.yres;
|
screen->height = priv->var.yres;
|
||||||
screen->memory_base = (CARD8 *) (priv->fb);
|
|
||||||
screen->memory_size = priv->fix.smem_len;
|
|
||||||
|
|
||||||
if (scrpriv->shadow)
|
if (scrpriv->shadow)
|
||||||
{
|
{
|
||||||
if (!KdShadowFbAlloc (screen, 0,
|
if (!KdShadowFbAlloc (screen, 0,
|
||||||
scrpriv->randr & (RR_Rotate_90|RR_Rotate_270)))
|
scrpriv->randr & (RR_Rotate_90|RR_Rotate_270)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
screen->off_screen_base = screen->memory_size;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -361,7 +358,6 @@ fbdevMapFramebuffer (KdScreenInfo *screen)
|
||||||
screen->fb[0].pixelStride = (priv->fix.line_length * 8 /
|
screen->fb[0].pixelStride = (priv->fix.line_length * 8 /
|
||||||
priv->var.bits_per_pixel);
|
priv->var.bits_per_pixel);
|
||||||
screen->fb[0].frameBuffer = (CARD8 *) (priv->fb);
|
screen->fb[0].frameBuffer = (CARD8 *) (priv->fb);
|
||||||
screen->off_screen_base = screen->fb[0].byteStride * screen->height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -111,9 +111,6 @@ typedef struct _KdScreenInfo {
|
||||||
int mynum;
|
int mynum;
|
||||||
DDXPointRec origin;
|
DDXPointRec origin;
|
||||||
KdFrameBuffer fb[KD_MAX_FB];
|
KdFrameBuffer fb[KD_MAX_FB];
|
||||||
CARD8 *memory_base;
|
|
||||||
unsigned long memory_size;
|
|
||||||
unsigned long off_screen_base;
|
|
||||||
} KdScreenInfo;
|
} KdScreenInfo;
|
||||||
|
|
||||||
typedef struct _KdCardFuncs {
|
typedef struct _KdCardFuncs {
|
||||||
|
|
Loading…
Reference in New Issue