venus: add vn_renderer_submit_simple_sync

It submits a command stream to the renderer and waits.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12568>
This commit is contained in:
Chia-I Wu 2021-08-29 22:52:00 -07:00 committed by Marge Bot
parent 2996c707cf
commit 68eb682a23

View file

@ -482,4 +482,43 @@ vn_renderer_sync_write(struct vn_renderer *renderer,
return renderer->sync_ops.write(renderer, sync, val);
}
static inline VkResult
vn_renderer_submit_simple_sync(struct vn_renderer *renderer,
const void *cs_data,
size_t cs_size)
{
struct vn_renderer_sync *sync;
VkResult result =
vn_renderer_sync_create(renderer, 0, VN_RENDERER_SYNC_BINARY, &sync);
if (result != VK_SUCCESS)
return result;
const struct vn_renderer_submit submit = {
.batches =
&(const struct vn_renderer_submit_batch){
.cs_data = cs_data,
.cs_size = cs_size,
.sync_queue_cpu = true,
.syncs = &sync,
.sync_values = &(const uint64_t){ 1 },
.sync_count = 1,
},
.batch_count = 1,
};
const struct vn_renderer_wait wait = {
.timeout = UINT64_MAX,
.syncs = &sync,
.sync_values = &(const uint64_t){ 1 },
.sync_count = 1,
};
result = vn_renderer_submit(renderer, &submit);
if (result == VK_SUCCESS)
result = vn_renderer_wait(renderer, &wait);
vn_renderer_sync_destroy(renderer, sync);
return result;
}
#endif /* VN_RENDERER_H */