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.
Signed-off-by: Hans de Goede <[email protected]> --- hw/xfree86/drivers/modesetting/vblank.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/vblank.c b/hw/xfree86/drivers/modesetting/vblank.c index e738497..ec60ac4 100644 --- a/hw/xfree86/drivers/modesetting/vblank.c +++ b/hw/xfree86/drivers/modesetting/vblank.c @@ -97,7 +97,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); @@ -105,14 +105,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); @@ -137,7 +143,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 -- 2.9.3 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
