xref: /aosp_15_r20/external/mesa3d/src/util/mesa_cache_db.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2022 Collabora, Ltd.
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Based on Fossilize DB:
5*61046927SAndroid Build Coastguard Worker  * Copyright © 2020 Valve Corporation
6*61046927SAndroid Build Coastguard Worker  *
7*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
8*61046927SAndroid Build Coastguard Worker  */
9*61046927SAndroid Build Coastguard Worker 
10*61046927SAndroid Build Coastguard Worker #ifndef MESA_CACHE_DB_H
11*61046927SAndroid Build Coastguard Worker #define MESA_CACHE_DB_H
12*61046927SAndroid Build Coastguard Worker 
13*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
14*61046927SAndroid Build Coastguard Worker #include <stdint.h>
15*61046927SAndroid Build Coastguard Worker #include <stdio.h>
16*61046927SAndroid Build Coastguard Worker 
17*61046927SAndroid Build Coastguard Worker #include "detect_os.h"
18*61046927SAndroid Build Coastguard Worker #include "simple_mtx.h"
19*61046927SAndroid Build Coastguard Worker 
20*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
21*61046927SAndroid Build Coastguard Worker extern "C" {
22*61046927SAndroid Build Coastguard Worker #endif
23*61046927SAndroid Build Coastguard Worker 
24*61046927SAndroid Build Coastguard Worker struct mesa_cache_db_file {
25*61046927SAndroid Build Coastguard Worker    FILE *file;
26*61046927SAndroid Build Coastguard Worker    char *path;
27*61046927SAndroid Build Coastguard Worker    off_t offset;
28*61046927SAndroid Build Coastguard Worker    uint64_t uuid;
29*61046927SAndroid Build Coastguard Worker };
30*61046927SAndroid Build Coastguard Worker 
31*61046927SAndroid Build Coastguard Worker struct mesa_cache_db {
32*61046927SAndroid Build Coastguard Worker    struct hash_table_u64 *index_db;
33*61046927SAndroid Build Coastguard Worker    struct mesa_cache_db_file cache;
34*61046927SAndroid Build Coastguard Worker    struct mesa_cache_db_file index;
35*61046927SAndroid Build Coastguard Worker    uint64_t max_cache_size;
36*61046927SAndroid Build Coastguard Worker    simple_mtx_t flock_mtx;
37*61046927SAndroid Build Coastguard Worker    void *mem_ctx;
38*61046927SAndroid Build Coastguard Worker    uint64_t uuid;
39*61046927SAndroid Build Coastguard Worker    bool alive;
40*61046927SAndroid Build Coastguard Worker };
41*61046927SAndroid Build Coastguard Worker 
42*61046927SAndroid Build Coastguard Worker #if DETECT_OS_WINDOWS == 0
43*61046927SAndroid Build Coastguard Worker bool
44*61046927SAndroid Build Coastguard Worker mesa_cache_db_open(struct mesa_cache_db *db, const char *cache_path);
45*61046927SAndroid Build Coastguard Worker 
46*61046927SAndroid Build Coastguard Worker void
47*61046927SAndroid Build Coastguard Worker mesa_cache_db_close(struct mesa_cache_db *db);
48*61046927SAndroid Build Coastguard Worker 
49*61046927SAndroid Build Coastguard Worker void
50*61046927SAndroid Build Coastguard Worker mesa_cache_db_set_size_limit(struct mesa_cache_db *db,
51*61046927SAndroid Build Coastguard Worker                              uint64_t max_cache_size);
52*61046927SAndroid Build Coastguard Worker 
53*61046927SAndroid Build Coastguard Worker unsigned int
54*61046927SAndroid Build Coastguard Worker mesa_cache_db_file_entry_size(void);
55*61046927SAndroid Build Coastguard Worker 
56*61046927SAndroid Build Coastguard Worker void *
57*61046927SAndroid Build Coastguard Worker mesa_cache_db_read_entry(struct mesa_cache_db *db,
58*61046927SAndroid Build Coastguard Worker                          const uint8_t *cache_key_160bit,
59*61046927SAndroid Build Coastguard Worker                          size_t *size);
60*61046927SAndroid Build Coastguard Worker 
61*61046927SAndroid Build Coastguard Worker bool
62*61046927SAndroid Build Coastguard Worker mesa_cache_db_entry_write(struct mesa_cache_db *db,
63*61046927SAndroid Build Coastguard Worker                           const uint8_t *cache_key_160bit,
64*61046927SAndroid Build Coastguard Worker                           const void *blob, size_t blob_size);
65*61046927SAndroid Build Coastguard Worker 
66*61046927SAndroid Build Coastguard Worker bool
67*61046927SAndroid Build Coastguard Worker mesa_cache_db_entry_remove(struct mesa_cache_db *db,
68*61046927SAndroid Build Coastguard Worker                            const uint8_t *cache_key_160bit);
69*61046927SAndroid Build Coastguard Worker 
70*61046927SAndroid Build Coastguard Worker bool
71*61046927SAndroid Build Coastguard Worker mesa_db_wipe_path(const char *cache_path);
72*61046927SAndroid Build Coastguard Worker 
73*61046927SAndroid Build Coastguard Worker bool
74*61046927SAndroid Build Coastguard Worker mesa_cache_db_has_space(struct mesa_cache_db *db, size_t blob_size);
75*61046927SAndroid Build Coastguard Worker 
76*61046927SAndroid Build Coastguard Worker double
77*61046927SAndroid Build Coastguard Worker mesa_cache_db_eviction_score(struct mesa_cache_db *db);
78*61046927SAndroid Build Coastguard Worker #else
79*61046927SAndroid Build Coastguard Worker static inline bool
mesa_cache_db_open(struct mesa_cache_db * db,const char * cache_path)80*61046927SAndroid Build Coastguard Worker mesa_cache_db_open(struct mesa_cache_db *db, const char *cache_path)
81*61046927SAndroid Build Coastguard Worker {
82*61046927SAndroid Build Coastguard Worker    return false;
83*61046927SAndroid Build Coastguard Worker }
84*61046927SAndroid Build Coastguard Worker 
85*61046927SAndroid Build Coastguard Worker static inline void
mesa_cache_db_close(struct mesa_cache_db * db)86*61046927SAndroid Build Coastguard Worker mesa_cache_db_close(struct mesa_cache_db *db)
87*61046927SAndroid Build Coastguard Worker {
88*61046927SAndroid Build Coastguard Worker }
89*61046927SAndroid Build Coastguard Worker 
90*61046927SAndroid Build Coastguard Worker static inline void
mesa_cache_db_set_size_limit(struct mesa_cache_db * db,uint64_t max_cache_size)91*61046927SAndroid Build Coastguard Worker mesa_cache_db_set_size_limit(struct mesa_cache_db *db,
92*61046927SAndroid Build Coastguard Worker                              uint64_t max_cache_size)
93*61046927SAndroid Build Coastguard Worker {
94*61046927SAndroid Build Coastguard Worker }
95*61046927SAndroid Build Coastguard Worker 
96*61046927SAndroid Build Coastguard Worker static inline unsigned int
mesa_cache_db_file_entry_size(void)97*61046927SAndroid Build Coastguard Worker mesa_cache_db_file_entry_size(void)
98*61046927SAndroid Build Coastguard Worker {
99*61046927SAndroid Build Coastguard Worker    return 0;
100*61046927SAndroid Build Coastguard Worker }
101*61046927SAndroid Build Coastguard Worker 
102*61046927SAndroid Build Coastguard Worker static inline void *
mesa_cache_db_read_entry(struct mesa_cache_db * db,const uint8_t * cache_key_160bit,size_t * size)103*61046927SAndroid Build Coastguard Worker mesa_cache_db_read_entry(struct mesa_cache_db *db,
104*61046927SAndroid Build Coastguard Worker                          const uint8_t *cache_key_160bit,
105*61046927SAndroid Build Coastguard Worker                          size_t *size)
106*61046927SAndroid Build Coastguard Worker {
107*61046927SAndroid Build Coastguard Worker    return NULL;
108*61046927SAndroid Build Coastguard Worker }
109*61046927SAndroid Build Coastguard Worker 
110*61046927SAndroid Build Coastguard Worker static inline bool
mesa_cache_db_entry_write(struct mesa_cache_db * db,const uint8_t * cache_key_160bit,const void * blob,size_t blob_size)111*61046927SAndroid Build Coastguard Worker mesa_cache_db_entry_write(struct mesa_cache_db *db,
112*61046927SAndroid Build Coastguard Worker                           const uint8_t *cache_key_160bit,
113*61046927SAndroid Build Coastguard Worker                           const void *blob, size_t blob_size)
114*61046927SAndroid Build Coastguard Worker {
115*61046927SAndroid Build Coastguard Worker    return false;
116*61046927SAndroid Build Coastguard Worker }
117*61046927SAndroid Build Coastguard Worker 
118*61046927SAndroid Build Coastguard Worker static inline bool
mesa_cache_db_entry_remove(struct mesa_cache_db * db,const uint8_t * cache_key_160bit)119*61046927SAndroid Build Coastguard Worker mesa_cache_db_entry_remove(struct mesa_cache_db *db,
120*61046927SAndroid Build Coastguard Worker                            const uint8_t *cache_key_160bit)
121*61046927SAndroid Build Coastguard Worker {
122*61046927SAndroid Build Coastguard Worker    return false;
123*61046927SAndroid Build Coastguard Worker }
124*61046927SAndroid Build Coastguard Worker 
125*61046927SAndroid Build Coastguard Worker static inline bool
mesa_db_wipe_path(const char * cache_path)126*61046927SAndroid Build Coastguard Worker mesa_db_wipe_path(const char *cache_path)
127*61046927SAndroid Build Coastguard Worker {
128*61046927SAndroid Build Coastguard Worker    return false;
129*61046927SAndroid Build Coastguard Worker }
130*61046927SAndroid Build Coastguard Worker 
131*61046927SAndroid Build Coastguard Worker static inline bool
mesa_cache_db_has_space(struct mesa_cache_db * db,size_t blob_size)132*61046927SAndroid Build Coastguard Worker mesa_cache_db_has_space(struct mesa_cache_db *db, size_t blob_size)
133*61046927SAndroid Build Coastguard Worker {
134*61046927SAndroid Build Coastguard Worker    return false;
135*61046927SAndroid Build Coastguard Worker }
136*61046927SAndroid Build Coastguard Worker 
137*61046927SAndroid Build Coastguard Worker static inline double
mesa_cache_db_eviction_score(struct mesa_cache_db * db)138*61046927SAndroid Build Coastguard Worker mesa_cache_db_eviction_score(struct mesa_cache_db *db)
139*61046927SAndroid Build Coastguard Worker {
140*61046927SAndroid Build Coastguard Worker    return 0;
141*61046927SAndroid Build Coastguard Worker }
142*61046927SAndroid Build Coastguard Worker #endif /* DETECT_OS_WINDOWS */
143*61046927SAndroid Build Coastguard Worker 
144*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
145*61046927SAndroid Build Coastguard Worker }
146*61046927SAndroid Build Coastguard Worker #endif
147*61046927SAndroid Build Coastguard Worker 
148*61046927SAndroid Build Coastguard Worker #endif /* MESA_CACHE_DB_H */
149