|
Monado OpenXR Runtime
|
System compositor capable of supporting multiple clients: internal structs. More...
#include "xrt/xrt_compiler.h"#include "xrt/xrt_defines.h"#include "xrt/xrt_limits.h"#include "xrt/xrt_compositor.h"#include "os/os_time.h"#include "os/os_threading.h"#include "util/u_pacing.h"
Go to the source code of this file.
Data Structures | |
| struct | multi_layer_entry |
| Data for a single composition layer. More... | |
| struct | multi_layer_slot |
| Render state for a single client, including all layers. More... | |
| struct | multi_compositor |
| A single compositor for feeding the layers from one session/app into the multi-client-capable system compositor. More... | |
| struct | multi_system_compositor |
| The multi-client module (aka multi compositor) is system compositor that multiplexes access to a single xrt_compositor_native, merging layers from one or more client apps/sessions. More... | |
Macros | |
| #define | MULTI_MAX_CLIENTS 64 |
| Number of max active clients. More... | |
| #define | MULTI_MAX_LAYERS XRT_MAX_LAYERS |
| Number of max active layers per multi_compositor. More... | |
Enumerations | |
| enum | multi_system_state { MULTI_SYSTEM_STATE_INVALID , MULTI_SYSTEM_STATE_INIT_WARM_START , MULTI_SYSTEM_STATE_STOPPED , MULTI_SYSTEM_STATE_RUNNING , MULTI_SYSTEM_STATE_STOPPING } |
| State of the multi-client system compositor. More... | |
Functions | |
| static struct multi_compositor * | multi_compositor (struct xrt_compositor *xc) |
| Small helper go from xrt_compositor to multi_compositor. More... | |
| xrt_result_t | multi_compositor_create (struct multi_system_compositor *msc, const struct xrt_session_info *xsi, struct xrt_session_event_sink *xses, struct xrt_compositor_native **out_xcn) |
| Create a multi client wrapper compositor. More... | |
System compositor capable of supporting multiple clients: internal structs.
| #define MULTI_MAX_CLIENTS 64 |
Number of max active clients.
xrt_limits.h, or make dynamic to remove limit.| #define MULTI_MAX_LAYERS XRT_MAX_LAYERS |
Number of max active layers per multi_compositor.
xrt_limits.h and share.| enum multi_system_state |
State of the multi-client system compositor.
Use to track the calling of native compositor methods xrt_comp_begin_session and xrt_comp_end_session.
It is driven by the number of active app sessions.
| Enumerator | |
|---|---|
| MULTI_SYSTEM_STATE_INVALID | Invalid state, never used. |
| MULTI_SYSTEM_STATE_INIT_WARM_START | One of the initial states, the multi-client system compositor will make sure that its xrt_compositor_native submits one frame. The session hasn't been started yet. |
| MULTI_SYSTEM_STATE_STOPPED | One of the initial state and post stopping state. The multi-client system compositor has called xrt_comp_end_session on its xrt_compositor_native. |
| MULTI_SYSTEM_STATE_RUNNING | The main session is running. The multi-client system compositor has called xrt_comp_begin_session on its xrt_compositor_native. |
| MULTI_SYSTEM_STATE_STOPPING | There are no active sessions and the multi-client system compositor is instructing the native compositor to draw one or more clear frames. The multi-client system compositor has not yet called xrt_comp_begin_session on its xrt_compositor_native. |
|
inlinestatic |
Small helper go from xrt_compositor to multi_compositor.
Referenced by system_compositor_set_state(), and system_compositor_set_z_order().
| xrt_result_t multi_compositor_create | ( | struct multi_system_compositor * | msc, |
| const struct xrt_session_info * | xsi, | ||
| struct xrt_session_event_sink * | xses, | ||
| struct xrt_compositor_native ** | out_xcn | ||
| ) |
Create a multi client wrapper compositor.