Home | History | Annotate | Download | only in src

Lines Matching refs:fence

55  * fence data.
110 wsbmFenceType(struct _WsbmFenceObject *fence)
112 return fence->fence_type;
163 struct _WsbmFenceObject *fence = *pFence;
167 if (fence == NULL)
170 mgr = fence->mgr;
171 if (wsbmAtomicDecZero(&fence->refCount)) {
172 struct _WsbmFenceClass *fc = &mgr->classes[fence->fence_class];
175 WSBMLISTDELINIT(&fence->head);
177 if (fence->private)
178 mgr->info.unreference(mgr, &fence->private);
179 fence->mgr = NULL;
181 free(fence);
223 wsbmFenceFinish(struct _WsbmFenceObject *fence, uint32_t fence_type,
226 struct _WsbmFenceMgr *mgr = fence->mgr;
229 if ((wsbmAtomicRead(&fence->signaled_types) & fence_type) == fence_type)
232 ret = mgr->info.finish(mgr, fence->private, fence_type, lazy_hint);
236 wsbmSignalPreviousFences(mgr, &fence->head, fence->fence_class,
243 wsbmFenceSignaledTypeCached(struct _WsbmFenceObject * fence)
245 return wsbmAtomicRead(&fence->signaled_types);
249 wsbmFenceSignaledType(struct _WsbmFenceObject *fence, uint32_t flush_type,
258 mgr = fence->mgr;
259 *signaled = wsbmAtomicRead(&fence->signaled_types);
263 ret = mgr->info.signaled(mgr, fence->private, flush_type, signaled);
265 *signaled = wsbmAtomicRead(&fence->signaled_types);
270 old_signaled_types = wsbmAtomicRead(&fence->signaled_types);
275 ret_st = wsbmAtomicCmpXchg(&fence->signaled_types, old_signaled_types,
278 wsbmSignalPreviousFences(mgr, &fence->head, fence->fence_class,
288 wsbmFenceReference(struct _WsbmFenceObject *fence)
290 if (fence == NULL)
292 wsbmAtomicInc(&fence->refCount);
293 return fence;
302 struct _WsbmFenceObject *fence;
303 size_t fence_size = sizeof(*fence);
308 fence = calloc(1, fence_size + private_size);
310 if (!fence)
313 wsbmAtomicSet(&fence->refCount, 1);
314 fence->mgr = mgr;
315 fence->fence_class = fence_class;
316 fence->fence_type = fence_type;
317 wsbmAtomicSet(&fence->signaled_types, signaled_types);
318 fence->private = private;
320 fence->private = (void *)(((uint8_t *) fence) + fence_size);
321 memcpy(fence->private, private, private_size);
325 WSBMLISTADDTAIL(&fence->head, &fc->head);
328 return fence;
337 if (fence)
338 free(fence);