summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-05-24 16:03:19 +0100
committerDave Airlie <airlied@redhat.com>2012-07-07 10:37:10 +0100
commitfd6c1bf0a3efced3ad4623dbd4716230a5f2419e (patch)
treea1d7c69e8d3fa55b71f7a36484e09cacf56b6b99 /include
parent382dd45bb88fa92764bf0ecd655cb9890eb84960 (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.h17
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