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
74 vr::EVRCompositorError
75 SubmitWithArrayIndex(vr::EVREye eEye,
76 const vr::Texture_t *pTexture,
77 uint32_t unTextureArrayIndex,
78 const vr::VRTextureBounds_t *pBounds = 0,
79 vr::EVRSubmitFlags nSubmitFlags = vr::Submit_Default) override;
80
81 void
82 ClearLastSubmittedFrame() override;
83
84 void
85 PostPresentHandoff() override;
86
87 bool
88 GetFrameTiming(vr::Compositor_FrameTiming *pTiming, uint32_t unFramesAgo = 0) override;
89
90 uint32_t
91 GetFrameTimings(VR_ARRAY_COUNT(nFrames) vr::Compositor_FrameTiming *pTiming, uint32_t nFrames) override;
92
93 float
94 GetFrameTimeRemaining() override;
95
96 void
97 GetCumulativeStats(vr::Compositor_CumulativeStats *pStats, uint32_t nStatsSizeInBytes) override;
98
99 void
100 FadeToColor(
101 float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground = false) override;
102
103 vr::HmdColor_t
104 GetCurrentFadeColor(bool bBackground = false) override;
105
106 void
107 FadeGrid(float fSeconds, bool bFadeGridIn) override;
108
109 float
110 GetCurrentGridAlpha() override;
111
112 vr::EVRCompositorError
113 SetSkyboxOverride(VR_ARRAY_COUNT(unTextureCount) const vr::Texture_t *pTextures,
114 uint32_t unTextureCount) override;
115
116 void
117 ClearSkyboxOverride() override;
118
119 void
120 CompositorBringToFront() override;
121
122 void
123 CompositorGoToBack() override;
124
125 void
126 CompositorQuit() override;
127
128 bool
129 IsFullscreen() override;
130
131 uint32_t
132 GetCurrentSceneFocusProcess() override;
133
134 uint32_t
135 GetLastFrameRenderer() override;
136
137 bool
138 CanRenderScene() override;
139
140 void
141 ShowMirrorWindow() override;
142
143 void
144 HideMirrorWindow() override;
145
146 bool
147 IsMirrorWindowVisible() override;
148
149 void
150 CompositorDumpImages() override;
151
152 bool
153 ShouldAppRenderWithLowResources() override;
154
155 void
156 ForceInterleavedReprojectionOn(bool bOverride) override;
157
158 void
159 ForceReconnectProcess() override;
160
161 void
162 SuspendRendering(bool bSuspend) override;
163
164 vr::EVRCompositorError
165 GetMirrorTextureD3D11(vr::EVREye eEye, void *pD3D11DeviceOrResource, void **ppD3D11ShaderResourceView) override;
166 void
167 ReleaseMirrorTextureD3D11(void *pD3D11ShaderResourceView) override;
168
169 /** Access to mirror textures from OpenGL. */
170 vr::EVRCompositorError
171 GetMirrorTextureGL(vr::EVREye eEye,
172 vr::glUInt_t *pglTextureId,
173 vr::glSharedTextureHandle_t *pglSharedTextureHandle) override;
174 bool
175 ReleaseSharedGLTexture(vr::glUInt_t glTextureId, vr::glSharedTextureHandle_t glSharedTextureHandle) override;
176 void
177 LockGLSharedTextureForAccess(vr::glSharedTextureHandle_t glSharedTextureHandle) override;
178 void
179 UnlockGLSharedTextureForAccess(vr::glSharedTextureHandle_t glSharedTextureHandle) override;
180
181 uint32_t
182 GetVulkanInstanceExtensionsRequired(VR_OUT_STRING() char *pchValue, uint32_t unBufferSize) override;
183
184 uint32_t
185 GetVulkanDeviceExtensionsRequired(VkPhysicalDevice_T *pPhysicalDevice,
186 VR_OUT_STRING() char *pchValue,
187 uint32_t unBufferSize) override;
188
189 void
190 SetExplicitTimingMode(vr::EVRCompositorTimingMode eTimingMode) override;
191
192 vr::EVRCompositorError
193 SubmitExplicitTimingData() override;
194
195 bool
196 IsMotionSmoothingEnabled() override;
197
198 bool
199 IsMotionSmoothingSupported() override;
200
201 bool
202 IsCurrentSceneFocusAppLoading() override;
203
204 vr::EVRCompositorError
205 SetStageOverride_Async(const char *pchRenderModelPath,
206 const vr::HmdMatrix34_t *pTransform = 0,
207 const vr::Compositor_StageRenderSettings *pRenderSettings = 0,
208 uint32_t nSizeOfRenderSettings = 0) override;
209
210 void
211 ClearStageOverride() override;
212
213 bool
214 GetCompositorBenchmarkResults(vr::Compositor_BenchmarkResults *pBenchmarkResults,
215 uint32_t nSizeOfBenchmarkResults) override;
216
217 vr::EVRCompositorError
218 GetLastPosePredictionIDs(uint32_t *pRenderPosePredictionID, uint32_t *pGamePosePredictionID) override;
219
220 vr::EVRCompositorError
221 GetPosesForFrame(uint32_t unPosePredictionID,
222 VR_ARRAY_COUNT(unPoseArrayCount) vr::TrackedDevicePose_t *pPoseArray,
223 uint32_t unPoseArrayCount) override;
224};
225
226} // namespace xrt::state_trackers::openvr
Implementation of the latest IVRClientCore interface version.
Definition XRTVRClientCore.hpp:152
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:447
Definitions missing from C++ header, present in C.
Definition blockqueue.hpp:15