#include "i915_sw_winsys.h" #include "util/u_memory.h" #include "util/u_atomic.h" #include "util/u_inlines.h" struct i915_sw_fence { struct pipe_reference reference; }; struct pipe_fence_handle * i915_sw_fence_create() { struct i915_sw_fence *fence = CALLOC_STRUCT(i915_sw_fence); pipe_reference_init(&fence->reference, 1); return (struct pipe_fence_handle *)fence; } static void i915_sw_fence_reference(struct i915_winsys *iws, struct pipe_fence_handle **ptr, struct pipe_fence_handle *fence) { struct i915_sw_fence *old = (struct i915_sw_fence *)*ptr; struct i915_sw_fence *f = (struct i915_sw_fence *)fence; if (pipe_reference(&((struct i915_sw_fence *)(*ptr))->reference, &f->reference)) { FREE(old); } *ptr = fence; } static int i915_sw_fence_signalled(struct i915_winsys *iws, struct pipe_fence_handle *fence) { assert(0); return 0; } static int i915_sw_fence_finish(struct i915_winsys *iws, struct pipe_fence_handle *fence) { return 0; } void i915_sw_winsys_init_fence_functions(struct i915_sw_winsys *isws) { isws->base.fence_reference = i915_sw_fence_reference; isws->base.fence_signalled = i915_sw_fence_signalled; isws->base.fence_finish = i915_sw_fence_finish; }