Commit fd6c1bf0 authored by Dave Airlie's avatar Dave Airlie

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's avatarKeith Packard <>
Reviewed-by: Adam Jackson's avatarAdam Jackson <>
Signed-off-by: default avatarDave Airlie <>
parent 382dd45b
......@@ -179,6 +179,8 @@ typedef void (*ClipNotifyProcPtr) (WindowPtr /*pWindow */ ,
/* pixmap will contain a glyph */
/* pixmap will be shared */
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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment