search for: nouveau_page_flip_unreserv

Displaying 2 results from an estimated 2 matches for "nouveau_page_flip_unreserv".

2012 Oct 05
4
[PATCH] drm/nouveau: handle same-fb page flips
...goto fail; - ret = ttm_bo_reserve(&old_bo->bo, false, false, false, 0); - if (ret) - goto fail_unreserve; + if (likely(old_bo != new_bo)) { + ret = ttm_bo_reserve(&old_bo->bo, false, false, false, 0); + if (ret) + goto fail_unreserve; + } return 0; @@ -551,8 +553,10 @@ nouveau_page_flip_unreserve(struct nouveau_bo *old_bo, nouveau_bo_fence(new_bo, fence); ttm_bo_unreserve(&new_bo->bo); - nouveau_bo_fence(old_bo, fence); - ttm_bo_unreserve(&old_bo->bo); + if (likely(old_bo != new_bo)) { + nouveau_bo_fence(old_bo, fence); + ttm_bo_unreserve(&old_bo->bo); + }...
2013 Mar 28
1
mesa vdpau regression with "dri2: Fix potential race and crash for swap at next vblank."
...+ ret = nouveau_page_flip_reserve(old_bo, new_bo); + if (ret) + goto fail_put; + /* Choose the channel the flip will be handled in */ fence = new_bo->bo.sync_obj; if (fence) @@ -614,6 +618,8 @@ nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, fail_unreserve: nouveau_page_flip_unreserve(old_bo, new_bo, NULL); +fail_put: + drm_vblank_put(dev, s->crtc); fail_free: kfree(s); return ret; @@ -638,24 +644,16 @@ nouveau_finish_page_flip(struct nouveau_channel *chan, } s = list_first_entry(&fctx->flip, struct nouveau_page_flip_state, head); - if (s->event) { - st...