static void * brw_dri_create_fence_fd(__DRIcontext *dri_ctx, int fd) { struct brw_context *brw = dri_ctx->driverPrivate; struct brw_fence *fence; assert(brw->screen->has_exec_fence); fence = calloc(1, sizeof(*fence)); if (!fence) return NULL; brw_fence_init(brw, fence, BRW_FENCE_TYPE_SYNC_FD); if (fd == -1) { /* Create an out-fence fd */ if (!brw_fence_insert_locked(brw, fence)) goto fail; } else { /* Import the sync fd as an in-fence. */ fence->sync_fd = dup(fd); } assert(fence->sync_fd != -1); return fence; fail: brw_fence_finish(fence); free(fence); return NULL; }
static void brw_dri_destroy_fence(__DRIscreen *dri_screen, void *_fence) { struct brw_fence *fence = _fence; brw_fence_finish(fence); free(fence); }
static void brw_gl_delete_sync(struct gl_context *ctx, struct gl_sync_object *_sync) { struct brw_gl_sync *sync = (struct brw_gl_sync *) _sync; brw_fence_finish(&sync->fence); free(sync); }
static void intel_dri_destroy_fence(__DRIscreen *screen, void *driver_fence) { struct brw_fence *fence = driver_fence; brw_fence_finish(fence); free(fence); }
static void intel_gl_delete_sync_object(struct gl_context *ctx, struct gl_sync_object *s) { struct intel_gl_sync_object *sync = (struct intel_gl_sync_object *)s; brw_fence_finish(&sync->fence); free(sync); }
static void * brw_dri_create_fence(__DRIcontext *ctx) { struct brw_context *brw = ctx->driverPrivate; struct brw_fence *fence; fence = calloc(1, sizeof(*fence)); if (!fence) return NULL; brw_fence_init(brw, fence, BRW_FENCE_TYPE_BO_WAIT); if (!brw_fence_insert_locked(brw, fence)) { brw_fence_finish(fence); free(fence); return NULL; } return fence; }