xref: /third_party/mesa3d/src/virtio/vulkan/vn_renderer_internal.h (revision bf215546)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/mesa3d/src/virtio/vulkan/
1/*
2 * Copyright 2021 Google LLC
3 * SPDX-License-Identifier: MIT
4 */
5
6#ifndef VN_RENDERER_INTERNAL_H
7#define VN_RENDERER_INTERNAL_H
8
9#include "vn_renderer.h"
10
11typedef void (*vn_renderer_shmem_cache_destroy_func)(
12   struct vn_renderer *renderer, struct vn_renderer_shmem *shmem);
13
14struct vn_renderer_shmem_cache {
15   bool initialized;
16
17   struct vn_renderer *renderer;
18   vn_renderer_shmem_cache_destroy_func destroy_func;
19
20   simple_mtx_t mutex;
21
22   /* cache shmems up to 2^26 in size (see choose_bucket) */
23   struct vn_renderer_shmem_bucket {
24      struct list_head shmems;
25   } buckets[27];
26
27   /* which buckets have shmems */
28   uint32_t bucket_mask;
29
30   struct {
31      uint32_t cache_skip_count;
32      uint32_t cache_hit_count;
33      uint32_t cache_miss_count;
34   } debug;
35};
36
37void
38vn_renderer_shmem_cache_init(
39   struct vn_renderer_shmem_cache *cache,
40   struct vn_renderer *renderer,
41   vn_renderer_shmem_cache_destroy_func destroy_func);
42
43void
44vn_renderer_shmem_cache_fini(struct vn_renderer_shmem_cache *cache);
45
46bool
47vn_renderer_shmem_cache_add(struct vn_renderer_shmem_cache *cache,
48                            struct vn_renderer_shmem *shmem);
49
50struct vn_renderer_shmem *
51vn_renderer_shmem_cache_get(struct vn_renderer_shmem_cache *cache,
52                            size_t size);
53
54void
55vn_renderer_shmem_cache_debug_dump(struct vn_renderer_shmem_cache *cache);
56
57#endif /* VN_RENDERER_INTERNAL_H */
58

Indexes created Thu Nov 07 10:32:03 CST 2024