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, not thread-safe */ 12struct vn_renderer_shmem_pool { 13 size_t min_alloc_size; 14 15 struct vn_renderer_shmem *shmem; 16 size_t size; 17 size_t used; 18}; 19 20static inline VkResult 21vn_renderer_submit_simple(struct vn_renderer *renderer, 22 const void *cs_data, 23 size_t cs_size) 24{ 25 const struct vn_renderer_submit submit = { 26 .batches = 27 &(const struct vn_renderer_submit_batch){ 28 .cs_data = cs_data, 29 .cs_size = cs_size, 30 }, 31 .batch_count = 1, 32 }; 33 return vn_renderer_submit(renderer, &submit); 34} 35 36VkResult 37vn_renderer_submit_simple_sync(struct vn_renderer *renderer, 38 const void *cs_data, 39 size_t cs_size); 40 41void 42vn_renderer_shmem_pool_init(struct vn_renderer *renderer, 43 struct vn_renderer_shmem_pool *pool, 44 size_t min_alloc_size); 45 46void 47vn_renderer_shmem_pool_fini(struct vn_renderer *renderer, 48 struct vn_renderer_shmem_pool *pool); 49 50struct vn_renderer_shmem * 51vn_renderer_shmem_pool_alloc(struct vn_renderer *renderer, 52 struct vn_renderer_shmem_pool *pool, 53 size_t size, 54 size_t *out_offset); 55 56#endif /* VN_RENDERER_UTIL_H */ 57