summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2015-01-14 16:35:16 -0800
committerJason Ekstrand <jason.ekstrand@intel.com>2015-01-14 16:35:16 -0800
commit25604e01a4b67feb5b3ea3048ac859a997c57b2b (patch)
tree57fd92be8e1c7663c2b090718267c8661aedb99d
parent8a8557c06bb042fa02cbd13f9af24eede83b6537 (diff)
Stuff to make it almost buildwip/pageflip
-rw-r--r--hw/xfree86/drivers/modesetting/present.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c
index 43e7e02e2..57097fd59 100644
--- a/hw/xfree86/drivers/modesetting/present.c
+++ b/hw/xfree86/drivers/modesetting/present.c
@@ -318,11 +318,10 @@ ms_do_pageflip(ScreenPtr screen,
modesettingPtr ms = modesettingPTR(scrn);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
uint16_t pitch = drmmode_bo_get_pitch(&ms->drmmode.front_bo);
+ struct gbm_bo *new_front_bo;
uint32_t new_fb_id;
uint32_t flags;
- uint32_t size;
int i;
- int fd;
ms->flip_vblank_event = calloc(1, sizeof(struct ms_present_vblank_event));
if (!ms->flip_vblank_event)
@@ -331,17 +330,10 @@ ms_do_pageflip(ScreenPtr screen,
glamor_block_handler(screen);
- fd = glamor_fd_from_pixmap(screen, new_front, &pitch, &size);
- if (fd < 0) {
- xf86DrvMsg(scrn->scrnIndex, X_ERROR,
- "Failed to get fd for flip to new front.\n");
- return FALSE;
- }
- new_front_bo = ...get bo from fd...
- close(fd);
+ new_front_bo = glamor_gbm_bo_from_pixmap(screen, new_front);
if (!new_front_bo) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
- "Failed to open fd for new front.\n");
+ "Failed to get GBM bo for flip to new front.\n");
return FALSE;
}
@@ -352,10 +344,10 @@ ms_do_pageflip(ScreenPtr screen,
/* Create a new handle for the back buffer */
if (drmModeAddFB(ms->fd, scrn->virtualX, scrn->virtualY,
scrn->depth, scrn->bitsPerPixel, pitch,
- new_front->handle, &new_fb_id))
+ gbm_bo_get_handle(new_front_bo).u32, &new_fb_id))
goto error_out;
- drmmode_destroy(ms->drmmode, &ms->drmmode.front);
+ drmmode_bo_destroy(&ms->drmmode, &ms->drmmode.front_bo);
/* Queue flips on all enabled CRTCs.
*
@@ -381,7 +373,7 @@ ms_do_pageflip(ScreenPtr screen,
ms->flip_count++;
}
- ms->drmmode.old_fb_id = mode->fb_id;
+ ms->drmmode.old_fb_id = ms->drmmode.fb_id;
ms->drmmode.fb_id = new_fb_id;
if (ms->flip_count == 0)
@@ -402,7 +394,7 @@ error_out:
xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Page flip failed: %s\n",
strerror(errno));
- mode->flip_count = 0;
+ ms->flip_count = 0;
return FALSE;
}