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.