xf86dga: handle DGAAvailable for gpu screens. (v2)
v2: Split out DGAAvailable into two interfaces, one for calls from protocol decoding and one for internal usage, after discussion with ajax and keithp. 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
3cbc4c10b5
commit
05d2472cd2
|
@ -521,17 +521,26 @@ DGAChangePixmapMode(int index, int *x, int *y, int mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
DGAAvailable(int index)
|
DGAScreenAvailable(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
if (!DGAScreenKeyRegistered)
|
if (!DGAScreenKeyRegistered)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (DGA_GET_SCREEN_PRIV(screenInfo.screens[index]))
|
if (DGA_GET_SCREEN_PRIV(pScreen))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bool
|
||||||
|
DGAAvailable(int index)
|
||||||
|
{
|
||||||
|
ScreenPtr pScreen;
|
||||||
|
|
||||||
|
assert(index < MAXSCREENS);
|
||||||
|
pScreen = screenInfo.screens[index];
|
||||||
|
return DGAScreenAvailable(pScreen);
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
DGAActive(int index)
|
DGAActive(int index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,6 +64,7 @@ extern _X_EXPORT void
|
||||||
DGASelectInput(int Index, ClientPtr client, long mask);
|
DGASelectInput(int Index, ClientPtr client, long mask);
|
||||||
|
|
||||||
extern _X_EXPORT Bool DGAAvailable(int Index);
|
extern _X_EXPORT Bool DGAAvailable(int Index);
|
||||||
|
extern _X_EXPORT Bool DGAScreenAvailable(ScreenPtr pScreen);
|
||||||
extern _X_EXPORT Bool DGAActive(int Index);
|
extern _X_EXPORT Bool DGAActive(int Index);
|
||||||
extern _X_EXPORT void DGAShutdown(void);
|
extern _X_EXPORT void DGAShutdown(void);
|
||||||
extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap);
|
extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap);
|
||||||
|
|
|
@ -178,7 +178,7 @@ _xf86_di_dga_reinit_internal(ScreenPtr pScreen)
|
||||||
ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
|
ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
|
||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
|
|
||||||
if (!DGAAvailable(pScreen->myNum))
|
if (!DGAScreenAvailable(pScreen))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (!xf86_dga_get_modes(pScreen))
|
if (!xf86_dga_get_modes(pScreen))
|
||||||
|
|
|
@ -97,7 +97,7 @@ xColorItem *pdefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
writeColormap = scrninfp->vtSema;
|
writeColormap = scrninfp->vtSema;
|
||||||
if (DGAAvailable(scrnIndex)) {
|
if (DGAScreenAvailable(pmap->pScreen)) {
|
||||||
writeColormap = writeColormap ||
|
writeColormap = writeColormap ||
|
||||||
(DGAGetDirectMode(scrnIndex) &&
|
(DGAGetDirectMode(scrnIndex) &&
|
||||||
!(DGAGetFlags(scrnIndex) & XF86DGADirectColormap)) ||
|
!(DGAGetFlags(scrnIndex) & XF86DGADirectColormap)) ||
|
||||||
|
|
Loading…
Reference in New Issue
Block a user