xref: /aosp_15_r20/external/virglrenderer/server/render_context.h (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1 /*
2  * Copyright 2021 Google LLC
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #ifndef RENDER_CONTEXT_H
7 #define RENDER_CONTEXT_H
8 
9 #include "render_common.h"
10 
11 #include <stdatomic.h>
12 
13 struct render_context {
14    uint32_t ctx_id;
15    struct render_socket socket;
16    struct list_head head;
17 
18    char *name;
19    size_t name_len;
20 
21    int shmem_fd;
22    size_t shmem_size;
23    void *shmem_ptr;
24    atomic_uint *shmem_timelines;
25 
26    int timeline_count;
27 
28    /* optional */
29    int fence_eventfd;
30 };
31 
32 struct render_context_args {
33    bool valid;
34 
35    uint32_t init_flags;
36 
37    uint32_t ctx_id;
38    char ctx_name[32];
39 
40    /* render_context_main always takes ownership even on errors */
41    int ctx_fd;
42 };
43 
44 bool
45 render_context_main(const struct render_context_args *args);
46 
47 void
48 render_context_update_timeline(struct render_context *ctx,
49                                uint32_t ring_idx,
50                                uint32_t val);
51 
52 #endif /* RENDER_CONTEXT_H */
53