mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-22 00:08:09 +02:00
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>
53 lines
1.4 KiB
C
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 */
|