mesa/src/virtio/vulkan/vn_renderer_util.h
Yiwei Zhang 90e64564b8 venus: make vn_renderer_shmem_pool thread-safe
This can be thread-safe only because we have dropped seeking command
stream offset, which requires comparing pool shmem to decide conditional
set stream.

This is to prepare for later sharing reply shmem pool across rings.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26179>
2023-12-08 04:06:37 +00:00

53 lines
1.4 KiB
C

/*
* Copyright 2021 Google LLC
* SPDX-License-Identifier: MIT
*/
#ifndef VN_RENDERER_UTIL_H
#define VN_RENDERER_UTIL_H
#include "vn_renderer.h"
/* for suballocations of short-lived shmems, thread-safe */
struct vn_renderer_shmem_pool {
mtx_t mutex;
size_t min_alloc_size;
struct vn_renderer_shmem *shmem;
size_t size;
size_t used;
};
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,
.ring_idx = 0, /* CPU ring */
},
.batch_count = 1,
};
return vn_renderer_submit(renderer, &submit);
}
void
vn_renderer_shmem_pool_init(struct vn_renderer *renderer,
struct vn_renderer_shmem_pool *pool,
size_t min_alloc_size);
void
vn_renderer_shmem_pool_fini(struct vn_renderer *renderer,
struct vn_renderer_shmem_pool *pool);
struct vn_renderer_shmem *
vn_renderer_shmem_pool_alloc(struct vn_renderer *renderer,
struct vn_renderer_shmem_pool *pool,
size_t size,
size_t *out_offset);
#endif /* VN_RENDERER_UTIL_H */