dix: add unattached list for attaching screens to initially. (v1.1)
This list is meant for attaching unbound gpu screens to initially, before the client side rebinds them. v1.1: add another assert in the add path. 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
9b5cf2ed76
commit
4caad34c93
|
@ -3742,6 +3742,8 @@ static int init_screen(ScreenPtr pScreen, int i, Bool gpu)
|
||||||
pScreen->ClipNotify = 0; /* for R4 ddx compatibility */
|
pScreen->ClipNotify = 0; /* for R4 ddx compatibility */
|
||||||
pScreen->CreateScreenResources = 0;
|
pScreen->CreateScreenResources = 0;
|
||||||
|
|
||||||
|
xorg_list_init(&pScreen->unattached_list);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This loop gets run once for every Screen that gets added,
|
* This loop gets run once for every Screen that gets added,
|
||||||
* but thats ok. If the ddx layer initializes the formats
|
* but thats ok. If the ddx layer initializes the formats
|
||||||
|
@ -3889,3 +3891,21 @@ RemoveGPUScreen(ScreenPtr pScreen)
|
||||||
free(pScreen);
|
free(pScreen);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new)
|
||||||
|
{
|
||||||
|
assert(new->isGPU);
|
||||||
|
assert(!new->current_master);
|
||||||
|
xorg_list_add(&new->unattached_head, &pScreen->unattached_list);
|
||||||
|
new->current_master = pScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DetachUnboundGPU(ScreenPtr slave)
|
||||||
|
{
|
||||||
|
assert(slave->isGPU);
|
||||||
|
xorg_list_del(&slave->unattached_head);
|
||||||
|
slave->current_master = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,11 @@ extern _X_EXPORT int AddGPUScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ ,
|
||||||
|
|
||||||
extern _X_EXPORT void RemoveGPUScreen(ScreenPtr pScreen);
|
extern _X_EXPORT void RemoveGPUScreen(ScreenPtr pScreen);
|
||||||
|
|
||||||
|
extern _X_EXPORT void
|
||||||
|
AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new);
|
||||||
|
extern _X_EXPORT void
|
||||||
|
DetachUnboundGPU(ScreenPtr unbound);
|
||||||
|
|
||||||
typedef struct _ColormapRec *ColormapPtr;
|
typedef struct _ColormapRec *ColormapPtr;
|
||||||
|
|
||||||
#endif /* SCREENINT_H */
|
#endif /* SCREENINT_H */
|
||||||
|
|
|
@ -479,6 +479,12 @@ typedef struct _Screen {
|
||||||
Bool canDoBGNoneRoot;
|
Bool canDoBGNoneRoot;
|
||||||
|
|
||||||
Bool isGPU;
|
Bool isGPU;
|
||||||
|
|
||||||
|
struct xorg_list unattached_list;
|
||||||
|
struct xorg_list unattached_head;
|
||||||
|
|
||||||
|
ScreenPtr current_master;
|
||||||
|
|
||||||
} ScreenRec;
|
} ScreenRec;
|
||||||
|
|
||||||
static inline RegionPtr
|
static inline RegionPtr
|
||||||
|
|
Loading…
Reference in New Issue