static INLINE void _fenced_buffer_remove(struct fenced_buffer_list *fenced_list, struct fenced_buffer *fenced_buf) { struct pb_fence_ops *ops = fenced_list->ops; assert(fenced_buf->fence); assert(fenced_buf->list == fenced_list); ops->fence_reference(ops, &fenced_buf->fence, NULL); fenced_buf->flags &= ~PIPE_BUFFER_USAGE_GPU_READ_WRITE; assert(fenced_buf->head.prev); assert(fenced_buf->head.next); LIST_DEL(&fenced_buf->head); assert(fenced_list->numDelayed); --fenced_list->numDelayed; #ifdef DEBUG LIST_ADDTAIL(&fenced_buf->head, &fenced_list->unfenced); ++fenced_list->numUnfenced; #endif /** * FIXME!!! */ if(!pipe_is_referenced(&fenced_buf->base.base.reference)) _fenced_buffer_destroy(fenced_buf); }
static INLINE void _fenced_buffer_remove(struct fenced_buffer_list *fenced_list, struct fenced_buffer *fenced_buf) { struct pipe_winsys *winsys = fenced_list->winsys; assert(fenced_buf->fence); assert(fenced_buf->list == fenced_list); winsys->fence_reference(winsys, &fenced_buf->fence, NULL); fenced_buf->flags &= ~PIPE_BUFFER_USAGE_GPU_READ_WRITE; assert(fenced_buf->head.prev); assert(fenced_buf->head.next); LIST_DEL(&fenced_buf->head); #ifdef DEBUG fenced_buf->head.prev = NULL; fenced_buf->head.next = NULL; #endif assert(fenced_list->numDelayed); --fenced_list->numDelayed; if(!fenced_buf->base.base.refcount) _fenced_buffer_destroy(fenced_buf); }