venus: add vn_renderer_util.[ch]

Move helpers built on top of vn_renderer.h to the new files.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14179>
This commit is contained in:
Chia-I Wu 2021-12-09 14:12:01 -08:00 committed by Marge Bot
parent ee283c49b7
commit 511fb6b8e9
5 changed files with 79 additions and 55 deletions

View file

@ -47,6 +47,7 @@ libvn_files = files(
'vn_queue.c',
'vn_render_pass.c',
'vn_ring.c',
'vn_renderer_util.c',
'vn_renderer_virtgpu.c',
'vn_renderer_vtest.c',
)

View file

@ -17,6 +17,7 @@
#include "vn_cs.h"
#include "vn_renderer.h"
#include "vn_renderer_util.h"
#include "vn_ring.h"
/* require and request at least Vulkan 1.1 at both instance and device levels

View file

@ -264,22 +264,6 @@ vn_renderer_submit(struct vn_renderer *renderer,
return renderer->ops.submit(renderer, submit);
}
static inline VkResult
vn_renderer_submit_simple(struct vn_renderer *renderer,
const void *cs_data,
size_t cs_size)
{
const struct vn_renderer_submit submit = {
.batches =
&(const struct vn_renderer_submit_batch){
.cs_data = cs_data,
.cs_size = cs_size,
},
.batch_count = 1,
};
return vn_renderer_submit(renderer, &submit);
}
static inline VkResult
vn_renderer_wait(struct vn_renderer *renderer,
const struct vn_renderer_wait *wait)
@ -466,43 +450,4 @@ 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 */

View file

@ -0,0 +1,45 @@
/*
* Copyright 2021 Google LLC
* SPDX-License-Identifier: MIT
*/
#include "vn_renderer_util.h"
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;
}

View file

@ -0,0 +1,32 @@
/*
* Copyright 2021 Google LLC
* SPDX-License-Identifier: MIT
*/
#ifndef VN_RENDERER_UTIL_H
#define VN_RENDERER_UTIL_H
#include "vn_renderer.h"
static inline VkResult
vn_renderer_submit_simple(struct vn_renderer *renderer,
const void *cs_data,
size_t cs_size)
{
const struct vn_renderer_submit submit = {
.batches =
&(const struct vn_renderer_submit_batch){
.cs_data = cs_data,
.cs_size = cs_size,
},
.batch_count = 1,
};
return vn_renderer_submit(renderer, &submit);
}
VkResult
vn_renderer_submit_simple_sync(struct vn_renderer *renderer,
const void *cs_data,
size_t cs_size);
#endif /* VN_RENDERER_UTIL_H */