glamor: Add stub Composite support.

This commit is contained in:
Eric Anholt 2009-08-20 16:43:22 -07:00 committed by Zhigang Gong
parent 2fa26c4958
commit f6cffbb2ba
3 changed files with 30 additions and 0 deletions

View File

@ -19,5 +19,6 @@ libglamor_la_SOURCES = \
glamor_fill.c \
glamor_fillspans.c \
glamor_getspans.c \
glamor_render.c \
glamor_tile.c \
glamor.h

View File

@ -147,6 +147,9 @@ Bool
glamor_init(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
#ifdef RENDER
PictureScreenPtr ps = GetPictureScreenIfSet(screen);
#endif
glamor_priv = xcalloc(1, sizeof(*glamor_priv));
if (glamor_priv == NULL)
@ -193,6 +196,11 @@ glamor_init(ScreenPtr screen)
glamor_priv->saved_get_spans = screen->GetSpans;
screen->GetSpans = glamor_get_spans;
#ifdef RENDER
glamor_priv->saved_composite = ps->Composite;
ps->Composite = glamor_composite;
#endif
glamor_init_solid_shader(screen);
glamor_init_tile_shader(screen);
@ -208,9 +216,15 @@ void
glamor_fini(ScreenPtr screen)
{
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
#ifdef RENDER
PictureScreenPtr ps = GetPictureScreenIfSet(screen);
#endif
screen->CreateGC = glamor_priv->saved_create_gc;
screen->CreatePixmap = glamor_priv->saved_create_pixmap;
screen->DestroyPixmap = glamor_priv->saved_destroy_pixmap;
screen->GetSpans = glamor_priv->saved_get_spans;
#ifdef RENDER
ps->Composite = glamor_priv->saved_composite;
#endif
}

View File

@ -43,6 +43,7 @@ typedef struct glamor_screen_private {
CreatePixmapProcPtr saved_create_pixmap;
DestroyPixmapProcPtr saved_destroy_pixmap;
GetSpansProcPtr saved_get_spans;
CompositeProcPtr saved_composite;
/* glamor_solid */
GLint solid_prog;
@ -135,6 +136,20 @@ glamor_get_spans(DrawablePtr drawable,
int nspans,
char *dst_start);
/* glamor_render.c */
void glamor_composite(CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
/* glamor_tile.c */
void glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
int x, int y, int width, int height,