Monado OpenXR Runtime
Loading...
Searching...
No Matches
XRTVRCompositor.hpp
Go to the documentation of this file.
1// Copyright 2026, Beyley Cardellio
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief Implementation of the latest IVRCompositor interface version.
6 *
7 * @author Beyley Cardellio <ep1cm1n10n123@gmail.com>
8 * @ingroup openvr_interfaces
9 */
10
11#pragma once
12
13#include "openvr_interfaces_unified.h"
14
15#include "XRTVRClientCore.hpp"
16
17#include <array>
18
19
20namespace xrt::state_trackers::openvr {
21
22class XRTVRCompositor_029 : public vr::IVRCompositor_029
23{
24private:
26
27public:
29
30 virtual ~XRTVRCompositor_029() = default;
31
32 void
33 SetTrackingSpace(vr::ETrackingUniverseOrigin eOrigin) override;
34
35 vr::ETrackingUniverseOrigin
36 GetTrackingSpace() override;
37
38 vr::EVRCompositorError
39 WaitGetPoses(VR_ARRAY_COUNT(unRenderPoseArrayCount) vr::TrackedDevicePose_t *pRenderPoseArray,
40 uint32_t unRenderPoseArrayCount,
41 VR_ARRAY_COUNT(unGamePoseArrayCount) vr::TrackedDevicePose_t *pGamePoseArray,
42 uint32_t unGamePoseArrayCount) override;
43
44 vr::EVRCompositorError
45 GetLastPoses(VR_ARRAY_COUNT(unRenderPoseArrayCount) vr::TrackedDevicePose_t *pRenderPoseArray,
46 uint32_t unRenderPoseArrayCount,
47 VR_ARRAY_COUNT(unGamePoseArrayCount) vr::TrackedDevicePose_t *pGamePoseArray,
48 uint32_t unGamePoseArrayCount) override;
49
50 vr::EVRCompositorError
51 GetLastPoseForTrackedDeviceIndex(vr::TrackedDeviceIndex_t unDeviceIndex,
52 vr::TrackedDevicePose_t *pOutputPose,
53 vr::TrackedDevicePose_t *pOutputGamePose) override;
54
55 vr::EVRCompositorError
56 GetSubmitTexture(vr::Texture_t *pOutTexture,
57 bool *pNeedsFlush,
58 vr::EVRCompositorTextureUsage eUsage,
59 const vr::Texture_t *pTexture,
60 const vr::VRTextureBounds_t *pBounds = 0,
61 vr::EVRSubmitFlags nSubmitFlags = vr::Submit_Default) override;
62
63 vr::EVRCompositorError
64 Submit(vr::EVREye eEye,
65 const vr::Texture_t *pTexture,
66 const vr::VRTextureBounds_t *pBounds = 0,
67 vr::EVRSubmitFlags nSubmitFlags = vr::Submit_Default) override;
68 vr::EVRCompositorError
69 SubmitWithArrayIndex(vr::EVREye eEye,
70 const vr::Texture_t *pTexture,
71 uint32_t unTextureArrayIndex,
72 const vr::VRTextureBounds_t *pBounds = 0,
73 vr::EVRSubmitFlags nSubmitFlags = vr::Submit_Default) override;
74
75 void
76 ClearLastSubmittedFrame() override;
77
78 void
79 PostPresentHandoff() override;
80
81 bool
82 GetFrameTiming(vr::Compositor_FrameTiming *pTiming, uint32_t unFramesAgo = 0) override;
83
84 uint32_t
85 GetFrameTimings(VR_ARRAY_COUNT(nFrames) vr::Compositor_FrameTiming *pTiming, uint32_t nFrames) override;
86
87 float
88 GetFrameTimeRemaining() override;
89
90 void
91 GetCumulativeStats(vr::Compositor_CumulativeStats *pStats, uint32_t nStatsSizeInBytes) override;
92
93 void
94 FadeToColor(
95 float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground = false) override;
96
97 vr::HmdColor_t
98 GetCurrentFadeColor(bool bBackground = false) override;
99
100 void
101 FadeGrid(float fSeconds, bool bFadeGridIn) override;
102
103 float
104 GetCurrentGridAlpha() override;
105
106 vr::EVRCompositorError
107 SetSkyboxOverride(VR_ARRAY_COUNT(unTextureCount) const vr::Texture_t *pTextures,
108 uint32_t unTextureCount) override;
109
110 void
111 ClearSkyboxOverride() override;
112
113 void
114 CompositorBringToFront() override;
115
116 void
117 CompositorGoToBack() override;
118
119 void
120 CompositorQuit() override;
121
122 bool
123 IsFullscreen() override;
124
125 uint32_t
126 GetCurrentSceneFocusProcess() override;
127
128 uint32_t
129 GetLastFrameRenderer() override;
130
131 bool
132 CanRenderScene() override;
133
134 void
135 ShowMirrorWindow() override;
136
137 void
138 HideMirrorWindow() override;
139
140 bool
141 IsMirrorWindowVisible() override;
142
143 void
144 CompositorDumpImages() override;
145
146 bool
147 ShouldAppRenderWithLowResources() override;
148
149 void
150 ForceInterleavedReprojectionOn(bool bOverride) override;
151
152 void
153 ForceReconnectProcess() override;
154
155 void
156 SuspendRendering(bool bSuspend) override;
157
158 vr::EVRCompositorError
159 GetMirrorTextureD3D11(vr::EVREye eEye, void *pD3D11DeviceOrResource, void **ppD3D11ShaderResourceView) override;
160 void
161 ReleaseMirrorTextureD3D11(void *pD3D11ShaderResourceView) override;
162
163 /** Access to mirror textures from OpenGL. */
164 vr::EVRCompositorError
165 GetMirrorTextureGL(vr::EVREye eEye,
166 vr::glUInt_t *pglTextureId,
167 vr::glSharedTextureHandle_t *pglSharedTextureHandle) override;
168 bool
169 ReleaseSharedGLTexture(vr::glUInt_t glTextureId, vr::glSharedTextureHandle_t glSharedTextureHandle) override;
170 void
171 LockGLSharedTextureForAccess(vr::glSharedTextureHandle_t glSharedTextureHandle) override;
172 void
173 UnlockGLSharedTextureForAccess(vr::glSharedTextureHandle_t glSharedTextureHandle) override;
174
175 uint32_t
176 GetVulkanInstanceExtensionsRequired(VR_OUT_STRING() char *pchValue, uint32_t unBufferSize) override;
177
178 uint32_t
179 GetVulkanDeviceExtensionsRequired(VkPhysicalDevice_T *pPhysicalDevice,
180 VR_OUT_STRING() char *pchValue,
181 uint32_t unBufferSize) override;
182
183 void
184 SetExplicitTimingMode(vr::EVRCompositorTimingMode eTimingMode) override;
185
186 vr::EVRCompositorError
187 SubmitExplicitTimingData() override;
188
189 bool
190 IsMotionSmoothingEnabled() override;
191
192 bool
193 IsMotionSmoothingSupported() override;
194
195 bool
196 IsCurrentSceneFocusAppLoading() override;
197
198 vr::EVRCompositorError
199 SetStageOverride_Async(const char *pchRenderModelPath,
200 const vr::HmdMatrix34_t *pTransform = 0,
201 const vr::Compositor_StageRenderSettings *pRenderSettings = 0,
202 uint32_t nSizeOfRenderSettings = 0) override;
203
204 void
205 ClearStageOverride() override;
206
207 bool
208 GetCompositorBenchmarkResults(vr::Compositor_BenchmarkResults *pBenchmarkResults,
209 uint32_t nSizeOfBenchmarkResults) override;
210
211 vr::EVRCompositorError
212 GetLastPosePredictionIDs(uint32_t *pRenderPosePredictionID, uint32_t *pGamePosePredictionID) override;
213
214 vr::EVRCompositorError
215 GetPosesForFrame(uint32_t unPosePredictionID,
216 VR_ARRAY_COUNT(unPoseArrayCount) vr::TrackedDevicePose_t *pPoseArray,
217 uint32_t unPoseArrayCount) override;
218};
219
220} // namespace xrt::state_trackers::openvr
Implementation of the latest IVRClientCore interface version.
Definition XRTVRClientCore.hpp:35
Definition XRTVRCompositor.hpp:23
vr::EVRCompositorError GetMirrorTextureGL(vr::EVREye eEye, vr::glUInt_t *pglTextureId, vr::glSharedTextureHandle_t *pglSharedTextureHandle) override
Access to mirror textures from OpenGL.
Definition XRTVRCompositor.cpp:444