diff options
author | Dave Airlie <airlied@redhat.com> | 2012-05-24 16:03:19 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-07-07 10:37:10 +0100 |
commit | fd6c1bf0a3efced3ad4623dbd4716230a5f2419e (patch) | |
tree | a1d7c69e8d3fa55b71f7a36484e09cacf56b6b99 /include | |
parent | 382dd45bb88fa92764bf0ecd655cb9890eb84960 (diff) |
dix: pixmap sharing infrastructure (v3)
This is a hooks for pixmap sharing and tracking.
The pixmap sharing ones get an integer handle for the pixmap
and use a handle to be the backing for a pixmap.
The tracker interface is to be used when a GPU needs to
track pixmaps to be updated for another GPU.
v2: pass slave to sharing so it can use it to work out driver.
v3: use void * as per keithp's suggestion.
Reviewed-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/scrnintstr.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/scrnintstr.h b/include/scrnintstr.h index 7efc5c3c1..3a738d3b0 100644 --- a/include/scrnintstr.h +++ b/include/scrnintstr.h @@ -179,6 +179,8 @@ typedef void (*ClipNotifyProcPtr) (WindowPtr /*pWindow */ , #define CREATE_PIXMAP_USAGE_BACKING_PIXMAP 2 /* pixmap will contain a glyph */ #define CREATE_PIXMAP_USAGE_GLYPH_PICTURE 3 +/* pixmap will be shared */ +#define CREATE_PIXMAP_USAGE_SHARED 4 typedef PixmapPtr (*CreatePixmapProcPtr) (ScreenPtr /*pScreen */ , int /*width */ , @@ -339,6 +341,16 @@ typedef void (*DeviceCursorCleanupProcPtr) (DeviceIntPtr /* pDev */ , typedef void (*ConstrainCursorHarderProcPtr) (DeviceIntPtr, ScreenPtr, int, int *, int *); + +typedef Bool (*SharePixmapBackingProcPtr)(PixmapPtr, ScreenPtr, void **); + +typedef Bool (*SetSharedPixmapBackingProcPtr)(PixmapPtr, void *); + +typedef Bool (*StartPixmapTrackingProcPtr)(PixmapPtr, PixmapPtr, + int x, int y); + +typedef Bool (*StopPixmapTrackingProcPtr)(PixmapPtr, PixmapPtr); + typedef struct _Screen { int myNum; /* index of this instance in Screens[] */ ATOM id; @@ -488,6 +500,11 @@ typedef struct _Screen { struct xorg_list output_slave_list; struct xorg_list output_head; + SharePixmapBackingProcPtr SharePixmapBacking; + SetSharedPixmapBackingProcPtr SetSharedPixmapBacking; + + StartPixmapTrackingProcPtr StartPixmapTracking; + StopPixmapTrackingProcPtr StopPixmapTracking; } ScreenRec; static inline RegionPtr |