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>
This commit is contained in:
parent
382dd45bb8
commit
fd6c1bf0a3
|
@ -179,6 +179,8 @@ typedef void (*ClipNotifyProcPtr) (WindowPtr /*pWindow */ ,
|
||||||
#define CREATE_PIXMAP_USAGE_BACKING_PIXMAP 2
|
#define CREATE_PIXMAP_USAGE_BACKING_PIXMAP 2
|
||||||
/* pixmap will contain a glyph */
|
/* pixmap will contain a glyph */
|
||||||
#define CREATE_PIXMAP_USAGE_GLYPH_PICTURE 3
|
#define CREATE_PIXMAP_USAGE_GLYPH_PICTURE 3
|
||||||
|
/* pixmap will be shared */
|
||||||
|
#define CREATE_PIXMAP_USAGE_SHARED 4
|
||||||
|
|
||||||
typedef PixmapPtr (*CreatePixmapProcPtr) (ScreenPtr /*pScreen */ ,
|
typedef PixmapPtr (*CreatePixmapProcPtr) (ScreenPtr /*pScreen */ ,
|
||||||
int /*width */ ,
|
int /*width */ ,
|
||||||
|
@ -339,6 +341,16 @@ typedef void (*DeviceCursorCleanupProcPtr) (DeviceIntPtr /* pDev */ ,
|
||||||
typedef void (*ConstrainCursorHarderProcPtr) (DeviceIntPtr, ScreenPtr, int,
|
typedef void (*ConstrainCursorHarderProcPtr) (DeviceIntPtr, ScreenPtr, int,
|
||||||
int *, 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 {
|
typedef struct _Screen {
|
||||||
int myNum; /* index of this instance in Screens[] */
|
int myNum; /* index of this instance in Screens[] */
|
||||||
ATOM id;
|
ATOM id;
|
||||||
|
@ -488,6 +500,11 @@ typedef struct _Screen {
|
||||||
struct xorg_list output_slave_list;
|
struct xorg_list output_slave_list;
|
||||||
struct xorg_list output_head;
|
struct xorg_list output_head;
|
||||||
|
|
||||||
|
SharePixmapBackingProcPtr SharePixmapBacking;
|
||||||
|
SetSharedPixmapBackingProcPtr SetSharedPixmapBacking;
|
||||||
|
|
||||||
|
StartPixmapTrackingProcPtr StartPixmapTracking;
|
||||||
|
StopPixmapTrackingProcPtr StopPixmapTracking;
|
||||||
} ScreenRec;
|
} ScreenRec;
|
||||||
|
|
||||||
static inline RegionPtr
|
static inline RegionPtr
|
||||||
|
|
Loading…
Reference in New Issue