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