diff options
author | Yiwei Zhang <zzyiwei@chromium.org> | 2023-01-17 14:53:29 -0800 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-02-01 01:18:07 +0000 |
commit | ac2331cc240c05f84d1b424f35e6fad9569f8e37 (patch) | |
tree | e89dfccf4e137621f7dccde4aeff9def0ad5af6c | |
parent | c2f17cc7b508c820e4ff72c266a05b03eacb60ad (diff) |
vkr: add vkr_renderer_callbacks to simplify server interface
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/973>
-rw-r--r-- | server/render_state.c | 17 | ||||
-rw-r--r-- | src/venus/vkr_renderer.c | 12 | ||||
-rw-r--r-- | src/venus/vkr_renderer.h | 13 |
3 files changed, 22 insertions, 20 deletions
diff --git a/server/render_state.c b/server/render_state.c index 5e8e79e..c101d84 100644 --- a/server/render_state.c +++ b/server/render_state.c @@ -94,7 +94,7 @@ render_state_lookup_context(uint32_t ctx_id) } static void -render_state_debug_callback(const char *fmt, va_list ap) +render_state_cb_debug_logger(const char *fmt, va_list ap) { char buf[1024]; vsnprintf(buf, sizeof(buf), fmt, ap); @@ -102,10 +102,7 @@ render_state_debug_callback(const char *fmt, va_list ap) } static void -render_state_cb_write_context_fence(UNUSED void *cookie, - uint32_t ctx_id, - uint32_t ring_idx, - uint64_t fence_id) +render_state_cb_retire_fence(uint32_t ctx_id, uint32_t ring_idx, uint64_t fence_id) { struct render_context *ctx = render_state_lookup_context(ctx_id); assert(ctx); @@ -114,9 +111,9 @@ render_state_cb_write_context_fence(UNUSED void *cookie, render_context_update_timeline(ctx, ring_idx, seqno); } -static const struct virgl_renderer_callbacks render_state_cbs = { - .version = VIRGL_RENDERER_CALLBACKS_VERSION, - .write_context_fence = render_state_cb_write_context_fence, +static const struct vkr_renderer_callbacks render_state_cbs = { + .debug_logger = render_state_cb_debug_logger, + .retire_fence = render_state_cb_retire_fence, }; static void @@ -156,7 +153,7 @@ render_state_init(uint32_t init_flags) /* always use sync thread and async fence cb for low latency */ static const uint32_t vkr_flags = VKR_RENDERER_THREAD_SYNC | VKR_RENDERER_ASYNC_FENCE_CB; - if (!vkr_renderer_init(vkr_flags, render_state_debug_callback, &render_state_cbs)) + if (!vkr_renderer_init(vkr_flags, &render_state_cbs)) return false; list_inithead(&state.contexts); @@ -245,7 +242,7 @@ render_state_import_resource(uint32_t ctx_id, } void -render_state_destroy_resource(UNUSED uint32_t ctx_id, uint32_t res_id) +render_state_destroy_resource(uint32_t ctx_id, uint32_t res_id) { SCOPE_LOCK_RENDERER(); vkr_renderer_destroy_resource(ctx_id, res_id); diff --git a/src/venus/vkr_renderer.c b/src/venus/vkr_renderer.c index c38f75f..b9304fe 100644 --- a/src/venus/vkr_renderer.c +++ b/src/venus/vkr_renderer.c @@ -12,7 +12,7 @@ #include "vkr_context.h" -const struct virgl_renderer_callbacks *vkr_renderer_cbs; +const struct vkr_renderer_callbacks *vkr_renderer_cbs; size_t vkr_get_capset(void *capset) @@ -50,9 +50,7 @@ vkr_get_capset(void *capset) } bool -vkr_renderer_init(uint32_t flags, - virgl_debug_callback_type debug_cb, - const struct virgl_renderer_callbacks *cbs) +vkr_renderer_init(uint32_t flags, const struct vkr_renderer_callbacks *cbs) { TRACE_INIT(); TRACE_FUNC(); @@ -62,7 +60,7 @@ vkr_renderer_init(uint32_t flags, if ((flags & required_flags) != required_flags) return false; - virgl_log_set_logger(debug_cb); + virgl_log_set_logger(cbs->debug_logger); vkr_renderer_cbs = cbs; @@ -95,7 +93,7 @@ vkr_renderer_retire_fence(struct virgl_context *ctx, uint32_t ring_idx, uint64_t { TRACE_FUNC(); - vkr_renderer_cbs->write_context_fence(NULL, ctx->ctx_id, ring_idx, fence_id); + vkr_renderer_cbs->retire_fence(ctx->ctx_id, ring_idx, fence_id); } bool @@ -167,7 +165,7 @@ vkr_renderer_submit_fence(uint32_t ctx_id, if (!ctx) return false; - assert(vkr_renderer_cbs->write_context_fence); + assert(vkr_renderer_cbs->retire_fence); return !ctx->submit_fence(ctx, flags, ring_idx, fence_id); } diff --git a/src/venus/vkr_renderer.h b/src/venus/vkr_renderer.h index 0137bc2..713c15a 100644 --- a/src/venus/vkr_renderer.h +++ b/src/venus/vkr_renderer.h @@ -17,13 +17,20 @@ #define VKR_RENDERER_THREAD_SYNC (1u << 0) #define VKR_RENDERER_ASYNC_FENCE_CB (1u << 1) +typedef void (*vkr_renderer_retire_fence_callback_type)(uint32_t ctx_id, + uint32_t ring_idx, + uint64_t fence_id); + +struct vkr_renderer_callbacks { + virgl_debug_callback_type debug_logger; + vkr_renderer_retire_fence_callback_type retire_fence; +}; + size_t vkr_get_capset(void *capset); bool -vkr_renderer_init(uint32_t flags, - virgl_debug_callback_type debug_cb, - const struct virgl_renderer_callbacks *cbs); +vkr_renderer_init(uint32_t flags, const struct vkr_renderer_callbacks *cbs); void vkr_renderer_fini(void); |