[PATCH xserver 2/3] modesetting: ms_covering_crtc: Allow calling on non modesetting Screens
Hans de Goede
hdegoede at redhat.com
Wed Aug 24 13:30:11 UTC 2016
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 <hdegoede at redhat.com>
---
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
More information about the xorg-devel
mailing list