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