Lines Matching refs:sfence
268 struct si_multi_fence *sfence = (struct si_multi_fence *)fence; in si_fence_finish() local
275 if (!util_queue_fence_is_signalled(&sfence->ready)) { in si_fence_finish()
276 if (sfence->tc_token) { in si_fence_finish()
285 threaded_context_flush(ctx, sfence->tc_token, timeout == 0); in si_fence_finish()
292 util_queue_fence_wait(&sfence->ready); in si_fence_finish()
294 if (!util_queue_fence_wait_timeout(&sfence->ready, abs_timeout)) in si_fence_finish()
304 if (sfence->sdma) { in si_fence_finish()
305 if (!rws->fence_wait(rws, sfence->sdma, timeout)) in si_fence_finish()
315 if (!sfence->gfx) in si_fence_finish()
318 if (sfence->fine.buf && si_fine_fence_signaled(rws, &sfence->fine)) { in si_fence_finish()
319 rws->fence_reference(&sfence->gfx, NULL); in si_fence_finish()
320 si_resource_reference(&sfence->fine.buf, NULL); in si_fence_finish()
325 if (sctx && sfence->gfx_unflushed.ctx == sctx && in si_fence_finish()
326 sfence->gfx_unflushed.ib_index == sctx->num_gfx_cs_flushes) { in si_fence_finish()
351 sfence->gfx_unflushed.ctx = NULL; in si_fence_finish()
363 if (rws->fence_wait(rws, sfence->gfx, timeout)) in si_fence_finish()
368 if (sfence->fine.buf && si_fine_fence_signaled(rws, &sfence->fine)) in si_fence_finish()
379 struct si_multi_fence *sfence; in si_create_fence_fd() local
383 sfence = si_create_multi_fence(); in si_create_fence_fd()
384 if (!sfence) in si_create_fence_fd()
392 sfence->gfx = ws->fence_import_sync_file(ws, fd); in si_create_fence_fd()
399 sfence->gfx = ws->fence_import_syncobj(ws, fd); in si_create_fence_fd()
407 if (!sfence->gfx) { in si_create_fence_fd()
408 FREE(sfence); in si_create_fence_fd()
412 *pfence = (struct pipe_fence_handle *)sfence; in si_create_fence_fd()
419 struct si_multi_fence *sfence = (struct si_multi_fence *)fence; in si_fence_get_fd() local
425 util_queue_fence_wait(&sfence->ready); in si_fence_get_fd()
428 assert(!sfence->gfx_unflushed.ctx); in si_fence_get_fd()
429 if (sfence->gfx_unflushed.ctx) in si_fence_get_fd()
432 if (sfence->sdma) { in si_fence_get_fd()
433 sdma_fd = ws->fence_export_sync_file(ws, sfence->sdma); in si_fence_get_fd()
437 if (sfence->gfx) { in si_fence_get_fd()
438 gfx_fd = ws->fence_export_sync_file(ws, sfence->gfx); in si_fence_get_fd()
555 struct si_multi_fence *sfence = (struct si_multi_fence *)fence; in si_fence_server_signal() local
558 assert(sfence->sdma || sfence->gfx); in si_fence_server_signal()
560 if (sfence->sdma) in si_fence_server_signal()
561 si_add_syncobj_signal(sctx, sfence->sdma); in si_fence_server_signal()
562 if (sfence->gfx) in si_fence_server_signal()
563 si_add_syncobj_signal(sctx, sfence->gfx); in si_fence_server_signal()
585 struct si_multi_fence *sfence = (struct si_multi_fence *)fence; in si_fence_server_sync() local
587 util_queue_fence_wait(&sfence->ready); in si_fence_server_sync()
590 if (sfence->gfx_unflushed.ctx && sfence->gfx_unflushed.ctx == sctx) in si_fence_server_sync()
603 if (sfence->sdma) in si_fence_server_sync()
604 si_add_fence_dependency(sctx, sfence->sdma); in si_fence_server_sync()
605 if (sfence->gfx) in si_fence_server_sync()
606 si_add_fence_dependency(sctx, sfence->gfx); in si_fence_server_sync()