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