56 void initialize(
const GHOST_XrContextCreateInfo *create_info);
58 void startSession(
const GHOST_XrSessionBeginInfo *begin_info)
override;
67 static void setErrorHandler(GHOST_XrErrorHandlerFn handler_fn,
void *customdata);
71 GHOST_XrGraphicsContextUnbindFn unbind_fn)
override;
87 static GHOST_XrErrorHandlerFn s_error_handler;
88 static void *s_error_handler_customdata;
90 std::unique_ptr<OpenXRInstanceData> m_oxr;
95 std::unique_ptr<class GHOST_XrSession> m_session;
98 GHOST_TXrGraphicsBinding m_gpu_binding_type = GHOST_kXrGraphicsUnknown;
101 std::vector<const char *> m_enabled_extensions;
103 std::vector<const char *> m_enabled_layers;
108 bool m_debug =
false;
109 bool m_debug_time =
false;
111 void createOpenXRInstance(
const std::vector<GHOST_TXrGraphicsBinding> &graphics_binding_types);
112 void storeInstanceProperties();
113 void initDebugMessenger();
115 void printSDKVersion();
116 void printInstanceInfo();
117 void printAvailableAPILayersAndExtensionsInfo();
118 void printExtensionsAndAPILayersToEnable();
120 void initApiLayers();
121 void initExtensions();
122 void initExtensionsEx(std::vector<XrExtensionProperties> &extensions,
const char *layer_name);
123 void getAPILayersToEnable(std::vector<const char *> &r_ext_names);
124 void getExtensionsToEnable(
const std::vector<GHOST_TXrGraphicsBinding> &graphics_binding_types,
125 std::vector<const char *> &r_ext_names);
126 std::vector<GHOST_TXrGraphicsBinding> determineGraphicsBindingTypesToEnable(
127 const GHOST_XrContextCreateInfo *create_info);
128 GHOST_TXrGraphicsBinding determineGraphicsBindingTypeToUse(
129 const std::vector<GHOST_TXrGraphicsBinding> &enabled_types,
130 const GHOST_XrContextCreateInfo *create_info);
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
bool isExtensionEnabled(const char *ext) const
GHOST_XrContext(const GHOST_XrContextCreateInfo *create_info)
void initialize(const GHOST_XrContextCreateInfo *create_info)
static void setErrorHandler(GHOST_XrErrorHandlerFn handler_fn, void *customdata)
GHOST_XrSession * getSession() override
GHOST_XrDrawViewFn draw_view_fn
GHOST_XrSessionExitFn session_exit_fn
GHOST_XrSessionCreateFn session_create_fn
void * session_exit_customdata
GHOST_XrGraphicsContextUnbindFn gpu_ctx_unbind_fn
GHOST_XrGraphicsContextBindFn gpu_ctx_bind_fn