if (!nvbo)
return -EINVAL;
- if (nvbo->fence)
+ if (flags & NOUVEAU_BO_WR)
nouveau_fence_wait(&nvbo->fence);
+ else
+ nouveau_fence_wait(&nvbo->wr_fence);
if (nvbo->sysmem)
bo->map = nvbo->sysmem;
struct nouveau_bo_priv *nvbo = nouveau_bo(bo);
int ret;
+ assert(bo->map == NULL);
+
if (nvbo->user) {
ret = nouveau_bo_validate_user(chan, bo, fence, flags);
if (ret) {
return ret;
}
+ if (flags & NOUVEAU_BO_WR)
+ nouveau_fence_ref(fence, &nvbo->wr_fence);
nouveau_fence_ref(fence, &nvbo->fence);
return 0;
}