From af4f94b08eb8e5961799a8a74a06449fd3fe8ad9 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 9 Dec 2014 15:18:39 -0800 Subject: [PATCH] modesetting: Create helper for glamor_egl_create_textured_screen call. This will need to change when we add GBM support; by pulling it into a helper function, we should only have to edit one place. Signed-off-by: Kenneth Graunke Tested-by: Jason Ekstrand Reviewed-by: Keith Packard --- hw/xfree86/drivers/modesetting/driver.c | 14 +------ .../drivers/modesetting/drmmode_display.c | 37 +++++++++++++------ .../drivers/modesetting/drmmode_display.h | 1 + 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c index 06b0f2174..61c803276 100644 --- a/hw/xfree86/drivers/modesetting/driver.c +++ b/hw/xfree86/drivers/modesetting/driver.c @@ -886,18 +886,8 @@ CreateScreenResources(ScreenPtr pScreen) if (!drmmode_set_desired_modes(pScrn, &ms->drmmode)) return FALSE; -#ifdef GLAMOR - if (ms->drmmode.glamor) { - if (!glamor_egl_create_textured_screen(pScreen, - ms->drmmode.front_bo->handle, - pScrn->displayWidth * - pScrn->bitsPerPixel / 8)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "glamor_egl_create_textured_screen() failed\n"); - return FALSE; - } - } -#endif + if (!drmmode_glamor_handle_new_screen_pixmap(&ms->drmmode)) + return FALSE; drmmode_uevent_init(pScrn, &ms->drmmode); diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index f88148d71..6f6eaf390 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -1176,6 +1176,29 @@ drmmode_clones_init(ScrnInfoPtr scrn, drmmode_ptr drmmode) } } +Bool +drmmode_glamor_handle_new_screen_pixmap(drmmode_ptr drmmode) +{ +#ifdef GLAMOR + ScrnInfoPtr scrn = drmmode->scrn; + ScreenPtr screen = xf86ScrnToScreen(drmmode->scrn); + + if (!drmmode->glamor) + return TRUE; + + if (!glamor_egl_create_textured_screen(screen, + drmmode->front_bo->handle, + scrn->displayWidth * + scrn->bitsPerPixel / 8)) { + xf86DrvMsg(scrn->scrnIndex, X_ERROR, + "glamor_egl_create_textured_screen() failed\n"); + return FALSE; + } +#endif + + return TRUE; +} + static Bool drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) { @@ -1243,18 +1266,8 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) screen->ModifyPixmapHeader(ppix, width, height, -1, -1, pitch, new_pixels); -#ifdef GLAMOR - if (drmmode->glamor) { - if (!glamor_egl_create_textured_screen(screen, - drmmode->front_bo->handle, - scrn->displayWidth * - scrn->bitsPerPixel / 8)) { - xf86DrvMsg(scrn->scrnIndex, X_ERROR, - "glamor_egl_create_textured_screen() failed\n"); - goto fail; - } - } -#endif + if (!drmmode_glamor_handle_new_screen_pixmap(drmmode)) + goto fail; for (i = 0; i < xf86_config->num_crtc; i++) { xf86CrtcPtr crtc = xf86_config->crtc[i]; diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.h b/hw/xfree86/drivers/modesetting/drmmode_display.h index 92e2816de..a8df7ca09 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.h +++ b/hw/xfree86/drivers/modesetting/drmmode_display.h @@ -129,6 +129,7 @@ extern DevPrivateKeyRec msPixmapPrivateKeyRec; #define msGetPixmapPriv(drmmode, p) ((msPixmapPrivPtr)dixGetPrivateAddr(&(p)->devPrivates, &(drmmode)->pixmapPrivateKeyRec)) +Bool drmmode_glamor_handle_new_screen_pixmap(drmmode_ptr drmmode); void *drmmode_map_slave_bo(drmmode_ptr drmmode, msPixmapPrivPtr ppriv); Bool drmmode_SetSlaveBO(PixmapPtr ppix, drmmode_ptr drmmode,