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