summaryrefslogtreecommitdiff
path: root/src/virtio/vulkan/vn_renderer_util.h
blob: 3150c8807293e43a9fc85d947c5232a8bc4559e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
 * 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, not thread-safe */
struct vn_renderer_shmem_pool {
   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 */