1 /*
2 * Copyright 2021 Google LLC
3 * SPDX-License-Identifier: MIT
4 */
5
6 #ifndef VN_RENDERER_UTIL_H
7 #define VN_RENDERER_UTIL_H
8
9 #include "vn_renderer.h"
10
11 /* for suballocations of short-lived shmems, thread-safe */
12 struct vn_renderer_shmem_pool {
13 mtx_t mutex;
14 size_t min_alloc_size;
15
16 struct vn_renderer_shmem *shmem;
17 size_t size;
18 size_t used;
19 };
20
21 static inline VkResult
vn_renderer_submit_simple(struct vn_renderer * renderer,const void * cs_data,size_t cs_size)22 vn_renderer_submit_simple(struct vn_renderer *renderer,
23 const void *cs_data,
24 size_t cs_size)
25 {
26 const struct vn_renderer_submit submit = {
27 .batches =
28 &(const struct vn_renderer_submit_batch){
29 .cs_data = cs_data,
30 .cs_size = cs_size,
31 .ring_idx = 0, /* CPU ring */
32 },
33 .batch_count = 1,
34 };
35 return vn_renderer_submit(renderer, &submit);
36 }
37
38 void
39 vn_renderer_shmem_pool_init(struct vn_renderer *renderer,
40 struct vn_renderer_shmem_pool *pool,
41 size_t min_alloc_size);
42
43 void
44 vn_renderer_shmem_pool_fini(struct vn_renderer *renderer,
45 struct vn_renderer_shmem_pool *pool);
46
47 struct vn_renderer_shmem *
48 vn_renderer_shmem_pool_alloc(struct vn_renderer *renderer,
49 struct vn_renderer_shmem_pool *pool,
50 size_t size,
51 size_t *out_offset);
52
53 #endif /* VN_RENDERER_UTIL_H */
54