diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2015-01-14 16:35:16 -0800 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2015-01-14 16:35:16 -0800 |
commit | 25604e01a4b67feb5b3ea3048ac859a997c57b2b (patch) | |
tree | 57fd92be8e1c7663c2b090718267c8661aedb99d | |
parent | 8a8557c06bb042fa02cbd13f9af24eede83b6537 (diff) |
Stuff to make it almost buildwip/pageflip
-rw-r--r-- | hw/xfree86/drivers/modesetting/present.c | 22 |
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; } |