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 <kenn...@whitecape.org> --- hw/xfree86/drivers/modesetting/driver.c | 14 ++------- hw/xfree86/drivers/modesetting/drmmode_display.c | 37 ++++++++++++++++-------- hw/xfree86/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 06b0f21..61c8032 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 f88148d..6f6eaf3 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 92e2816..a8df7ca 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, -- 2.1.3 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel