modesetting: ms_covering_crtc: Allow calling on non modesetting Screens
99% of the code in ms_covering_crtc is video-driver agnostic. Add a screen_is_ms parameter when when FALSE skips the one ms specific check, this will allow calling ms_covering_crtc on slave GPUs. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
		
							parent
							
								
									238248d67e
								
							
						
					
					
						commit
						7ade8ba10e
					
				| 
						 | 
				
			
			@ -96,7 +96,7 @@ ms_crtc_on(xf86CrtcPtr crtc)
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
static xf86CrtcPtr
 | 
			
		||||
ms_covering_crtc(ScreenPtr pScreen, BoxPtr box)
 | 
			
		||||
ms_covering_crtc(ScreenPtr pScreen, BoxPtr box, Bool screen_is_ms)
 | 
			
		||||
{
 | 
			
		||||
    ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
 | 
			
		||||
    xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
 | 
			
		||||
| 
						 | 
				
			
			@ -104,14 +104,20 @@ ms_covering_crtc(ScreenPtr pScreen, BoxPtr box)
 | 
			
		|||
    int coverage, best_coverage;
 | 
			
		||||
    int c;
 | 
			
		||||
    BoxRec crtc_box, cover_box;
 | 
			
		||||
    Bool crtc_on;
 | 
			
		||||
 | 
			
		||||
    best_crtc = NULL;
 | 
			
		||||
    best_coverage = 0;
 | 
			
		||||
    for (c = 0; c < xf86_config->num_crtc; c++) {
 | 
			
		||||
        crtc = xf86_config->crtc[c];
 | 
			
		||||
 | 
			
		||||
        if (screen_is_ms)
 | 
			
		||||
            crtc_on = ms_crtc_on(crtc);
 | 
			
		||||
        else
 | 
			
		||||
            crtc_on = crtc->enabled;
 | 
			
		||||
 | 
			
		||||
        /* If the CRTC is off, treat it as not covering */
 | 
			
		||||
        if (!ms_crtc_on(crtc))
 | 
			
		||||
        if (!crtc_on)
 | 
			
		||||
            continue;
 | 
			
		||||
 | 
			
		||||
        ms_crtc_box(crtc, &crtc_box);
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +142,7 @@ ms_dri2_crtc_covering_drawable(DrawablePtr pDraw)
 | 
			
		|||
    box.x2 = box.x1 + pDraw->width;
 | 
			
		||||
    box.y2 = box.y1 + pDraw->height;
 | 
			
		||||
 | 
			
		||||
    return ms_covering_crtc(pScreen, &box);
 | 
			
		||||
    return ms_covering_crtc(pScreen, &box, TRUE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static Bool
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue