68 void initialize(
const GHOST_XrContextCreateInfo *create_info);
70 void startSession(
const GHOST_XrSessionBeginInfo *begin_info)
override;
75 static void setErrorHandler(GHOST_XrErrorHandlerFn handler_fn,
void *customdata);
79 GHOST_XrGraphicsContextUnbindFn unbind_fn)
override;
93 static GHOST_XrErrorHandlerFn s_error_handler;
94 static void *s_error_handler_customdata;
96 std::unique_ptr<OpenXRInstanceData> m_oxr;
101 std::unique_ptr<class GHOST_XrSession> m_session;
104 GHOST_TXrGraphicsBinding m_gpu_binding_type = GHOST_kXrGraphicsUnknown;
107 std::vector<const char *> m_enabled_extensions;
109 std::vector<const char *> m_enabled_layers;
114 bool m_debug =
false;
115 bool m_debug_time =
false;
117 void createOpenXRInstance(
const std::vector<GHOST_TXrGraphicsBinding> &graphics_binding_types);
118 void storeInstanceProperties();
119 void initDebugMessenger();
121 void printInstanceInfo();
122 void printAvailableAPILayersAndExtensionsInfo();
123 void printExtensionsAndAPILayersToEnable();
125 void initApiLayers();
126 void initExtensions();
127 void initExtensionsEx(std::vector<XrExtensionProperties> &extensions,
const char *layer_name);
128 void getAPILayersToEnable(std::vector<const char *> &r_ext_names);
129 void getExtensionsToEnable(
const std::vector<GHOST_TXrGraphicsBinding> &graphics_binding_types,
130 std::vector<const char *> &r_ext_names);
131 std::vector<GHOST_TXrGraphicsBinding> determineGraphicsBindingTypesToEnable(
132 const GHOST_XrContextCreateInfo *create_info);
133 GHOST_TXrGraphicsBinding determineGraphicsBindingTypeToUse(
134 const std::vector<GHOST_TXrGraphicsBinding> &enabled_types);
Main GHOST container to manage OpenXR through.
XrInstance getInstance() const
GHOST_TXrOpenXRRuntimeID getOpenXRRuntimeID() const
void setGraphicsContextBindFuncs(GHOST_XrGraphicsContextBindFn bind_fn, GHOST_XrGraphicsContextUnbindFn unbind_fn) override
GHOST_TXrGraphicsBinding getGraphicsBindingType() const
void drawSessionViews(void *draw_customdata) override
void handleSessionStateChange(const XrEventDataSessionStateChanged &lifecycle)
const GHOST_XrCustomFuncs & getCustomFuncs() const
void dispatchErrorMessage(const class GHOST_XrException *exception) const override
bool isDebugTimeMode() const
void setDrawViewFunc(GHOST_XrDrawViewFn draw_view_fn) override
bool needsUpsideDownDrawing() const override
bool isSessionRunning() const override
void startSession(const GHOST_XrSessionBeginInfo *begin_info) override
void endSession() override
GHOST_XrContext(const GHOST_XrContextCreateInfo *create_info)
void initialize(const GHOST_XrContextCreateInfo *create_info)
static void setErrorHandler(GHOST_XrErrorHandlerFn handler_fn, void *customdata)
GHOST_XrDrawViewFn draw_view_fn
GHOST_XrSessionExitFn session_exit_fn
void * session_exit_customdata
GHOST_XrGraphicsContextUnbindFn gpu_ctx_unbind_fn
GHOST_XrGraphicsContextBindFn gpu_ctx_bind_fn