1 //======= Copyright (c) Valve Corporation, All rights reserved. ===============
2 //
3 // Purpose: Header for flatted SteamAPI. Use this for binding to other languages.
4 // This file is auto-generated, do not edit it.
5 //
6 //=============================================================================
7 
8 #ifndef __OPENVR_API_FLAT_H__
9 #define __OPENVR_API_FLAT_H__
10 #if defined(_WIN32) || defined(__clang__)
11 #pragma once
12 #endif
13 
14 #ifdef __cplusplus
15 #define EXTERN_C extern "C"
16 #else
17 #define EXTERN_C
18 #endif
19 
20 #if defined(_WIN32)
21 #define OPENVR_FNTABLE_CALLTYPE __stdcall
22 #else
23 #define OPENVR_FNTABLE_CALLTYPE
24 #endif
25 
26 // OPENVR API export macro
27 #if defined(_WIN32) && !defined(_X360)
28 #if defined(OPENVR_API_EXPORTS)
29 #define S_API EXTERN_C __declspec(dllexport)
30 #elif defined(OPENVR_API_NODLL)
31 #define S_API EXTERN_C
32 #else
33 #define S_API extern "C" __declspec(dllimport)
34 #endif  // OPENVR_API_EXPORTS
35 #elif defined(__GNUC__)
36 #if defined(OPENVR_API_EXPORTS)
37 #define S_API EXTERN_C __attribute__((visibility("default")))
38 #else
39 #define S_API EXTERN_C
40 #endif  // OPENVR_API_EXPORTS
41 #else   // !WIN32
42 #if defined(OPENVR_API_EXPORTS)
43 #define S_API EXTERN_C
44 #else
45 #define S_API EXTERN_C
46 #endif  // OPENVR_API_EXPORTS
47 #endif
48 
49 #include <stdint.h>
50 
51 #if defined(__WIN32)
52 typedef char bool;
53 #else
54 #include <stdbool.h>
55 #endif
56 
57 typedef uint64_t PropertyContainerHandle_t;
58 typedef uint32_t PropertyTypeTag_t;
59 typedef uint64_t VRActionHandle_t;
60 typedef uint64_t VRActionSetHandle_t;
61 typedef uint64_t VRInputOriginHandle_t;
62 
63 // OpenVR Constants
64 
65 static const unsigned int k_nDriverNone = 4294967295;
66 static const unsigned int k_unMaxDriverDebugResponseSize = 32768;
67 static const unsigned int k_unTrackedDeviceIndex_Hmd = 0;
68 static const unsigned int k_unMaxTrackedDeviceCount = 16;
69 static const unsigned int k_unTrackedDeviceIndexOther = 4294967294;
70 static const unsigned int k_unTrackedDeviceIndexInvalid = 4294967295;
71 static const unsigned long k_ulInvalidPropertyContainer = 0;
72 static const unsigned int k_unInvalidPropertyTag = 0;
73 static const unsigned int k_unFloatPropertyTag = 1;
74 static const unsigned int k_unInt32PropertyTag = 2;
75 static const unsigned int k_unUint64PropertyTag = 3;
76 static const unsigned int k_unBoolPropertyTag = 4;
77 static const unsigned int k_unStringPropertyTag = 5;
78 static const unsigned int k_unHmdMatrix34PropertyTag = 20;
79 static const unsigned int k_unHmdMatrix44PropertyTag = 21;
80 static const unsigned int k_unHmdVector3PropertyTag = 22;
81 static const unsigned int k_unHmdVector4PropertyTag = 23;
82 static const unsigned int k_unHiddenAreaPropertyTag = 30;
83 static const unsigned int k_unOpenVRInternalReserved_Start = 1000;
84 static const unsigned int k_unOpenVRInternalReserved_End = 10000;
85 static const unsigned int k_unMaxPropertyStringSize = 32768;
86 static const unsigned int k_unControllerStateAxisCount = 5;
87 static const unsigned long k_ulOverlayHandleInvalid = 0;
88 static const unsigned int k_unScreenshotHandleInvalid = 0;
89 static const char *IVRSystem_Version = "IVRSystem_017";
90 static const char *IVRExtendedDisplay_Version = "IVRExtendedDisplay_001";
91 static const char *IVRTrackedCamera_Version = "IVRTrackedCamera_003";
92 static const unsigned int k_unMaxApplicationKeyLength = 128;
93 static const char *k_pch_MimeType_HomeApp = "vr/home";
94 static const char *k_pch_MimeType_GameTheater = "vr/game_theater";
95 static const char *IVRApplications_Version = "IVRApplications_006";
96 static const char *IVRChaperone_Version = "IVRChaperone_003";
97 static const char *IVRChaperoneSetup_Version = "IVRChaperoneSetup_005";
98 static const char *IVRCompositor_Version = "IVRCompositor_021";
99 static const unsigned int k_unVROverlayMaxKeyLength = 128;
100 static const unsigned int k_unVROverlayMaxNameLength = 128;
101 static const unsigned int k_unMaxOverlayCount = 64;
102 static const unsigned int k_unMaxOverlayIntersectionMaskPrimitivesCount = 32;
103 static const char *IVROverlay_Version = "IVROverlay_016";
104 static const char *k_pch_Controller_Component_GDC2015 = "gdc2015";
105 static const char *k_pch_Controller_Component_Base = "base";
106 static const char *k_pch_Controller_Component_Tip = "tip";
107 static const char *k_pch_Controller_Component_HandGrip = "handgrip";
108 static const char *k_pch_Controller_Component_Status = "status";
109 static const char *IVRRenderModels_Version = "IVRRenderModels_005";
110 static const unsigned int k_unNotificationTextMaxSize = 256;
111 static const char *IVRNotifications_Version = "IVRNotifications_002";
112 static const unsigned int k_unMaxSettingsKeyLength = 128;
113 static const char *IVRSettings_Version = "IVRSettings_002";
114 static const char *k_pch_SteamVR_Section = "steamvr";
115 static const char *k_pch_SteamVR_RequireHmd_String = "requireHmd";
116 static const char *k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver";
117 static const char *k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd";
118 static const char *k_pch_SteamVR_DisplayDebug_Bool = "displayDebug";
119 static const char *k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe";
120 static const char *k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX";
121 static const char *k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY";
122 static const char *k_pch_SteamVR_SendSystemButtonToAllApps_Bool = "sendSystemButtonToAllApps";
123 static const char *k_pch_SteamVR_LogLevel_Int32 = "loglevel";
124 static const char *k_pch_SteamVR_IPD_Float = "ipd";
125 static const char *k_pch_SteamVR_Background_String = "background";
126 static const char *k_pch_SteamVR_BackgroundUseDomeProjection_Bool = "backgroundUseDomeProjection";
127 static const char *k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight";
128 static const char *k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius";
129 static const char *k_pch_SteamVR_GridColor_String = "gridColor";
130 static const char *k_pch_SteamVR_PlayAreaColor_String = "playAreaColor";
131 static const char *k_pch_SteamVR_ShowStage_Bool = "showStage";
132 static const char *k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers";
133 static const char *k_pch_SteamVR_DirectMode_Bool = "directMode";
134 static const char *k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid";
135 static const char *k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid";
136 static const char *k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers";
137 static const char *k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees";
138 static const char *k_pch_SteamVR_BaseStationPowerManagement_Bool = "basestationPowerManagement";
139 static const char *k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses";
140 static const char *k_pch_SteamVR_SupersampleScale_Float = "supersampleScale";
141 static const char *k_pch_SteamVR_AllowAsyncReprojection_Bool = "allowAsyncReprojection";
142 static const char *k_pch_SteamVR_AllowReprojection_Bool = "allowInterleavedReprojection";
143 static const char *k_pch_SteamVR_ForceReprojection_Bool = "forceReprojection";
144 static const char *k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking";
145 static const char *k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView";
146 static const char *k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView";
147 static const char *k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry";
148 static const char *k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch";
149 static const char *k_pch_SteamVR_StartCompositorFromAppLaunch_Bool = "startCompositorFromAppLaunch";
150 static const char *k_pch_SteamVR_StartDashboardFromAppLaunch_Bool = "startDashboardFromAppLaunch";
151 static const char *k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool = "startOverlayAppsFromDashboard";
152 static const char *k_pch_SteamVR_EnableHomeApp = "enableHomeApp";
153 static const char *k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec";
154 static const char *k_pch_SteamVR_RetailDemo_Bool = "retailDemo";
155 static const char *k_pch_SteamVR_IpdOffset_Float = "ipdOffset";
156 static const char *k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering";
157 static const char *k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync";
158 static const char *k_pch_Lighthouse_Section = "driver_lighthouse";
159 static const char *k_pch_Lighthouse_DisableIMU_Bool = "disableimu";
160 static const char *k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation";
161 static const char *k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug";
162 static const char *k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation";
163 static const char *k_pch_Lighthouse_DBHistory_Bool = "dbhistory";
164 static const char *k_pch_Null_Section = "driver_null";
165 static const char *k_pch_Null_SerialNumber_String = "serialNumber";
166 static const char *k_pch_Null_ModelNumber_String = "modelNumber";
167 static const char *k_pch_Null_WindowX_Int32 = "windowX";
168 static const char *k_pch_Null_WindowY_Int32 = "windowY";
169 static const char *k_pch_Null_WindowWidth_Int32 = "windowWidth";
170 static const char *k_pch_Null_WindowHeight_Int32 = "windowHeight";
171 static const char *k_pch_Null_RenderWidth_Int32 = "renderWidth";
172 static const char *k_pch_Null_RenderHeight_Int32 = "renderHeight";
173 static const char *k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons";
174 static const char *k_pch_Null_DisplayFrequency_Float = "displayFrequency";
175 static const char *k_pch_UserInterface_Section = "userinterface";
176 static const char *k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop";
177 static const char *k_pch_UserInterface_MinimizeToTray_Bool = "MinimizeToTray";
178 static const char *k_pch_UserInterface_Screenshots_Bool = "screenshots";
179 static const char *k_pch_UserInterface_ScreenshotType_Int = "screenshotType";
180 static const char *k_pch_Notifications_Section = "notifications";
181 static const char *k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb";
182 static const char *k_pch_Keyboard_Section = "keyboard";
183 static const char *k_pch_Keyboard_TutorialCompletions = "TutorialCompletions";
184 static const char *k_pch_Keyboard_ScaleX = "ScaleX";
185 static const char *k_pch_Keyboard_ScaleY = "ScaleY";
186 static const char *k_pch_Keyboard_OffsetLeftX = "OffsetLeftX";
187 static const char *k_pch_Keyboard_OffsetRightX = "OffsetRightX";
188 static const char *k_pch_Keyboard_OffsetY = "OffsetY";
189 static const char *k_pch_Keyboard_Smoothing = "Smoothing";
190 static const char *k_pch_Perf_Section = "perfcheck";
191 static const char *k_pch_Perf_HeuristicActive_Bool = "heuristicActive";
192 static const char *k_pch_Perf_NotifyInHMD_Bool = "warnInHMD";
193 static const char *k_pch_Perf_NotifyOnlyOnce_Bool = "warnOnlyOnce";
194 static const char *k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore";
195 static const char *k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit";
196 static const char *k_pch_Perf_TestData_Float = "perfTestData";
197 static const char *k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling";
198 static const char *k_pch_CollisionBounds_Section = "collisionBounds";
199 static const char *k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle";
200 static const char *k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn";
201 static const char *k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn";
202 static const char *k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn";
203 static const char *k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance";
204 static const char *k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR";
205 static const char *k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG";
206 static const char *k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB";
207 static const char *k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA";
208 static const char *k_pch_Camera_Section = "camera";
209 static const char *k_pch_Camera_EnableCamera_Bool = "enableCamera";
210 static const char *k_pch_Camera_EnableCameraInDashboard_Bool = "enableCameraInDashboard";
211 static const char *k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds";
212 static const char *k_pch_Camera_EnableCameraForRoomView_Bool = "enableCameraForRoomView";
213 static const char *k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR";
214 static const char *k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG";
215 static const char *k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB";
216 static const char *k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA";
217 static const char *k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength";
218 static const char *k_pch_audio_Section = "audio";
219 static const char *k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice";
220 static const char *k_pch_audio_OnRecordDevice_String = "onRecordDevice";
221 static const char *k_pch_audio_OnPlaybackMirrorDevice_String = "onPlaybackMirrorDevice";
222 static const char *k_pch_audio_OffPlaybackDevice_String = "offPlaybackDevice";
223 static const char *k_pch_audio_OffRecordDevice_String = "offRecordDevice";
224 static const char *k_pch_audio_VIVEHDMIGain = "viveHDMIGain";
225 static const char *k_pch_Power_Section = "power";
226 static const char *k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit";
227 static const char *k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout";
228 static const char *k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout";
229 static const char *k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout";
230 static const char *k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress";
231 static const char *k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby";
232 static const char *k_pch_Dashboard_Section = "dashboard";
233 static const char *k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard";
234 static const char *k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode";
235 static const char *k_pch_modelskin_Section = "modelskins";
236 static const char *k_pch_Driver_Enable_Bool = "enable";
237 static const char *IVRScreenshots_Version = "IVRScreenshots_001";
238 static const char *IVRResources_Version = "IVRResources_001";
239 static const char *IVRDriverManager_Version = "IVRDriverManager_001";
240 
241 // OpenVR Enums
242 
243 typedef enum EVREye
244 {
245 	EVREye_Eye_Left = 0,
246 	EVREye_Eye_Right = 1,
247 } EVREye;
248 
249 typedef enum ETextureType
250 {
251 	ETextureType_TextureType_DirectX = 0,
252 	ETextureType_TextureType_OpenGL = 1,
253 	ETextureType_TextureType_Vulkan = 2,
254 	ETextureType_TextureType_IOSurface = 3,
255 	ETextureType_TextureType_DirectX12 = 4,
256 } ETextureType;
257 
258 typedef enum EColorSpace
259 {
260 	EColorSpace_ColorSpace_Auto = 0,
261 	EColorSpace_ColorSpace_Gamma = 1,
262 	EColorSpace_ColorSpace_Linear = 2,
263 } EColorSpace;
264 
265 typedef enum ETrackingResult
266 {
267 	ETrackingResult_TrackingResult_Uninitialized = 1,
268 	ETrackingResult_TrackingResult_Calibrating_InProgress = 100,
269 	ETrackingResult_TrackingResult_Calibrating_OutOfRange = 101,
270 	ETrackingResult_TrackingResult_Running_OK = 200,
271 	ETrackingResult_TrackingResult_Running_OutOfRange = 201,
272 } ETrackingResult;
273 
274 typedef enum ETrackedDeviceClass
275 {
276 	ETrackedDeviceClass_TrackedDeviceClass_Invalid = 0,
277 	ETrackedDeviceClass_TrackedDeviceClass_HMD = 1,
278 	ETrackedDeviceClass_TrackedDeviceClass_Controller = 2,
279 	ETrackedDeviceClass_TrackedDeviceClass_GenericTracker = 3,
280 	ETrackedDeviceClass_TrackedDeviceClass_TrackingReference = 4,
281 	ETrackedDeviceClass_TrackedDeviceClass_DisplayRedirect = 5,
282 } ETrackedDeviceClass;
283 
284 typedef enum ETrackedControllerRole
285 {
286 	ETrackedControllerRole_TrackedControllerRole_Invalid = 0,
287 	ETrackedControllerRole_TrackedControllerRole_LeftHand = 1,
288 	ETrackedControllerRole_TrackedControllerRole_RightHand = 2,
289 } ETrackedControllerRole;
290 
291 typedef enum ETrackingUniverseOrigin
292 {
293 	ETrackingUniverseOrigin_TrackingUniverseSeated = 0,
294 	ETrackingUniverseOrigin_TrackingUniverseStanding = 1,
295 	ETrackingUniverseOrigin_TrackingUniverseRawAndUncalibrated = 2,
296 } ETrackingUniverseOrigin;
297 
298 typedef enum ETrackedDeviceProperty
299 {
300 	ETrackedDeviceProperty_Prop_Invalid = 0,
301 	ETrackedDeviceProperty_Prop_TrackingSystemName_String = 1000,
302 	ETrackedDeviceProperty_Prop_ModelNumber_String = 1001,
303 	ETrackedDeviceProperty_Prop_SerialNumber_String = 1002,
304 	ETrackedDeviceProperty_Prop_RenderModelName_String = 1003,
305 	ETrackedDeviceProperty_Prop_WillDriftInYaw_Bool = 1004,
306 	ETrackedDeviceProperty_Prop_ManufacturerName_String = 1005,
307 	ETrackedDeviceProperty_Prop_TrackingFirmwareVersion_String = 1006,
308 	ETrackedDeviceProperty_Prop_HardwareRevision_String = 1007,
309 	ETrackedDeviceProperty_Prop_AllWirelessDongleDescriptions_String = 1008,
310 	ETrackedDeviceProperty_Prop_ConnectedWirelessDongle_String = 1009,
311 	ETrackedDeviceProperty_Prop_DeviceIsWireless_Bool = 1010,
312 	ETrackedDeviceProperty_Prop_DeviceIsCharging_Bool = 1011,
313 	ETrackedDeviceProperty_Prop_DeviceBatteryPercentage_Float = 1012,
314 	ETrackedDeviceProperty_Prop_StatusDisplayTransform_Matrix34 = 1013,
315 	ETrackedDeviceProperty_Prop_Firmware_UpdateAvailable_Bool = 1014,
316 	ETrackedDeviceProperty_Prop_Firmware_ManualUpdate_Bool = 1015,
317 	ETrackedDeviceProperty_Prop_Firmware_ManualUpdateURL_String = 1016,
318 	ETrackedDeviceProperty_Prop_HardwareRevision_Uint64 = 1017,
319 	ETrackedDeviceProperty_Prop_FirmwareVersion_Uint64 = 1018,
320 	ETrackedDeviceProperty_Prop_FPGAVersion_Uint64 = 1019,
321 	ETrackedDeviceProperty_Prop_VRCVersion_Uint64 = 1020,
322 	ETrackedDeviceProperty_Prop_RadioVersion_Uint64 = 1021,
323 	ETrackedDeviceProperty_Prop_DongleVersion_Uint64 = 1022,
324 	ETrackedDeviceProperty_Prop_BlockServerShutdown_Bool = 1023,
325 	ETrackedDeviceProperty_Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024,
326 	ETrackedDeviceProperty_Prop_ContainsProximitySensor_Bool = 1025,
327 	ETrackedDeviceProperty_Prop_DeviceProvidesBatteryStatus_Bool = 1026,
328 	ETrackedDeviceProperty_Prop_DeviceCanPowerOff_Bool = 1027,
329 	ETrackedDeviceProperty_Prop_Firmware_ProgrammingTarget_String = 1028,
330 	ETrackedDeviceProperty_Prop_DeviceClass_Int32 = 1029,
331 	ETrackedDeviceProperty_Prop_HasCamera_Bool = 1030,
332 	ETrackedDeviceProperty_Prop_DriverVersion_String = 1031,
333 	ETrackedDeviceProperty_Prop_Firmware_ForceUpdateRequired_Bool = 1032,
334 	ETrackedDeviceProperty_Prop_ViveSystemButtonFixRequired_Bool = 1033,
335 	ETrackedDeviceProperty_Prop_ParentDriver_Uint64 = 1034,
336 	ETrackedDeviceProperty_Prop_ResourceRoot_String = 1035,
337 	ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool = 2000,
338 	ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float = 2001,
339 	ETrackedDeviceProperty_Prop_DisplayFrequency_Float = 2002,
340 	ETrackedDeviceProperty_Prop_UserIpdMeters_Float = 2003,
341 	ETrackedDeviceProperty_Prop_CurrentUniverseId_Uint64 = 2004,
342 	ETrackedDeviceProperty_Prop_PreviousUniverseId_Uint64 = 2005,
343 	ETrackedDeviceProperty_Prop_DisplayFirmwareVersion_Uint64 = 2006,
344 	ETrackedDeviceProperty_Prop_IsOnDesktop_Bool = 2007,
345 	ETrackedDeviceProperty_Prop_DisplayMCType_Int32 = 2008,
346 	ETrackedDeviceProperty_Prop_DisplayMCOffset_Float = 2009,
347 	ETrackedDeviceProperty_Prop_DisplayMCScale_Float = 2010,
348 	ETrackedDeviceProperty_Prop_EdidVendorID_Int32 = 2011,
349 	ETrackedDeviceProperty_Prop_DisplayMCImageLeft_String = 2012,
350 	ETrackedDeviceProperty_Prop_DisplayMCImageRight_String = 2013,
351 	ETrackedDeviceProperty_Prop_DisplayGCBlackClamp_Float = 2014,
352 	ETrackedDeviceProperty_Prop_EdidProductID_Int32 = 2015,
353 	ETrackedDeviceProperty_Prop_CameraToHeadTransform_Matrix34 = 2016,
354 	ETrackedDeviceProperty_Prop_DisplayGCType_Int32 = 2017,
355 	ETrackedDeviceProperty_Prop_DisplayGCOffset_Float = 2018,
356 	ETrackedDeviceProperty_Prop_DisplayGCScale_Float = 2019,
357 	ETrackedDeviceProperty_Prop_DisplayGCPrescale_Float = 2020,
358 	ETrackedDeviceProperty_Prop_DisplayGCImage_String = 2021,
359 	ETrackedDeviceProperty_Prop_LensCenterLeftU_Float = 2022,
360 	ETrackedDeviceProperty_Prop_LensCenterLeftV_Float = 2023,
361 	ETrackedDeviceProperty_Prop_LensCenterRightU_Float = 2024,
362 	ETrackedDeviceProperty_Prop_LensCenterRightV_Float = 2025,
363 	ETrackedDeviceProperty_Prop_UserHeadToEyeDepthMeters_Float = 2026,
364 	ETrackedDeviceProperty_Prop_CameraFirmwareVersion_Uint64 = 2027,
365 	ETrackedDeviceProperty_Prop_CameraFirmwareDescription_String = 2028,
366 	ETrackedDeviceProperty_Prop_DisplayFPGAVersion_Uint64 = 2029,
367 	ETrackedDeviceProperty_Prop_DisplayBootloaderVersion_Uint64 = 2030,
368 	ETrackedDeviceProperty_Prop_DisplayHardwareVersion_Uint64 = 2031,
369 	ETrackedDeviceProperty_Prop_AudioFirmwareVersion_Uint64 = 2032,
370 	ETrackedDeviceProperty_Prop_CameraCompatibilityMode_Int32 = 2033,
371 	ETrackedDeviceProperty_Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034,
372 	ETrackedDeviceProperty_Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035,
373 	ETrackedDeviceProperty_Prop_DisplaySuppressed_Bool = 2036,
374 	ETrackedDeviceProperty_Prop_DisplayAllowNightMode_Bool = 2037,
375 	ETrackedDeviceProperty_Prop_DisplayMCImageWidth_Int32 = 2038,
376 	ETrackedDeviceProperty_Prop_DisplayMCImageHeight_Int32 = 2039,
377 	ETrackedDeviceProperty_Prop_DisplayMCImageNumChannels_Int32 = 2040,
378 	ETrackedDeviceProperty_Prop_DisplayMCImageData_Binary = 2041,
379 	ETrackedDeviceProperty_Prop_SecondsFromPhotonsToVblank_Float = 2042,
380 	ETrackedDeviceProperty_Prop_DriverDirectModeSendsVsyncEvents_Bool = 2043,
381 	ETrackedDeviceProperty_Prop_DisplayDebugMode_Bool = 2044,
382 	ETrackedDeviceProperty_Prop_GraphicsAdapterLuid_Uint64 = 2045,
383 	ETrackedDeviceProperty_Prop_DriverProvidedChaperonePath_String = 2048,
384 	ETrackedDeviceProperty_Prop_AttachedDeviceId_String = 3000,
385 	ETrackedDeviceProperty_Prop_SupportedButtons_Uint64 = 3001,
386 	ETrackedDeviceProperty_Prop_Axis0Type_Int32 = 3002,
387 	ETrackedDeviceProperty_Prop_Axis1Type_Int32 = 3003,
388 	ETrackedDeviceProperty_Prop_Axis2Type_Int32 = 3004,
389 	ETrackedDeviceProperty_Prop_Axis3Type_Int32 = 3005,
390 	ETrackedDeviceProperty_Prop_Axis4Type_Int32 = 3006,
391 	ETrackedDeviceProperty_Prop_ControllerRoleHint_Int32 = 3007,
392 	ETrackedDeviceProperty_Prop_FieldOfViewLeftDegrees_Float = 4000,
393 	ETrackedDeviceProperty_Prop_FieldOfViewRightDegrees_Float = 4001,
394 	ETrackedDeviceProperty_Prop_FieldOfViewTopDegrees_Float = 4002,
395 	ETrackedDeviceProperty_Prop_FieldOfViewBottomDegrees_Float = 4003,
396 	ETrackedDeviceProperty_Prop_TrackingRangeMinimumMeters_Float = 4004,
397 	ETrackedDeviceProperty_Prop_TrackingRangeMaximumMeters_Float = 4005,
398 	ETrackedDeviceProperty_Prop_ModeLabel_String = 4006,
399 	ETrackedDeviceProperty_Prop_IconPathName_String = 5000,
400 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceOff_String = 5001,
401 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearching_String = 5002,
402 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearchingAlert_String = 5003,
403 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceReady_String = 5004,
404 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceReadyAlert_String = 5005,
405 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceNotReady_String = 5006,
406 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceStandby_String = 5007,
407 	ETrackedDeviceProperty_Prop_NamedIconPathDeviceAlertLow_String = 5008,
408 	ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_Start = 5100,
409 	ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_End = 5150,
410 	ETrackedDeviceProperty_Prop_UserConfigPath_String = 6000,
411 	ETrackedDeviceProperty_Prop_InstallPath_String = 6001,
412 	ETrackedDeviceProperty_Prop_HasDisplayComponent_Bool = 6002,
413 	ETrackedDeviceProperty_Prop_HasControllerComponent_Bool = 6003,
414 	ETrackedDeviceProperty_Prop_HasCameraComponent_Bool = 6004,
415 	ETrackedDeviceProperty_Prop_HasDriverDirectModeComponent_Bool = 6005,
416 	ETrackedDeviceProperty_Prop_HasVirtualDisplayComponent_Bool = 6006,
417 	ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start = 10000,
418 	ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End = 10999,
419 } ETrackedDeviceProperty;
420 
421 typedef enum ETrackedPropertyError
422 {
423 	ETrackedPropertyError_TrackedProp_Success = 0,
424 	ETrackedPropertyError_TrackedProp_WrongDataType = 1,
425 	ETrackedPropertyError_TrackedProp_WrongDeviceClass = 2,
426 	ETrackedPropertyError_TrackedProp_BufferTooSmall = 3,
427 	ETrackedPropertyError_TrackedProp_UnknownProperty = 4,
428 	ETrackedPropertyError_TrackedProp_InvalidDevice = 5,
429 	ETrackedPropertyError_TrackedProp_CouldNotContactServer = 6,
430 	ETrackedPropertyError_TrackedProp_ValueNotProvidedByDevice = 7,
431 	ETrackedPropertyError_TrackedProp_StringExceedsMaximumLength = 8,
432 	ETrackedPropertyError_TrackedProp_NotYetAvailable = 9,
433 	ETrackedPropertyError_TrackedProp_PermissionDenied = 10,
434 	ETrackedPropertyError_TrackedProp_InvalidOperation = 11,
435 } ETrackedPropertyError;
436 
437 typedef enum EVRSubmitFlags
438 {
439 	EVRSubmitFlags_Submit_Default = 0,
440 	EVRSubmitFlags_Submit_LensDistortionAlreadyApplied = 1,
441 	EVRSubmitFlags_Submit_GlRenderBuffer = 2,
442 	EVRSubmitFlags_Submit_Reserved = 4,
443 	EVRSubmitFlags_Submit_TextureWithPose = 8,
444 } EVRSubmitFlags;
445 
446 typedef enum EVRState
447 {
448 	EVRState_VRState_Undefined = -1,
449 	EVRState_VRState_Off = 0,
450 	EVRState_VRState_Searching = 1,
451 	EVRState_VRState_Searching_Alert = 2,
452 	EVRState_VRState_Ready = 3,
453 	EVRState_VRState_Ready_Alert = 4,
454 	EVRState_VRState_NotReady = 5,
455 	EVRState_VRState_Standby = 6,
456 	EVRState_VRState_Ready_Alert_Low = 7,
457 } EVRState;
458 
459 typedef enum EVREventType
460 {
461 	EVREventType_VREvent_None = 0,
462 	EVREventType_VREvent_TrackedDeviceActivated = 100,
463 	EVREventType_VREvent_TrackedDeviceDeactivated = 101,
464 	EVREventType_VREvent_TrackedDeviceUpdated = 102,
465 	EVREventType_VREvent_TrackedDeviceUserInteractionStarted = 103,
466 	EVREventType_VREvent_TrackedDeviceUserInteractionEnded = 104,
467 	EVREventType_VREvent_IpdChanged = 105,
468 	EVREventType_VREvent_EnterStandbyMode = 106,
469 	EVREventType_VREvent_LeaveStandbyMode = 107,
470 	EVREventType_VREvent_TrackedDeviceRoleChanged = 108,
471 	EVREventType_VREvent_WatchdogWakeUpRequested = 109,
472 	EVREventType_VREvent_LensDistortionChanged = 110,
473 	EVREventType_VREvent_PropertyChanged = 111,
474 	EVREventType_VREvent_WirelessDisconnect = 112,
475 	EVREventType_VREvent_WirelessReconnect = 113,
476 	EVREventType_VREvent_ButtonPress = 200,
477 	EVREventType_VREvent_ButtonUnpress = 201,
478 	EVREventType_VREvent_ButtonTouch = 202,
479 	EVREventType_VREvent_ButtonUntouch = 203,
480 	EVREventType_VREvent_MouseMove = 300,
481 	EVREventType_VREvent_MouseButtonDown = 301,
482 	EVREventType_VREvent_MouseButtonUp = 302,
483 	EVREventType_VREvent_FocusEnter = 303,
484 	EVREventType_VREvent_FocusLeave = 304,
485 	EVREventType_VREvent_Scroll = 305,
486 	EVREventType_VREvent_TouchPadMove = 306,
487 	EVREventType_VREvent_OverlayFocusChanged = 307,
488 	EVREventType_VREvent_InputFocusCaptured = 400,
489 	EVREventType_VREvent_InputFocusReleased = 401,
490 	EVREventType_VREvent_SceneFocusLost = 402,
491 	EVREventType_VREvent_SceneFocusGained = 403,
492 	EVREventType_VREvent_SceneApplicationChanged = 404,
493 	EVREventType_VREvent_SceneFocusChanged = 405,
494 	EVREventType_VREvent_InputFocusChanged = 406,
495 	EVREventType_VREvent_SceneApplicationSecondaryRenderingStarted = 407,
496 	EVREventType_VREvent_HideRenderModels = 410,
497 	EVREventType_VREvent_ShowRenderModels = 411,
498 	EVREventType_VREvent_OverlayShown = 500,
499 	EVREventType_VREvent_OverlayHidden = 501,
500 	EVREventType_VREvent_DashboardActivated = 502,
501 	EVREventType_VREvent_DashboardDeactivated = 503,
502 	EVREventType_VREvent_DashboardThumbSelected = 504,
503 	EVREventType_VREvent_DashboardRequested = 505,
504 	EVREventType_VREvent_ResetDashboard = 506,
505 	EVREventType_VREvent_RenderToast = 507,
506 	EVREventType_VREvent_ImageLoaded = 508,
507 	EVREventType_VREvent_ShowKeyboard = 509,
508 	EVREventType_VREvent_HideKeyboard = 510,
509 	EVREventType_VREvent_OverlayGamepadFocusGained = 511,
510 	EVREventType_VREvent_OverlayGamepadFocusLost = 512,
511 	EVREventType_VREvent_OverlaySharedTextureChanged = 513,
512 	EVREventType_VREvent_DashboardGuideButtonDown = 514,
513 	EVREventType_VREvent_DashboardGuideButtonUp = 515,
514 	EVREventType_VREvent_ScreenshotTriggered = 516,
515 	EVREventType_VREvent_ImageFailed = 517,
516 	EVREventType_VREvent_DashboardOverlayCreated = 518,
517 	EVREventType_VREvent_RequestScreenshot = 520,
518 	EVREventType_VREvent_ScreenshotTaken = 521,
519 	EVREventType_VREvent_ScreenshotFailed = 522,
520 	EVREventType_VREvent_SubmitScreenshotToDashboard = 523,
521 	EVREventType_VREvent_ScreenshotProgressToDashboard = 524,
522 	EVREventType_VREvent_PrimaryDashboardDeviceChanged = 525,
523 	EVREventType_VREvent_Notification_Shown = 600,
524 	EVREventType_VREvent_Notification_Hidden = 601,
525 	EVREventType_VREvent_Notification_BeginInteraction = 602,
526 	EVREventType_VREvent_Notification_Destroyed = 603,
527 	EVREventType_VREvent_Quit = 700,
528 	EVREventType_VREvent_ProcessQuit = 701,
529 	EVREventType_VREvent_QuitAborted_UserPrompt = 702,
530 	EVREventType_VREvent_QuitAcknowledged = 703,
531 	EVREventType_VREvent_DriverRequestedQuit = 704,
532 	EVREventType_VREvent_ChaperoneDataHasChanged = 800,
533 	EVREventType_VREvent_ChaperoneUniverseHasChanged = 801,
534 	EVREventType_VREvent_ChaperoneTempDataHasChanged = 802,
535 	EVREventType_VREvent_ChaperoneSettingsHaveChanged = 803,
536 	EVREventType_VREvent_SeatedZeroPoseReset = 804,
537 	EVREventType_VREvent_AudioSettingsHaveChanged = 820,
538 	EVREventType_VREvent_BackgroundSettingHasChanged = 850,
539 	EVREventType_VREvent_CameraSettingsHaveChanged = 851,
540 	EVREventType_VREvent_ReprojectionSettingHasChanged = 852,
541 	EVREventType_VREvent_ModelSkinSettingsHaveChanged = 853,
542 	EVREventType_VREvent_EnvironmentSettingsHaveChanged = 854,
543 	EVREventType_VREvent_PowerSettingsHaveChanged = 855,
544 	EVREventType_VREvent_EnableHomeAppSettingsHaveChanged = 856,
545 	EVREventType_VREvent_StatusUpdate = 900,
546 	EVREventType_VREvent_MCImageUpdated = 1000,
547 	EVREventType_VREvent_FirmwareUpdateStarted = 1100,
548 	EVREventType_VREvent_FirmwareUpdateFinished = 1101,
549 	EVREventType_VREvent_KeyboardClosed = 1200,
550 	EVREventType_VREvent_KeyboardCharInput = 1201,
551 	EVREventType_VREvent_KeyboardDone = 1202,
552 	EVREventType_VREvent_ApplicationTransitionStarted = 1300,
553 	EVREventType_VREvent_ApplicationTransitionAborted = 1301,
554 	EVREventType_VREvent_ApplicationTransitionNewAppStarted = 1302,
555 	EVREventType_VREvent_ApplicationListUpdated = 1303,
556 	EVREventType_VREvent_ApplicationMimeTypeLoad = 1304,
557 	EVREventType_VREvent_ApplicationTransitionNewAppLaunchComplete = 1305,
558 	EVREventType_VREvent_ProcessConnected = 1306,
559 	EVREventType_VREvent_ProcessDisconnected = 1307,
560 	EVREventType_VREvent_Compositor_MirrorWindowShown = 1400,
561 	EVREventType_VREvent_Compositor_MirrorWindowHidden = 1401,
562 	EVREventType_VREvent_Compositor_ChaperoneBoundsShown = 1410,
563 	EVREventType_VREvent_Compositor_ChaperoneBoundsHidden = 1411,
564 	EVREventType_VREvent_TrackedCamera_StartVideoStream = 1500,
565 	EVREventType_VREvent_TrackedCamera_StopVideoStream = 1501,
566 	EVREventType_VREvent_TrackedCamera_PauseVideoStream = 1502,
567 	EVREventType_VREvent_TrackedCamera_ResumeVideoStream = 1503,
568 	EVREventType_VREvent_TrackedCamera_EditingSurface = 1550,
569 	EVREventType_VREvent_PerformanceTest_EnableCapture = 1600,
570 	EVREventType_VREvent_PerformanceTest_DisableCapture = 1601,
571 	EVREventType_VREvent_PerformanceTest_FidelityLevel = 1602,
572 	EVREventType_VREvent_MessageOverlay_Closed = 1650,
573 	EVREventType_VREvent_MessageOverlayCloseRequested = 1651,
574 	EVREventType_VREvent_VendorSpecific_Reserved_Start = 10000,
575 	EVREventType_VREvent_VendorSpecific_Reserved_End = 19999,
576 } EVREventType;
577 
578 typedef enum EDeviceActivityLevel
579 {
580 	EDeviceActivityLevel_k_EDeviceActivityLevel_Unknown = -1,
581 	EDeviceActivityLevel_k_EDeviceActivityLevel_Idle = 0,
582 	EDeviceActivityLevel_k_EDeviceActivityLevel_UserInteraction = 1,
583 	EDeviceActivityLevel_k_EDeviceActivityLevel_UserInteraction_Timeout = 2,
584 	EDeviceActivityLevel_k_EDeviceActivityLevel_Standby = 3,
585 } EDeviceActivityLevel;
586 
587 typedef enum EVRButtonId
588 {
589 	EVRButtonId_k_EButton_System = 0,
590 	EVRButtonId_k_EButton_ApplicationMenu = 1,
591 	EVRButtonId_k_EButton_Grip = 2,
592 	EVRButtonId_k_EButton_DPad_Left = 3,
593 	EVRButtonId_k_EButton_DPad_Up = 4,
594 	EVRButtonId_k_EButton_DPad_Right = 5,
595 	EVRButtonId_k_EButton_DPad_Down = 6,
596 	EVRButtonId_k_EButton_A = 7,
597 	EVRButtonId_k_EButton_ProximitySensor = 31,
598 	EVRButtonId_k_EButton_Axis0 = 32,
599 	EVRButtonId_k_EButton_Axis1 = 33,
600 	EVRButtonId_k_EButton_Axis2 = 34,
601 	EVRButtonId_k_EButton_Axis3 = 35,
602 	EVRButtonId_k_EButton_Axis4 = 36,
603 	EVRButtonId_k_EButton_SteamVR_Touchpad = 32,
604 	EVRButtonId_k_EButton_SteamVR_Trigger = 33,
605 	EVRButtonId_k_EButton_Dashboard_Back = 2,
606 	EVRButtonId_k_EButton_Max = 64,
607 } EVRButtonId;
608 
609 typedef enum EVRMouseButton
610 {
611 	EVRMouseButton_VRMouseButton_Left = 1,
612 	EVRMouseButton_VRMouseButton_Right = 2,
613 	EVRMouseButton_VRMouseButton_Middle = 4,
614 } EVRMouseButton;
615 
616 typedef enum EHiddenAreaMeshType
617 {
618 	EHiddenAreaMeshType_k_eHiddenAreaMesh_Standard = 0,
619 	EHiddenAreaMeshType_k_eHiddenAreaMesh_Inverse = 1,
620 	EHiddenAreaMeshType_k_eHiddenAreaMesh_LineLoop = 2,
621 	EHiddenAreaMeshType_k_eHiddenAreaMesh_Max = 3,
622 } EHiddenAreaMeshType;
623 
624 typedef enum EVRControllerAxisType
625 {
626 	EVRControllerAxisType_k_eControllerAxis_None = 0,
627 	EVRControllerAxisType_k_eControllerAxis_TrackPad = 1,
628 	EVRControllerAxisType_k_eControllerAxis_Joystick = 2,
629 	EVRControllerAxisType_k_eControllerAxis_Trigger = 3,
630 } EVRControllerAxisType;
631 
632 typedef enum EVRControllerEventOutputType
633 {
634 	EVRControllerEventOutputType_ControllerEventOutput_OSEvents = 0,
635 	EVRControllerEventOutputType_ControllerEventOutput_VREvents = 1,
636 } EVRControllerEventOutputType;
637 
638 typedef enum ECollisionBoundsStyle
639 {
640 	ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_BEGINNER = 0,
641 	ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1,
642 	ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_SQUARES = 2,
643 	ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_ADVANCED = 3,
644 	ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_NONE = 4,
645 	ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_COUNT = 5,
646 } ECollisionBoundsStyle;
647 
648 typedef enum EVROverlayError
649 {
650 	EVROverlayError_VROverlayError_None = 0,
651 	EVROverlayError_VROverlayError_UnknownOverlay = 10,
652 	EVROverlayError_VROverlayError_InvalidHandle = 11,
653 	EVROverlayError_VROverlayError_PermissionDenied = 12,
654 	EVROverlayError_VROverlayError_OverlayLimitExceeded = 13,
655 	EVROverlayError_VROverlayError_WrongVisibilityType = 14,
656 	EVROverlayError_VROverlayError_KeyTooLong = 15,
657 	EVROverlayError_VROverlayError_NameTooLong = 16,
658 	EVROverlayError_VROverlayError_KeyInUse = 17,
659 	EVROverlayError_VROverlayError_WrongTransformType = 18,
660 	EVROverlayError_VROverlayError_InvalidTrackedDevice = 19,
661 	EVROverlayError_VROverlayError_InvalidParameter = 20,
662 	EVROverlayError_VROverlayError_ThumbnailCantBeDestroyed = 21,
663 	EVROverlayError_VROverlayError_ArrayTooSmall = 22,
664 	EVROverlayError_VROverlayError_RequestFailed = 23,
665 	EVROverlayError_VROverlayError_InvalidTexture = 24,
666 	EVROverlayError_VROverlayError_UnableToLoadFile = 25,
667 	EVROverlayError_VROverlayError_KeyboardAlreadyInUse = 26,
668 	EVROverlayError_VROverlayError_NoNeighbor = 27,
669 	EVROverlayError_VROverlayError_TooManyMaskPrimitives = 29,
670 	EVROverlayError_VROverlayError_BadMaskPrimitive = 30,
671 } EVROverlayError;
672 
673 typedef enum EVRApplicationType
674 {
675 	EVRApplicationType_VRApplication_Other = 0,
676 	EVRApplicationType_VRApplication_Scene = 1,
677 	EVRApplicationType_VRApplication_Overlay = 2,
678 	EVRApplicationType_VRApplication_Background = 3,
679 	EVRApplicationType_VRApplication_Utility = 4,
680 	EVRApplicationType_VRApplication_VRMonitor = 5,
681 	EVRApplicationType_VRApplication_SteamWatchdog = 6,
682 	EVRApplicationType_VRApplication_Bootstrapper = 7,
683 	EVRApplicationType_VRApplication_Max = 8,
684 } EVRApplicationType;
685 
686 typedef enum EVRFirmwareError
687 {
688 	EVRFirmwareError_VRFirmwareError_None = 0,
689 	EVRFirmwareError_VRFirmwareError_Success = 1,
690 	EVRFirmwareError_VRFirmwareError_Fail = 2,
691 } EVRFirmwareError;
692 
693 typedef enum EVRNotificationError
694 {
695 	EVRNotificationError_VRNotificationError_OK = 0,
696 	EVRNotificationError_VRNotificationError_InvalidNotificationId = 100,
697 	EVRNotificationError_VRNotificationError_NotificationQueueFull = 101,
698 	EVRNotificationError_VRNotificationError_InvalidOverlayHandle = 102,
699 	EVRNotificationError_VRNotificationError_SystemWithUserValueAlreadyExists = 103,
700 } EVRNotificationError;
701 
702 typedef enum EVRInitError
703 {
704 	EVRInitError_VRInitError_None = 0,
705 	EVRInitError_VRInitError_Unknown = 1,
706 	EVRInitError_VRInitError_Init_InstallationNotFound = 100,
707 	EVRInitError_VRInitError_Init_InstallationCorrupt = 101,
708 	EVRInitError_VRInitError_Init_VRClientDLLNotFound = 102,
709 	EVRInitError_VRInitError_Init_FileNotFound = 103,
710 	EVRInitError_VRInitError_Init_FactoryNotFound = 104,
711 	EVRInitError_VRInitError_Init_InterfaceNotFound = 105,
712 	EVRInitError_VRInitError_Init_InvalidInterface = 106,
713 	EVRInitError_VRInitError_Init_UserConfigDirectoryInvalid = 107,
714 	EVRInitError_VRInitError_Init_HmdNotFound = 108,
715 	EVRInitError_VRInitError_Init_NotInitialized = 109,
716 	EVRInitError_VRInitError_Init_PathRegistryNotFound = 110,
717 	EVRInitError_VRInitError_Init_NoConfigPath = 111,
718 	EVRInitError_VRInitError_Init_NoLogPath = 112,
719 	EVRInitError_VRInitError_Init_PathRegistryNotWritable = 113,
720 	EVRInitError_VRInitError_Init_AppInfoInitFailed = 114,
721 	EVRInitError_VRInitError_Init_Retry = 115,
722 	EVRInitError_VRInitError_Init_InitCanceledByUser = 116,
723 	EVRInitError_VRInitError_Init_AnotherAppLaunching = 117,
724 	EVRInitError_VRInitError_Init_SettingsInitFailed = 118,
725 	EVRInitError_VRInitError_Init_ShuttingDown = 119,
726 	EVRInitError_VRInitError_Init_TooManyObjects = 120,
727 	EVRInitError_VRInitError_Init_NoServerForBackgroundApp = 121,
728 	EVRInitError_VRInitError_Init_NotSupportedWithCompositor = 122,
729 	EVRInitError_VRInitError_Init_NotAvailableToUtilityApps = 123,
730 	EVRInitError_VRInitError_Init_Internal = 124,
731 	EVRInitError_VRInitError_Init_HmdDriverIdIsNone = 125,
732 	EVRInitError_VRInitError_Init_HmdNotFoundPresenceFailed = 126,
733 	EVRInitError_VRInitError_Init_VRMonitorNotFound = 127,
734 	EVRInitError_VRInitError_Init_VRMonitorStartupFailed = 128,
735 	EVRInitError_VRInitError_Init_LowPowerWatchdogNotSupported = 129,
736 	EVRInitError_VRInitError_Init_InvalidApplicationType = 130,
737 	EVRInitError_VRInitError_Init_NotAvailableToWatchdogApps = 131,
738 	EVRInitError_VRInitError_Init_WatchdogDisabledInSettings = 132,
739 	EVRInitError_VRInitError_Init_VRDashboardNotFound = 133,
740 	EVRInitError_VRInitError_Init_VRDashboardStartupFailed = 134,
741 	EVRInitError_VRInitError_Init_VRHomeNotFound = 135,
742 	EVRInitError_VRInitError_Init_VRHomeStartupFailed = 136,
743 	EVRInitError_VRInitError_Init_RebootingBusy = 137,
744 	EVRInitError_VRInitError_Init_FirmwareUpdateBusy = 138,
745 	EVRInitError_VRInitError_Init_FirmwareRecoveryBusy = 139,
746 	EVRInitError_VRInitError_Driver_Failed = 200,
747 	EVRInitError_VRInitError_Driver_Unknown = 201,
748 	EVRInitError_VRInitError_Driver_HmdUnknown = 202,
749 	EVRInitError_VRInitError_Driver_NotLoaded = 203,
750 	EVRInitError_VRInitError_Driver_RuntimeOutOfDate = 204,
751 	EVRInitError_VRInitError_Driver_HmdInUse = 205,
752 	EVRInitError_VRInitError_Driver_NotCalibrated = 206,
753 	EVRInitError_VRInitError_Driver_CalibrationInvalid = 207,
754 	EVRInitError_VRInitError_Driver_HmdDisplayNotFound = 208,
755 	EVRInitError_VRInitError_Driver_TrackedDeviceInterfaceUnknown = 209,
756 	EVRInitError_VRInitError_Driver_HmdDriverIdOutOfBounds = 211,
757 	EVRInitError_VRInitError_Driver_HmdDisplayMirrored = 212,
758 	EVRInitError_VRInitError_IPC_ServerInitFailed = 300,
759 	EVRInitError_VRInitError_IPC_ConnectFailed = 301,
760 	EVRInitError_VRInitError_IPC_SharedStateInitFailed = 302,
761 	EVRInitError_VRInitError_IPC_CompositorInitFailed = 303,
762 	EVRInitError_VRInitError_IPC_MutexInitFailed = 304,
763 	EVRInitError_VRInitError_IPC_Failed = 305,
764 	EVRInitError_VRInitError_IPC_CompositorConnectFailed = 306,
765 	EVRInitError_VRInitError_IPC_CompositorInvalidConnectResponse = 307,
766 	EVRInitError_VRInitError_IPC_ConnectFailedAfterMultipleAttempts = 308,
767 	EVRInitError_VRInitError_Compositor_Failed = 400,
768 	EVRInitError_VRInitError_Compositor_D3D11HardwareRequired = 401,
769 	EVRInitError_VRInitError_Compositor_FirmwareRequiresUpdate = 402,
770 	EVRInitError_VRInitError_Compositor_OverlayInitFailed = 403,
771 	EVRInitError_VRInitError_Compositor_ScreenshotsInitFailed = 404,
772 	EVRInitError_VRInitError_Compositor_UnableToCreateDevice = 405,
773 	EVRInitError_VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000,
774 	EVRInitError_VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101,
775 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102,
776 	EVRInitError_VRInitError_VendorSpecific_HmdFound_NoStoredConfig = 1103,
777 	EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooBig = 1104,
778 	EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooSmall = 1105,
779 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToInitZLib = 1106,
780 	EVRInitError_VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107,
781 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108,
782 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109,
783 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110,
784 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataAddressRange = 1111,
785 	EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataError = 1112,
786 	EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113,
787 	EVRInitError_VRInitError_Steam_SteamInstallationNotFound = 2000,
788 } EVRInitError;
789 
790 typedef enum EVRScreenshotType
791 {
792 	EVRScreenshotType_VRScreenshotType_None = 0,
793 	EVRScreenshotType_VRScreenshotType_Mono = 1,
794 	EVRScreenshotType_VRScreenshotType_Stereo = 2,
795 	EVRScreenshotType_VRScreenshotType_Cubemap = 3,
796 	EVRScreenshotType_VRScreenshotType_MonoPanorama = 4,
797 	EVRScreenshotType_VRScreenshotType_StereoPanorama = 5,
798 } EVRScreenshotType;
799 
800 typedef enum EVRScreenshotPropertyFilenames
801 {
802 	EVRScreenshotPropertyFilenames_VRScreenshotPropertyFilenames_Preview = 0,
803 	EVRScreenshotPropertyFilenames_VRScreenshotPropertyFilenames_VR = 1,
804 } EVRScreenshotPropertyFilenames;
805 
806 typedef enum EVRTrackedCameraError
807 {
808 	EVRTrackedCameraError_VRTrackedCameraError_None = 0,
809 	EVRTrackedCameraError_VRTrackedCameraError_OperationFailed = 100,
810 	EVRTrackedCameraError_VRTrackedCameraError_InvalidHandle = 101,
811 	EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameHeaderVersion = 102,
812 	EVRTrackedCameraError_VRTrackedCameraError_OutOfHandles = 103,
813 	EVRTrackedCameraError_VRTrackedCameraError_IPCFailure = 104,
814 	EVRTrackedCameraError_VRTrackedCameraError_NotSupportedForThisDevice = 105,
815 	EVRTrackedCameraError_VRTrackedCameraError_SharedMemoryFailure = 106,
816 	EVRTrackedCameraError_VRTrackedCameraError_FrameBufferingFailure = 107,
817 	EVRTrackedCameraError_VRTrackedCameraError_StreamSetupFailure = 108,
818 	EVRTrackedCameraError_VRTrackedCameraError_InvalidGLTextureId = 109,
819 	EVRTrackedCameraError_VRTrackedCameraError_InvalidSharedTextureHandle = 110,
820 	EVRTrackedCameraError_VRTrackedCameraError_FailedToGetGLTextureId = 111,
821 	EVRTrackedCameraError_VRTrackedCameraError_SharedTextureFailure = 112,
822 	EVRTrackedCameraError_VRTrackedCameraError_NoFrameAvailable = 113,
823 	EVRTrackedCameraError_VRTrackedCameraError_InvalidArgument = 114,
824 	EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameBufferSize = 115,
825 } EVRTrackedCameraError;
826 
827 typedef enum EVRTrackedCameraFrameType
828 {
829 	EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Distorted = 0,
830 	EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Undistorted = 1,
831 	EVRTrackedCameraFrameType_VRTrackedCameraFrameType_MaximumUndistorted = 2,
832 	EVRTrackedCameraFrameType_MAX_CAMERA_FRAME_TYPES = 3,
833 } EVRTrackedCameraFrameType;
834 
835 typedef enum EVRApplicationError
836 {
837 	EVRApplicationError_VRApplicationError_None = 0,
838 	EVRApplicationError_VRApplicationError_AppKeyAlreadyExists = 100,
839 	EVRApplicationError_VRApplicationError_NoManifest = 101,
840 	EVRApplicationError_VRApplicationError_NoApplication = 102,
841 	EVRApplicationError_VRApplicationError_InvalidIndex = 103,
842 	EVRApplicationError_VRApplicationError_UnknownApplication = 104,
843 	EVRApplicationError_VRApplicationError_IPCFailed = 105,
844 	EVRApplicationError_VRApplicationError_ApplicationAlreadyRunning = 106,
845 	EVRApplicationError_VRApplicationError_InvalidManifest = 107,
846 	EVRApplicationError_VRApplicationError_InvalidApplication = 108,
847 	EVRApplicationError_VRApplicationError_LaunchFailed = 109,
848 	EVRApplicationError_VRApplicationError_ApplicationAlreadyStarting = 110,
849 	EVRApplicationError_VRApplicationError_LaunchInProgress = 111,
850 	EVRApplicationError_VRApplicationError_OldApplicationQuitting = 112,
851 	EVRApplicationError_VRApplicationError_TransitionAborted = 113,
852 	EVRApplicationError_VRApplicationError_IsTemplate = 114,
853 	EVRApplicationError_VRApplicationError_SteamVRIsExiting = 115,
854 	EVRApplicationError_VRApplicationError_BufferTooSmall = 200,
855 	EVRApplicationError_VRApplicationError_PropertyNotSet = 201,
856 	EVRApplicationError_VRApplicationError_UnknownProperty = 202,
857 	EVRApplicationError_VRApplicationError_InvalidParameter = 203,
858 } EVRApplicationError;
859 
860 typedef enum EVRApplicationProperty
861 {
862 	EVRApplicationProperty_VRApplicationProperty_Name_String = 0,
863 	EVRApplicationProperty_VRApplicationProperty_LaunchType_String = 11,
864 	EVRApplicationProperty_VRApplicationProperty_WorkingDirectory_String = 12,
865 	EVRApplicationProperty_VRApplicationProperty_BinaryPath_String = 13,
866 	EVRApplicationProperty_VRApplicationProperty_Arguments_String = 14,
867 	EVRApplicationProperty_VRApplicationProperty_URL_String = 15,
868 	EVRApplicationProperty_VRApplicationProperty_Description_String = 50,
869 	EVRApplicationProperty_VRApplicationProperty_NewsURL_String = 51,
870 	EVRApplicationProperty_VRApplicationProperty_ImagePath_String = 52,
871 	EVRApplicationProperty_VRApplicationProperty_Source_String = 53,
872 	EVRApplicationProperty_VRApplicationProperty_IsDashboardOverlay_Bool = 60,
873 	EVRApplicationProperty_VRApplicationProperty_IsTemplate_Bool = 61,
874 	EVRApplicationProperty_VRApplicationProperty_IsInstanced_Bool = 62,
875 	EVRApplicationProperty_VRApplicationProperty_IsInternal_Bool = 63,
876 	EVRApplicationProperty_VRApplicationProperty_WantsCompositorPauseInStandby_Bool = 64,
877 	EVRApplicationProperty_VRApplicationProperty_LastLaunchTime_Uint64 = 70,
878 } EVRApplicationProperty;
879 
880 typedef enum EVRApplicationTransitionState
881 {
882 	EVRApplicationTransitionState_VRApplicationTransition_None = 0,
883 	EVRApplicationTransitionState_VRApplicationTransition_OldAppQuitSent = 10,
884 	EVRApplicationTransitionState_VRApplicationTransition_WaitingForExternalLaunch = 11,
885 	EVRApplicationTransitionState_VRApplicationTransition_NewAppLaunched = 20,
886 } EVRApplicationTransitionState;
887 
888 typedef enum ChaperoneCalibrationState
889 {
890 	ChaperoneCalibrationState_OK = 1,
891 	ChaperoneCalibrationState_Warning = 100,
892 	ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved = 101,
893 	ChaperoneCalibrationState_Warning_BaseStationRemoved = 102,
894 	ChaperoneCalibrationState_Warning_SeatedBoundsInvalid = 103,
895 	ChaperoneCalibrationState_Error = 200,
896 	ChaperoneCalibrationState_Error_BaseStationUninitialized = 201,
897 	ChaperoneCalibrationState_Error_BaseStationConflict = 202,
898 	ChaperoneCalibrationState_Error_PlayAreaInvalid = 203,
899 	ChaperoneCalibrationState_Error_CollisionBoundsInvalid = 204,
900 } ChaperoneCalibrationState;
901 
902 typedef enum EChaperoneConfigFile
903 {
904 	EChaperoneConfigFile_Live = 1,
905 	EChaperoneConfigFile_Temp = 2,
906 } EChaperoneConfigFile;
907 
908 typedef enum EChaperoneImportFlags
909 {
910 	EChaperoneImportFlags_EChaperoneImport_BoundsOnly = 1,
911 } EChaperoneImportFlags;
912 
913 typedef enum EVRCompositorError
914 {
915 	EVRCompositorError_VRCompositorError_None = 0,
916 	EVRCompositorError_VRCompositorError_RequestFailed = 1,
917 	EVRCompositorError_VRCompositorError_IncompatibleVersion = 100,
918 	EVRCompositorError_VRCompositorError_DoNotHaveFocus = 101,
919 	EVRCompositorError_VRCompositorError_InvalidTexture = 102,
920 	EVRCompositorError_VRCompositorError_IsNotSceneApplication = 103,
921 	EVRCompositorError_VRCompositorError_TextureIsOnWrongDevice = 104,
922 	EVRCompositorError_VRCompositorError_TextureUsesUnsupportedFormat = 105,
923 	EVRCompositorError_VRCompositorError_SharedTexturesNotSupported = 106,
924 	EVRCompositorError_VRCompositorError_IndexOutOfRange = 107,
925 	EVRCompositorError_VRCompositorError_AlreadySubmitted = 108,
926 	EVRCompositorError_VRCompositorError_InvalidBounds = 109,
927 } EVRCompositorError;
928 
929 typedef enum VROverlayInputMethod
930 {
931 	VROverlayInputMethod_None = 0,
932 	VROverlayInputMethod_Mouse = 1,
933 } VROverlayInputMethod;
934 
935 typedef enum VROverlayTransformType
936 {
937 	VROverlayTransformType_VROverlayTransform_Absolute = 0,
938 	VROverlayTransformType_VROverlayTransform_TrackedDeviceRelative = 1,
939 	VROverlayTransformType_VROverlayTransform_SystemOverlay = 2,
940 	VROverlayTransformType_VROverlayTransform_TrackedComponent = 3,
941 } VROverlayTransformType;
942 
943 typedef enum VROverlayFlags
944 {
945 	VROverlayFlags_None = 0,
946 	VROverlayFlags_Curved = 1,
947 	VROverlayFlags_RGSS4X = 2,
948 	VROverlayFlags_NoDashboardTab = 3,
949 	VROverlayFlags_AcceptsGamepadEvents = 4,
950 	VROverlayFlags_ShowGamepadFocus = 5,
951 	VROverlayFlags_SendVRScrollEvents = 6,
952 	VROverlayFlags_SendVRTouchpadEvents = 7,
953 	VROverlayFlags_ShowTouchPadScrollWheel = 8,
954 	VROverlayFlags_TransferOwnershipToInternalProcess = 9,
955 	VROverlayFlags_SideBySide_Parallel = 10,
956 	VROverlayFlags_SideBySide_Crossed = 11,
957 	VROverlayFlags_Panorama = 12,
958 	VROverlayFlags_StereoPanorama = 13,
959 	VROverlayFlags_SortWithNonSceneOverlays = 14,
960 	VROverlayFlags_VisibleInDashboard = 15,
961 } VROverlayFlags;
962 
963 typedef enum VRMessageOverlayResponse
964 {
965 	VRMessageOverlayResponse_ButtonPress_0 = 0,
966 	VRMessageOverlayResponse_ButtonPress_1 = 1,
967 	VRMessageOverlayResponse_ButtonPress_2 = 2,
968 	VRMessageOverlayResponse_ButtonPress_3 = 3,
969 	VRMessageOverlayResponse_CouldntFindSystemOverlay = 4,
970 	VRMessageOverlayResponse_CouldntFindOrCreateClientOverlay = 5,
971 	VRMessageOverlayResponse_ApplicationQuit = 6,
972 } VRMessageOverlayResponse;
973 
974 typedef enum EGamepadTextInputMode
975 {
976 	EGamepadTextInputMode_k_EGamepadTextInputModeNormal = 0,
977 	EGamepadTextInputMode_k_EGamepadTextInputModePassword = 1,
978 	EGamepadTextInputMode_k_EGamepadTextInputModeSubmit = 2,
979 } EGamepadTextInputMode;
980 
981 typedef enum EGamepadTextInputLineMode
982 {
983 	EGamepadTextInputLineMode_k_EGamepadTextInputLineModeSingleLine = 0,
984 	EGamepadTextInputLineMode_k_EGamepadTextInputLineModeMultipleLines = 1,
985 } EGamepadTextInputLineMode;
986 
987 typedef enum EOverlayDirection
988 {
989 	EOverlayDirection_OverlayDirection_Up = 0,
990 	EOverlayDirection_OverlayDirection_Down = 1,
991 	EOverlayDirection_OverlayDirection_Left = 2,
992 	EOverlayDirection_OverlayDirection_Right = 3,
993 	EOverlayDirection_OverlayDirection_Count = 4,
994 } EOverlayDirection;
995 
996 typedef enum EVROverlayIntersectionMaskPrimitiveType
997 {
998 	EVROverlayIntersectionMaskPrimitiveType_OverlayIntersectionPrimitiveType_Rectangle = 0,
999 	EVROverlayIntersectionMaskPrimitiveType_OverlayIntersectionPrimitiveType_Circle = 1,
1000 } EVROverlayIntersectionMaskPrimitiveType;
1001 
1002 typedef enum EVRRenderModelError
1003 {
1004 	EVRRenderModelError_VRRenderModelError_None = 0,
1005 	EVRRenderModelError_VRRenderModelError_Loading = 100,
1006 	EVRRenderModelError_VRRenderModelError_NotSupported = 200,
1007 	EVRRenderModelError_VRRenderModelError_InvalidArg = 300,
1008 	EVRRenderModelError_VRRenderModelError_InvalidModel = 301,
1009 	EVRRenderModelError_VRRenderModelError_NoShapes = 302,
1010 	EVRRenderModelError_VRRenderModelError_MultipleShapes = 303,
1011 	EVRRenderModelError_VRRenderModelError_TooManyVertices = 304,
1012 	EVRRenderModelError_VRRenderModelError_MultipleTextures = 305,
1013 	EVRRenderModelError_VRRenderModelError_BufferTooSmall = 306,
1014 	EVRRenderModelError_VRRenderModelError_NotEnoughNormals = 307,
1015 	EVRRenderModelError_VRRenderModelError_NotEnoughTexCoords = 308,
1016 	EVRRenderModelError_VRRenderModelError_InvalidTexture = 400,
1017 } EVRRenderModelError;
1018 
1019 typedef enum EVRComponentProperty
1020 {
1021 	EVRComponentProperty_VRComponentProperty_IsStatic = 1,
1022 	EVRComponentProperty_VRComponentProperty_IsVisible = 2,
1023 	EVRComponentProperty_VRComponentProperty_IsTouched = 4,
1024 	EVRComponentProperty_VRComponentProperty_IsPressed = 8,
1025 	EVRComponentProperty_VRComponentProperty_IsScrolled = 16,
1026 } EVRComponentProperty;
1027 
1028 typedef enum EVRNotificationType
1029 {
1030 	EVRNotificationType_Transient = 0,
1031 	EVRNotificationType_Persistent = 1,
1032 	EVRNotificationType_Transient_SystemWithUserValue = 2,
1033 } EVRNotificationType;
1034 
1035 typedef enum EVRNotificationStyle
1036 {
1037 	EVRNotificationStyle_None = 0,
1038 	EVRNotificationStyle_Application = 100,
1039 	EVRNotificationStyle_Contact_Disabled = 200,
1040 	EVRNotificationStyle_Contact_Enabled = 201,
1041 	EVRNotificationStyle_Contact_Active = 202,
1042 } EVRNotificationStyle;
1043 
1044 typedef enum EVRSettingsError
1045 {
1046 	EVRSettingsError_VRSettingsError_None = 0,
1047 	EVRSettingsError_VRSettingsError_IPCFailed = 1,
1048 	EVRSettingsError_VRSettingsError_WriteFailed = 2,
1049 	EVRSettingsError_VRSettingsError_ReadFailed = 3,
1050 	EVRSettingsError_VRSettingsError_JsonParseFailed = 4,
1051 	EVRSettingsError_VRSettingsError_UnsetSettingHasNoDefault = 5,
1052 } EVRSettingsError;
1053 
1054 typedef enum EVRScreenshotError
1055 {
1056 	EVRScreenshotError_VRScreenshotError_None = 0,
1057 	EVRScreenshotError_VRScreenshotError_RequestFailed = 1,
1058 	EVRScreenshotError_VRScreenshotError_IncompatibleVersion = 100,
1059 	EVRScreenshotError_VRScreenshotError_NotFound = 101,
1060 	EVRScreenshotError_VRScreenshotError_BufferTooSmall = 102,
1061 	EVRScreenshotError_VRScreenshotError_ScreenshotAlreadyInProgress = 108,
1062 } EVRScreenshotError;
1063 
1064 // OpenVR typedefs
1065 
1066 typedef uint32_t TrackedDeviceIndex_t;
1067 typedef uint32_t VRNotificationId;
1068 typedef uint64_t VROverlayHandle_t;
1069 
1070 typedef void *glSharedTextureHandle_t;
1071 typedef int32_t glInt_t;
1072 typedef uint32_t glUInt_t;
1073 typedef uint64_t SharedTextureHandle_t;
1074 typedef uint32_t DriverId_t;
1075 typedef uint32_t TrackedDeviceIndex_t;
1076 typedef uint64_t PropertyContainerHandle_t;
1077 typedef uint32_t PropertyTypeTag_t;
1078 typedef uint64_t VROverlayHandle_t;
1079 typedef uint64_t TrackedCameraHandle_t;
1080 typedef uint32_t ScreenshotHandle_t;
1081 typedef uint32_t VRComponentProperties;
1082 typedef int32_t TextureID_t;
1083 typedef uint32_t VRNotificationId;
1084 typedef EVRInitError HmdError;
1085 typedef EVREye Hmd_Eye;
1086 typedef EColorSpace ColorSpace;
1087 typedef ETrackingResult HmdTrackingResult;
1088 typedef ETrackedDeviceClass TrackedDeviceClass;
1089 typedef ETrackingUniverseOrigin TrackingUniverseOrigin;
1090 typedef ETrackedDeviceProperty TrackedDeviceProperty;
1091 typedef ETrackedPropertyError TrackedPropertyError;
1092 typedef EVRSubmitFlags VRSubmitFlags_t;
1093 typedef EVRState VRState_t;
1094 typedef ECollisionBoundsStyle CollisionBoundsStyle_t;
1095 typedef EVROverlayError VROverlayError;
1096 typedef EVRFirmwareError VRFirmwareError;
1097 typedef EVRCompositorError VRCompositorError;
1098 typedef EVRScreenshotError VRScreenshotsError;
1099 
1100 // OpenVR Structs
1101 
1102 typedef struct HmdMatrix34_t
1103 {
1104 	float m[3][4];  //float[3][4]
1105 } HmdMatrix34_t;
1106 
1107 typedef struct HmdMatrix44_t
1108 {
1109 	float m[4][4];  //float[4][4]
1110 } HmdMatrix44_t;
1111 
1112 typedef struct HmdVector3_t
1113 {
1114 	float v[3];  //float[3]
1115 } HmdVector3_t;
1116 
1117 typedef struct HmdVector4_t
1118 {
1119 	float v[4];  //float[4]
1120 } HmdVector4_t;
1121 
1122 typedef struct HmdVector3d_t
1123 {
1124 	double v[3];  //double[3]
1125 } HmdVector3d_t;
1126 
1127 typedef struct HmdVector2_t
1128 {
1129 	float v[2];  //float[2]
1130 } HmdVector2_t;
1131 
1132 typedef struct HmdQuaternion_t
1133 {
1134 	double w;
1135 	double x;
1136 	double y;
1137 	double z;
1138 } HmdQuaternion_t;
1139 
1140 typedef struct HmdColor_t
1141 {
1142 	float r;
1143 	float g;
1144 	float b;
1145 	float a;
1146 } HmdColor_t;
1147 
1148 typedef struct HmdQuad_t
1149 {
1150 	struct HmdVector3_t vCorners[4];  //struct vr::HmdVector3_t[4]
1151 } HmdQuad_t;
1152 
1153 typedef struct HmdRect2_t
1154 {
1155 	struct HmdVector2_t vTopLeft;
1156 	struct HmdVector2_t vBottomRight;
1157 } HmdRect2_t;
1158 
1159 typedef struct DistortionCoordinates_t
1160 {
1161 	float rfRed[2];    //float[2]
1162 	float rfGreen[2];  //float[2]
1163 	float rfBlue[2];   //float[2]
1164 } DistortionCoordinates_t;
1165 
1166 typedef struct Texture_t
1167 {
1168 	void *handle;  // void *
1169 	enum ETextureType eType;
1170 	enum EColorSpace eColorSpace;
1171 } Texture_t;
1172 
1173 typedef struct TrackedDevicePose_t
1174 {
1175 	struct HmdMatrix34_t mDeviceToAbsoluteTracking;
1176 	struct HmdVector3_t vVelocity;
1177 	struct HmdVector3_t vAngularVelocity;
1178 	enum ETrackingResult eTrackingResult;
1179 	bool bPoseIsValid;
1180 	bool bDeviceIsConnected;
1181 } TrackedDevicePose_t;
1182 
1183 typedef struct VRTextureBounds_t
1184 {
1185 	float uMin;
1186 	float vMin;
1187 	float uMax;
1188 	float vMax;
1189 } VRTextureBounds_t;
1190 
1191 typedef struct VRTextureWithPose_t
1192 {
1193 	struct HmdMatrix34_t mDeviceToAbsoluteTracking;
1194 } VRTextureWithPose_t;
1195 
1196 typedef struct VRVulkanTextureData_t
1197 {
1198 	uint64_t m_nImage;
1199 	struct VkDevice_T *m_pDevice;                  // struct VkDevice_T *
1200 	struct VkPhysicalDevice_T *m_pPhysicalDevice;  // struct VkPhysicalDevice_T *
1201 	struct VkInstance_T *m_pInstance;              // struct VkInstance_T *
1202 	struct VkQueue_T *m_pQueue;                    // struct VkQueue_T *
1203 	uint32_t m_nQueueFamilyIndex;
1204 	uint32_t m_nWidth;
1205 	uint32_t m_nHeight;
1206 	uint32_t m_nFormat;
1207 	uint32_t m_nSampleCount;
1208 } VRVulkanTextureData_t;
1209 
1210 typedef struct D3D12TextureData_t
1211 {
1212 	struct ID3D12Resource *m_pResource;          // struct ID3D12Resource *
1213 	struct ID3D12CommandQueue *m_pCommandQueue;  // struct ID3D12CommandQueue *
1214 	uint32_t m_nNodeMask;
1215 } D3D12TextureData_t;
1216 
1217 typedef struct VREvent_Controller_t
1218 {
1219 	uint32_t button;
1220 } VREvent_Controller_t;
1221 
1222 typedef struct VREvent_Mouse_t
1223 {
1224 	float x;
1225 	float y;
1226 	uint32_t button;
1227 } VREvent_Mouse_t;
1228 
1229 typedef struct VREvent_Scroll_t
1230 {
1231 	float xdelta;
1232 	float ydelta;
1233 	uint32_t repeatCount;
1234 } VREvent_Scroll_t;
1235 
1236 typedef struct VREvent_TouchPadMove_t
1237 {
1238 	bool bFingerDown;
1239 	float flSecondsFingerDown;
1240 	float fValueXFirst;
1241 	float fValueYFirst;
1242 	float fValueXRaw;
1243 	float fValueYRaw;
1244 } VREvent_TouchPadMove_t;
1245 
1246 typedef struct VREvent_Notification_t
1247 {
1248 	uint64_t ulUserValue;
1249 	uint32_t notificationId;
1250 } VREvent_Notification_t;
1251 
1252 typedef struct VREvent_Process_t
1253 {
1254 	uint32_t pid;
1255 	uint32_t oldPid;
1256 	bool bForced;
1257 } VREvent_Process_t;
1258 
1259 typedef struct VREvent_Overlay_t
1260 {
1261 	uint64_t overlayHandle;
1262 } VREvent_Overlay_t;
1263 
1264 typedef struct VREvent_Status_t
1265 {
1266 	uint32_t statusState;
1267 } VREvent_Status_t;
1268 
1269 typedef struct VREvent_Keyboard_t
1270 {
1271 	char *cNewInput[8];  //char[8]
1272 	uint64_t uUserValue;
1273 } VREvent_Keyboard_t;
1274 
1275 typedef struct VREvent_Ipd_t
1276 {
1277 	float ipdMeters;
1278 } VREvent_Ipd_t;
1279 
1280 typedef struct VREvent_Chaperone_t
1281 {
1282 	uint64_t m_nPreviousUniverse;
1283 	uint64_t m_nCurrentUniverse;
1284 } VREvent_Chaperone_t;
1285 
1286 typedef struct VREvent_Reserved_t
1287 {
1288 	uint64_t reserved0;
1289 	uint64_t reserved1;
1290 } VREvent_Reserved_t;
1291 
1292 typedef struct VREvent_PerformanceTest_t
1293 {
1294 	uint32_t m_nFidelityLevel;
1295 } VREvent_PerformanceTest_t;
1296 
1297 typedef struct VREvent_SeatedZeroPoseReset_t
1298 {
1299 	bool bResetBySystemMenu;
1300 } VREvent_SeatedZeroPoseReset_t;
1301 
1302 typedef struct VREvent_Screenshot_t
1303 {
1304 	uint32_t handle;
1305 	uint32_t type;
1306 } VREvent_Screenshot_t;
1307 
1308 typedef struct VREvent_ScreenshotProgress_t
1309 {
1310 	float progress;
1311 } VREvent_ScreenshotProgress_t;
1312 
1313 typedef struct VREvent_ApplicationLaunch_t
1314 {
1315 	uint32_t pid;
1316 	uint32_t unArgsHandle;
1317 } VREvent_ApplicationLaunch_t;
1318 
1319 typedef struct VREvent_EditingCameraSurface_t
1320 {
1321 	uint64_t overlayHandle;
1322 	uint32_t nVisualMode;
1323 } VREvent_EditingCameraSurface_t;
1324 
1325 typedef struct VREvent_MessageOverlay_t
1326 {
1327 	uint32_t unVRMessageOverlayResponse;
1328 } VREvent_MessageOverlay_t;
1329 
1330 typedef struct VREvent_Property_t
1331 {
1332 	PropertyContainerHandle_t container;
1333 	enum ETrackedDeviceProperty prop;
1334 } VREvent_Property_t;
1335 
1336 typedef struct HiddenAreaMesh_t
1337 {
1338 	struct HmdVector2_t *pVertexData;  // const struct vr::HmdVector2_t *
1339 	uint32_t unTriangleCount;
1340 } HiddenAreaMesh_t;
1341 
1342 typedef struct VRControllerAxis_t
1343 {
1344 	float x;
1345 	float y;
1346 } VRControllerAxis_t;
1347 
1348 typedef struct VRControllerState_t
1349 {
1350 	uint32_t unPacketNum;
1351 	uint64_t ulButtonPressed;
1352 	uint64_t ulButtonTouched;
1353 	struct VRControllerAxis_t rAxis[5];  //struct vr::VRControllerAxis_t[5]
1354 } VRControllerState_t;
1355 
1356 typedef struct Compositor_OverlaySettings
1357 {
1358 	uint32_t size;
1359 	bool curved;
1360 	bool antialias;
1361 	float scale;
1362 	float distance;
1363 	float alpha;
1364 	float uOffset;
1365 	float vOffset;
1366 	float uScale;
1367 	float vScale;
1368 	float gridDivs;
1369 	float gridWidth;
1370 	float gridScale;
1371 	struct HmdMatrix44_t transform;
1372 } Compositor_OverlaySettings;
1373 
1374 typedef struct CameraVideoStreamFrameHeader_t
1375 {
1376 	enum EVRTrackedCameraFrameType eFrameType;
1377 	uint32_t nWidth;
1378 	uint32_t nHeight;
1379 	uint32_t nBytesPerPixel;
1380 	uint32_t nFrameSequence;
1381 	struct TrackedDevicePose_t standingTrackedDevicePose;
1382 } CameraVideoStreamFrameHeader_t;
1383 
1384 typedef struct AppOverrideKeys_t
1385 {
1386 	char *pchKey;    // const char *
1387 	char *pchValue;  // const char *
1388 } AppOverrideKeys_t;
1389 
1390 typedef struct Compositor_FrameTiming
1391 {
1392 	uint32_t m_nSize;
1393 	uint32_t m_nFrameIndex;
1394 	uint32_t m_nNumFramePresents;
1395 	uint32_t m_nNumMisPresented;
1396 	uint32_t m_nNumDroppedFrames;
1397 	uint32_t m_nReprojectionFlags;
1398 	double m_flSystemTimeInSeconds;
1399 	float m_flPreSubmitGpuMs;
1400 	float m_flPostSubmitGpuMs;
1401 	float m_flTotalRenderGpuMs;
1402 	float m_flCompositorRenderGpuMs;
1403 	float m_flCompositorRenderCpuMs;
1404 	float m_flCompositorIdleCpuMs;
1405 	float m_flClientFrameIntervalMs;
1406 	float m_flPresentCallCpuMs;
1407 	float m_flWaitForPresentCpuMs;
1408 	float m_flSubmitFrameMs;
1409 	float m_flWaitGetPosesCalledMs;
1410 	float m_flNewPosesReadyMs;
1411 	float m_flNewFrameReadyMs;
1412 	float m_flCompositorUpdateStartMs;
1413 	float m_flCompositorUpdateEndMs;
1414 	float m_flCompositorRenderStartMs;
1415 	TrackedDevicePose_t m_HmdPose;
1416 } Compositor_FrameTiming;
1417 
1418 typedef struct Compositor_CumulativeStats
1419 {
1420 	uint32_t m_nPid;
1421 	uint32_t m_nNumFramePresents;
1422 	uint32_t m_nNumDroppedFrames;
1423 	uint32_t m_nNumReprojectedFrames;
1424 	uint32_t m_nNumFramePresentsOnStartup;
1425 	uint32_t m_nNumDroppedFramesOnStartup;
1426 	uint32_t m_nNumReprojectedFramesOnStartup;
1427 	uint32_t m_nNumLoading;
1428 	uint32_t m_nNumFramePresentsLoading;
1429 	uint32_t m_nNumDroppedFramesLoading;
1430 	uint32_t m_nNumReprojectedFramesLoading;
1431 	uint32_t m_nNumTimedOut;
1432 	uint32_t m_nNumFramePresentsTimedOut;
1433 	uint32_t m_nNumDroppedFramesTimedOut;
1434 	uint32_t m_nNumReprojectedFramesTimedOut;
1435 } Compositor_CumulativeStats;
1436 
1437 typedef struct VROverlayIntersectionParams_t
1438 {
1439 	struct HmdVector3_t vSource;
1440 	struct HmdVector3_t vDirection;
1441 	enum ETrackingUniverseOrigin eOrigin;
1442 } VROverlayIntersectionParams_t;
1443 
1444 typedef struct VROverlayIntersectionResults_t
1445 {
1446 	struct HmdVector3_t vPoint;
1447 	struct HmdVector3_t vNormal;
1448 	struct HmdVector2_t vUVs;
1449 	float fDistance;
1450 } VROverlayIntersectionResults_t;
1451 
1452 typedef struct IntersectionMaskRectangle_t
1453 {
1454 	float m_flTopLeftX;
1455 	float m_flTopLeftY;
1456 	float m_flWidth;
1457 	float m_flHeight;
1458 } IntersectionMaskRectangle_t;
1459 
1460 typedef struct IntersectionMaskCircle_t
1461 {
1462 	float m_flCenterX;
1463 	float m_flCenterY;
1464 	float m_flRadius;
1465 } IntersectionMaskCircle_t;
1466 
1467 typedef struct RenderModel_ComponentState_t
1468 {
1469 	struct HmdMatrix34_t mTrackingToComponentRenderModel;
1470 	struct HmdMatrix34_t mTrackingToComponentLocal;
1471 	VRComponentProperties uProperties;
1472 } RenderModel_ComponentState_t;
1473 
1474 typedef struct RenderModel_Vertex_t
1475 {
1476 	struct HmdVector3_t vPosition;
1477 	struct HmdVector3_t vNormal;
1478 	float rfTextureCoord[2];  //float[2]
1479 } RenderModel_Vertex_t;
1480 
1481 #if defined(__linux__) || defined(__APPLE__)
1482 #pragma pack(push, 4)
1483 #endif
1484 typedef struct RenderModel_TextureMap_t
1485 {
1486 	uint16_t unWidth;
1487 	uint16_t unHeight;
1488 	uint8_t *rubTextureMapData;  // const uint8_t *
1489 } RenderModel_TextureMap_t;
1490 
1491 #if defined(__linux__) || defined(__APPLE__)
1492 #pragma pack(pop)
1493 #endif
1494 #if defined(__linux__) || defined(__APPLE__)
1495 #pragma pack(push, 4)
1496 #endif
1497 typedef struct RenderModel_t
1498 {
1499 	struct RenderModel_Vertex_t *rVertexData;  // const struct vr::RenderModel_Vertex_t *
1500 	uint32_t unVertexCount;
1501 	uint16_t *rIndexData;  // const uint16_t *
1502 	uint32_t unTriangleCount;
1503 	TextureID_t diffuseTextureId;
1504 } RenderModel_t;
1505 
1506 #if defined(__linux__) || defined(__APPLE__)
1507 #pragma pack(pop)
1508 #endif
1509 typedef struct RenderModel_ControllerMode_State_t
1510 {
1511 	bool bScrollWheelVisible;
1512 } RenderModel_ControllerMode_State_t;
1513 
1514 typedef struct NotificationBitmap_t
1515 {
1516 	void *m_pImageData;  // void *
1517 	int32_t m_nWidth;
1518 	int32_t m_nHeight;
1519 	int32_t m_nBytesPerPixel;
1520 } NotificationBitmap_t;
1521 
1522 typedef struct COpenVRContext
1523 {
1524 	intptr_t m_pVRSystem;           // class vr::IVRSystem *
1525 	intptr_t m_pVRChaperone;        // class vr::IVRChaperone *
1526 	intptr_t m_pVRChaperoneSetup;   // class vr::IVRChaperoneSetup *
1527 	intptr_t m_pVRCompositor;       // class vr::IVRCompositor *
1528 	intptr_t m_pVROverlay;          // class vr::IVROverlay *
1529 	intptr_t m_pVRResources;        // class vr::IVRResources *
1530 	intptr_t m_pVRRenderModels;     // class vr::IVRRenderModels *
1531 	intptr_t m_pVRExtendedDisplay;  // class vr::IVRExtendedDisplay *
1532 	intptr_t m_pVRSettings;         // class vr::IVRSettings *
1533 	intptr_t m_pVRApplications;     // class vr::IVRApplications *
1534 	intptr_t m_pVRTrackedCamera;    // class vr::IVRTrackedCamera *
1535 	intptr_t m_pVRScreenshots;      // class vr::IVRScreenshots *
1536 	intptr_t m_pVRDriverManager;    // class vr::IVRDriverManager *
1537 } COpenVRContext;
1538 
1539 typedef union {
1540 	VREvent_Reserved_t reserved;
1541 	VREvent_Controller_t controller;
1542 	VREvent_Mouse_t mouse;
1543 	VREvent_Scroll_t scroll;
1544 	VREvent_Process_t process;
1545 	VREvent_Notification_t notification;
1546 	VREvent_Overlay_t overlay;
1547 	VREvent_Status_t status;
1548 	VREvent_Keyboard_t keyboard;
1549 	VREvent_Ipd_t ipd;
1550 	VREvent_Chaperone_t chaperone;
1551 	VREvent_PerformanceTest_t performanceTest;
1552 	VREvent_TouchPadMove_t touchPadMove;
1553 	VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset;
1554 } VREvent_Data_t;
1555 
1556 /** An event posted by the server to all running applications */
1557 struct VREvent_t
1558 {
1559 	uint32_t eventType;  // EVREventType enum
1560 	TrackedDeviceIndex_t trackedDeviceIndex;
1561 	float eventAgeSeconds;
1562 	// event data must be the end of the struct as its size is variable
1563 	VREvent_Data_t data;
1564 };
1565 
1566 typedef union {
1567 	IntersectionMaskRectangle_t m_Rectangle;
1568 	IntersectionMaskCircle_t m_Circle;
1569 } VROverlayIntersectionMaskPrimitive_Data_t;
1570 
1571 struct VROverlayIntersectionMaskPrimitive_t
1572 {
1573 	EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType;
1574 	VROverlayIntersectionMaskPrimitive_Data_t m_Primitive;
1575 };
1576 
1577 // OpenVR Function Pointer Tables
1578 
1579 struct VR_IVRSystem_FnTable
1580 {
1581 	void(OPENVR_FNTABLE_CALLTYPE *GetRecommendedRenderTargetSize)(uint32_t *pnWidth, uint32_t *pnHeight);
1582 	struct HmdMatrix44_t(OPENVR_FNTABLE_CALLTYPE *GetProjectionMatrix)(EVREye eEye, float fNearZ, float fFarZ);
1583 	void(OPENVR_FNTABLE_CALLTYPE *GetProjectionRaw)(EVREye eEye, float *pfLeft, float *pfRight, float *pfTop, float *pfBottom);
1584 	bool(OPENVR_FNTABLE_CALLTYPE *ComputeDistortion)(EVREye eEye, float fU, float fV, struct DistortionCoordinates_t *pDistortionCoordinates);
1585 	struct HmdMatrix34_t(OPENVR_FNTABLE_CALLTYPE *GetEyeToHeadTransform)(EVREye eEye);
1586 	bool(OPENVR_FNTABLE_CALLTYPE *GetTimeSinceLastVsync)(float *pfSecondsSinceLastVsync, uint64_t *pulFrameCounter);
1587 	int32_t(OPENVR_FNTABLE_CALLTYPE *GetD3D9AdapterIndex)();
1588 	void(OPENVR_FNTABLE_CALLTYPE *GetDXGIOutputInfo)(int32_t *pnAdapterIndex);
1589 	void(OPENVR_FNTABLE_CALLTYPE *GetOutputDevice)(uint64_t *pnDevice, ETextureType textureType, struct VkInstance_T *pInstance);
1590 	bool(OPENVR_FNTABLE_CALLTYPE *IsDisplayOnDesktop)();
1591 	bool(OPENVR_FNTABLE_CALLTYPE *SetDisplayVisibility)(bool bIsVisibleOnDesktop);
1592 	void(OPENVR_FNTABLE_CALLTYPE *GetDeviceToAbsoluteTrackingPose)(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, struct TrackedDevicePose_t *pTrackedDevicePoseArray, uint32_t unTrackedDevicePoseArrayCount);
1593 	void(OPENVR_FNTABLE_CALLTYPE *ResetSeatedZeroPose)();
1594 	struct HmdMatrix34_t(OPENVR_FNTABLE_CALLTYPE *GetSeatedZeroPoseToStandingAbsoluteTrackingPose)();
1595 	struct HmdMatrix34_t(OPENVR_FNTABLE_CALLTYPE *GetRawZeroPoseToStandingAbsoluteTrackingPose)();
1596 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetSortedTrackedDeviceIndicesOfClass)(ETrackedDeviceClass eTrackedDeviceClass, TrackedDeviceIndex_t *punTrackedDeviceIndexArray, uint32_t unTrackedDeviceIndexArrayCount, TrackedDeviceIndex_t unRelativeToTrackedDeviceIndex);
1597 	EDeviceActivityLevel(OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceActivityLevel)(TrackedDeviceIndex_t unDeviceId);
1598 	void(OPENVR_FNTABLE_CALLTYPE *ApplyTransform)(struct TrackedDevicePose_t *pOutputPose, struct TrackedDevicePose_t *pTrackedDevicePose, struct HmdMatrix34_t *pTransform);
1599 	TrackedDeviceIndex_t(OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceIndexForControllerRole)(ETrackedControllerRole unDeviceType);
1600 	ETrackedControllerRole(OPENVR_FNTABLE_CALLTYPE *GetControllerRoleForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex);
1601 	ETrackedDeviceClass(OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceClass)(TrackedDeviceIndex_t unDeviceIndex);
1602 	bool(OPENVR_FNTABLE_CALLTYPE *IsTrackedDeviceConnected)(TrackedDeviceIndex_t unDeviceIndex);
1603 	bool(OPENVR_FNTABLE_CALLTYPE *GetBoolTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError);
1604 	float(OPENVR_FNTABLE_CALLTYPE *GetFloatTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError);
1605 	int32_t(OPENVR_FNTABLE_CALLTYPE *GetInt32TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError);
1606 	uint64_t(OPENVR_FNTABLE_CALLTYPE *GetUint64TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError);
1607 	struct HmdMatrix34_t(OPENVR_FNTABLE_CALLTYPE *GetMatrix34TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError);
1608 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetStringTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char *pchValue, uint32_t unBufferSize, ETrackedPropertyError *pError);
1609 	char *(OPENVR_FNTABLE_CALLTYPE *GetPropErrorNameFromEnum)(ETrackedPropertyError error);
1610 	bool(OPENVR_FNTABLE_CALLTYPE *PollNextEvent)(struct VREvent_t *pEvent, uint32_t uncbVREvent);
1611 	bool(OPENVR_FNTABLE_CALLTYPE *PollNextEventWithPose)(ETrackingUniverseOrigin eOrigin, struct VREvent_t *pEvent, uint32_t uncbVREvent, TrackedDevicePose_t *pTrackedDevicePose);
1612 	char *(OPENVR_FNTABLE_CALLTYPE *GetEventTypeNameFromEnum)(EVREventType eType);
1613 	struct HiddenAreaMesh_t(OPENVR_FNTABLE_CALLTYPE *GetHiddenAreaMesh)(EVREye eEye, EHiddenAreaMeshType type);
1614 	bool(OPENVR_FNTABLE_CALLTYPE *GetControllerState)(TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t *pControllerState, uint32_t unControllerStateSize);
1615 	bool(OPENVR_FNTABLE_CALLTYPE *GetControllerStateWithPose)(ETrackingUniverseOrigin eOrigin, TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t *pControllerState, uint32_t unControllerStateSize, struct TrackedDevicePose_t *pTrackedDevicePose);
1616 	void(OPENVR_FNTABLE_CALLTYPE *TriggerHapticPulse)(TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec);
1617 	char *(OPENVR_FNTABLE_CALLTYPE *GetButtonIdNameFromEnum)(EVRButtonId eButtonId);
1618 	char *(OPENVR_FNTABLE_CALLTYPE *GetControllerAxisTypeNameFromEnum)(EVRControllerAxisType eAxisType);
1619 	bool(OPENVR_FNTABLE_CALLTYPE *CaptureInputFocus)();
1620 	void(OPENVR_FNTABLE_CALLTYPE *ReleaseInputFocus)();
1621 	bool(OPENVR_FNTABLE_CALLTYPE *IsInputFocusCapturedByAnotherProcess)();
1622 	uint32_t(OPENVR_FNTABLE_CALLTYPE *DriverDebugRequest)(TrackedDeviceIndex_t unDeviceIndex, char *pchRequest, char *pchResponseBuffer, uint32_t unResponseBufferSize);
1623 	EVRFirmwareError(OPENVR_FNTABLE_CALLTYPE *PerformFirmwareUpdate)(TrackedDeviceIndex_t unDeviceIndex);
1624 	void(OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_Exiting)();
1625 	void(OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_UserPrompt)();
1626 };
1627 
1628 struct VR_IVRExtendedDisplay_FnTable
1629 {
1630 	void(OPENVR_FNTABLE_CALLTYPE *GetWindowBounds)(int32_t *pnX, int32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight);
1631 	void(OPENVR_FNTABLE_CALLTYPE *GetEyeOutputViewport)(EVREye eEye, uint32_t *pnX, uint32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight);
1632 	void(OPENVR_FNTABLE_CALLTYPE *GetDXGIOutputInfo)(int32_t *pnAdapterIndex, int32_t *pnAdapterOutputIndex);
1633 };
1634 
1635 struct VR_IVRTrackedCamera_FnTable
1636 {
1637 	char *(OPENVR_FNTABLE_CALLTYPE *GetCameraErrorNameFromEnum)(EVRTrackedCameraError eCameraError);
1638 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *HasCamera)(TrackedDeviceIndex_t nDeviceIndex, bool *pHasCamera);
1639 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetCameraFrameSize)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, uint32_t *pnWidth, uint32_t *pnHeight, uint32_t *pnFrameBufferSize);
1640 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetCameraIntrinsics)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, HmdVector2_t *pFocalLength, HmdVector2_t *pCenter);
1641 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetCameraProjection)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, HmdMatrix44_t *pProjection);
1642 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *AcquireVideoStreamingService)(TrackedDeviceIndex_t nDeviceIndex, TrackedCameraHandle_t *pHandle);
1643 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *ReleaseVideoStreamingService)(TrackedCameraHandle_t hTrackedCamera);
1644 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetVideoStreamFrameBuffer)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void *pFrameBuffer, uint32_t nFrameBufferSize, CameraVideoStreamFrameHeader_t *pFrameHeader, uint32_t nFrameHeaderSize);
1645 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureSize)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, VRTextureBounds_t *pTextureBounds, uint32_t *pnWidth, uint32_t *pnHeight);
1646 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureD3D11)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void *pD3D11DeviceOrResource, void **ppD3D11ShaderResourceView, CameraVideoStreamFrameHeader_t *pFrameHeader, uint32_t nFrameHeaderSize);
1647 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureGL)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, glUInt_t *pglTextureId, CameraVideoStreamFrameHeader_t *pFrameHeader, uint32_t nFrameHeaderSize);
1648 	EVRTrackedCameraError(OPENVR_FNTABLE_CALLTYPE *ReleaseVideoStreamTextureGL)(TrackedCameraHandle_t hTrackedCamera, glUInt_t glTextureId);
1649 };
1650 
1651 struct VR_IVRApplications_FnTable
1652 {
1653 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *AddApplicationManifest)(char *pchApplicationManifestFullPath, bool bTemporary);
1654 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *RemoveApplicationManifest)(char *pchApplicationManifestFullPath);
1655 	bool(OPENVR_FNTABLE_CALLTYPE *IsApplicationInstalled)(char *pchAppKey);
1656 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetApplicationCount)();
1657 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *GetApplicationKeyByIndex)(uint32_t unApplicationIndex, char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen);
1658 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *GetApplicationKeyByProcessId)(uint32_t unProcessId, char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen);
1659 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *LaunchApplication)(char *pchAppKey);
1660 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *LaunchTemplateApplication)(char *pchTemplateAppKey, char *pchNewAppKey, struct AppOverrideKeys_t *pKeys, uint32_t unKeys);
1661 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *LaunchApplicationFromMimeType)(char *pchMimeType, char *pchArgs);
1662 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *LaunchDashboardOverlay)(char *pchAppKey);
1663 	bool(OPENVR_FNTABLE_CALLTYPE *CancelApplicationLaunch)(char *pchAppKey);
1664 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *IdentifyApplication)(uint32_t unProcessId, char *pchAppKey);
1665 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetApplicationProcessId)(char *pchAppKey);
1666 	char *(OPENVR_FNTABLE_CALLTYPE *GetApplicationsErrorNameFromEnum)(EVRApplicationError error);
1667 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyString)(char *pchAppKey, EVRApplicationProperty eProperty, char *pchPropertyValueBuffer, uint32_t unPropertyValueBufferLen, EVRApplicationError *peError);
1668 	bool(OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyBool)(char *pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError *peError);
1669 	uint64_t(OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyUint64)(char *pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError *peError);
1670 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *SetApplicationAutoLaunch)(char *pchAppKey, bool bAutoLaunch);
1671 	bool(OPENVR_FNTABLE_CALLTYPE *GetApplicationAutoLaunch)(char *pchAppKey);
1672 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *SetDefaultApplicationForMimeType)(char *pchAppKey, char *pchMimeType);
1673 	bool(OPENVR_FNTABLE_CALLTYPE *GetDefaultApplicationForMimeType)(char *pchMimeType, char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen);
1674 	bool(OPENVR_FNTABLE_CALLTYPE *GetApplicationSupportedMimeTypes)(char *pchAppKey, char *pchMimeTypesBuffer, uint32_t unMimeTypesBuffer);
1675 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetApplicationsThatSupportMimeType)(char *pchMimeType, char *pchAppKeysThatSupportBuffer, uint32_t unAppKeysThatSupportBuffer);
1676 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetApplicationLaunchArguments)(uint32_t unHandle, char *pchArgs, uint32_t unArgs);
1677 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *GetStartingApplication)(char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen);
1678 	EVRApplicationTransitionState(OPENVR_FNTABLE_CALLTYPE *GetTransitionState)();
1679 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *PerformApplicationPrelaunchCheck)(char *pchAppKey);
1680 	char *(OPENVR_FNTABLE_CALLTYPE *GetApplicationsTransitionStateNameFromEnum)(EVRApplicationTransitionState state);
1681 	bool(OPENVR_FNTABLE_CALLTYPE *IsQuitUserPromptRequested)();
1682 	EVRApplicationError(OPENVR_FNTABLE_CALLTYPE *LaunchInternalProcess)(char *pchBinaryPath, char *pchArguments, char *pchWorkingDirectory);
1683 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetCurrentSceneProcessId)();
1684 };
1685 
1686 struct VR_IVRChaperone_FnTable
1687 {
1688 	ChaperoneCalibrationState(OPENVR_FNTABLE_CALLTYPE *GetCalibrationState)();
1689 	bool(OPENVR_FNTABLE_CALLTYPE *GetPlayAreaSize)(float *pSizeX, float *pSizeZ);
1690 	bool(OPENVR_FNTABLE_CALLTYPE *GetPlayAreaRect)(struct HmdQuad_t *rect);
1691 	void(OPENVR_FNTABLE_CALLTYPE *ReloadInfo)();
1692 	void(OPENVR_FNTABLE_CALLTYPE *SetSceneColor)(struct HmdColor_t color);
1693 	void(OPENVR_FNTABLE_CALLTYPE *GetBoundsColor)(struct HmdColor_t *pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, struct HmdColor_t *pOutputCameraColor);
1694 	bool(OPENVR_FNTABLE_CALLTYPE *AreBoundsVisible)();
1695 	void(OPENVR_FNTABLE_CALLTYPE *ForceBoundsVisible)(bool bForce);
1696 };
1697 
1698 struct VR_IVRChaperoneSetup_FnTable
1699 {
1700 	bool(OPENVR_FNTABLE_CALLTYPE *CommitWorkingCopy)(EChaperoneConfigFile configFile);
1701 	void(OPENVR_FNTABLE_CALLTYPE *RevertWorkingCopy)();
1702 	bool(OPENVR_FNTABLE_CALLTYPE *GetWorkingPlayAreaSize)(float *pSizeX, float *pSizeZ);
1703 	bool(OPENVR_FNTABLE_CALLTYPE *GetWorkingPlayAreaRect)(struct HmdQuad_t *rect);
1704 	bool(OPENVR_FNTABLE_CALLTYPE *GetWorkingCollisionBoundsInfo)(struct HmdQuad_t *pQuadsBuffer, uint32_t *punQuadsCount);
1705 	bool(OPENVR_FNTABLE_CALLTYPE *GetLiveCollisionBoundsInfo)(struct HmdQuad_t *pQuadsBuffer, uint32_t *punQuadsCount);
1706 	bool(OPENVR_FNTABLE_CALLTYPE *GetWorkingSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t *pmatSeatedZeroPoseToRawTrackingPose);
1707 	bool(OPENVR_FNTABLE_CALLTYPE *GetWorkingStandingZeroPoseToRawTrackingPose)(struct HmdMatrix34_t *pmatStandingZeroPoseToRawTrackingPose);
1708 	void(OPENVR_FNTABLE_CALLTYPE *SetWorkingPlayAreaSize)(float sizeX, float sizeZ);
1709 	void(OPENVR_FNTABLE_CALLTYPE *SetWorkingCollisionBoundsInfo)(struct HmdQuad_t *pQuadsBuffer, uint32_t unQuadsCount);
1710 	void(OPENVR_FNTABLE_CALLTYPE *SetWorkingSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t *pMatSeatedZeroPoseToRawTrackingPose);
1711 	void(OPENVR_FNTABLE_CALLTYPE *SetWorkingStandingZeroPoseToRawTrackingPose)(struct HmdMatrix34_t *pMatStandingZeroPoseToRawTrackingPose);
1712 	void(OPENVR_FNTABLE_CALLTYPE *ReloadFromDisk)(EChaperoneConfigFile configFile);
1713 	bool(OPENVR_FNTABLE_CALLTYPE *GetLiveSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t *pmatSeatedZeroPoseToRawTrackingPose);
1714 	void(OPENVR_FNTABLE_CALLTYPE *SetWorkingCollisionBoundsTagsInfo)(uint8_t *pTagsBuffer, uint32_t unTagCount);
1715 	bool(OPENVR_FNTABLE_CALLTYPE *GetLiveCollisionBoundsTagsInfo)(uint8_t *pTagsBuffer, uint32_t *punTagCount);
1716 	bool(OPENVR_FNTABLE_CALLTYPE *SetWorkingPhysicalBoundsInfo)(struct HmdQuad_t *pQuadsBuffer, uint32_t unQuadsCount);
1717 	bool(OPENVR_FNTABLE_CALLTYPE *GetLivePhysicalBoundsInfo)(struct HmdQuad_t *pQuadsBuffer, uint32_t *punQuadsCount);
1718 	bool(OPENVR_FNTABLE_CALLTYPE *ExportLiveToBuffer)(char *pBuffer, uint32_t *pnBufferLength);
1719 	bool(OPENVR_FNTABLE_CALLTYPE *ImportFromBufferToWorking)(char *pBuffer, uint32_t nImportFlags);
1720 };
1721 
1722 struct VR_IVRCompositor_FnTable
1723 {
1724 	void(OPENVR_FNTABLE_CALLTYPE *SetTrackingSpace)(ETrackingUniverseOrigin eOrigin);
1725 	ETrackingUniverseOrigin(OPENVR_FNTABLE_CALLTYPE *GetTrackingSpace)();
1726 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *WaitGetPoses)(struct TrackedDevicePose_t *pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t *pGamePoseArray, uint32_t unGamePoseArrayCount);
1727 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *GetLastPoses)(struct TrackedDevicePose_t *pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t *pGamePoseArray, uint32_t unGamePoseArrayCount);
1728 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *GetLastPoseForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex, struct TrackedDevicePose_t *pOutputPose, struct TrackedDevicePose_t *pOutputGamePose);
1729 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *Submit)(EVREye eEye, struct Texture_t *pTexture, struct VRTextureBounds_t *pBounds, EVRSubmitFlags nSubmitFlags);
1730 	void(OPENVR_FNTABLE_CALLTYPE *ClearLastSubmittedFrame)();
1731 	void(OPENVR_FNTABLE_CALLTYPE *PostPresentHandoff)();
1732 	bool(OPENVR_FNTABLE_CALLTYPE *GetFrameTiming)(struct Compositor_FrameTiming *pTiming, uint32_t unFramesAgo);
1733 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetFrameTimings)(struct Compositor_FrameTiming *pTiming, uint32_t nFrames);
1734 	float(OPENVR_FNTABLE_CALLTYPE *GetFrameTimeRemaining)();
1735 	void(OPENVR_FNTABLE_CALLTYPE *GetCumulativeStats)(struct Compositor_CumulativeStats *pStats, uint32_t nStatsSizeInBytes);
1736 	void(OPENVR_FNTABLE_CALLTYPE *FadeToColor)(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground);
1737 	struct HmdColor_t(OPENVR_FNTABLE_CALLTYPE *GetCurrentFadeColor)(bool bBackground);
1738 	void(OPENVR_FNTABLE_CALLTYPE *FadeGrid)(float fSeconds, bool bFadeIn);
1739 	float(OPENVR_FNTABLE_CALLTYPE *GetCurrentGridAlpha)();
1740 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *SetSkyboxOverride)(struct Texture_t *pTextures, uint32_t unTextureCount);
1741 	void(OPENVR_FNTABLE_CALLTYPE *ClearSkyboxOverride)();
1742 	void(OPENVR_FNTABLE_CALLTYPE *CompositorBringToFront)();
1743 	void(OPENVR_FNTABLE_CALLTYPE *CompositorGoToBack)();
1744 	void(OPENVR_FNTABLE_CALLTYPE *CompositorQuit)();
1745 	bool(OPENVR_FNTABLE_CALLTYPE *IsFullscreen)();
1746 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetCurrentSceneFocusProcess)();
1747 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetLastFrameRenderer)();
1748 	bool(OPENVR_FNTABLE_CALLTYPE *CanRenderScene)();
1749 	void(OPENVR_FNTABLE_CALLTYPE *ShowMirrorWindow)();
1750 	void(OPENVR_FNTABLE_CALLTYPE *HideMirrorWindow)();
1751 	bool(OPENVR_FNTABLE_CALLTYPE *IsMirrorWindowVisible)();
1752 	void(OPENVR_FNTABLE_CALLTYPE *CompositorDumpImages)();
1753 	bool(OPENVR_FNTABLE_CALLTYPE *ShouldAppRenderWithLowResources)();
1754 	void(OPENVR_FNTABLE_CALLTYPE *ForceInterleavedReprojectionOn)(bool bOverride);
1755 	void(OPENVR_FNTABLE_CALLTYPE *ForceReconnectProcess)();
1756 	void(OPENVR_FNTABLE_CALLTYPE *SuspendRendering)(bool bSuspend);
1757 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *GetMirrorTextureD3D11)(EVREye eEye, void *pD3D11DeviceOrResource, void **ppD3D11ShaderResourceView);
1758 	void(OPENVR_FNTABLE_CALLTYPE *ReleaseMirrorTextureD3D11)(void *pD3D11ShaderResourceView);
1759 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *GetMirrorTextureGL)(EVREye eEye, glUInt_t *pglTextureId, glSharedTextureHandle_t *pglSharedTextureHandle);
1760 	bool(OPENVR_FNTABLE_CALLTYPE *ReleaseSharedGLTexture)(glUInt_t glTextureId, glSharedTextureHandle_t glSharedTextureHandle);
1761 	void(OPENVR_FNTABLE_CALLTYPE *LockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle);
1762 	void(OPENVR_FNTABLE_CALLTYPE *UnlockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle);
1763 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetVulkanInstanceExtensionsRequired)(char *pchValue, uint32_t unBufferSize);
1764 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetVulkanDeviceExtensionsRequired)(struct VkPhysicalDevice_T *pPhysicalDevice, char *pchValue, uint32_t unBufferSize);
1765 	void(OPENVR_FNTABLE_CALLTYPE *SetExplicitTimingMode)(bool bExplicitTimingMode);
1766 	EVRCompositorError(OPENVR_FNTABLE_CALLTYPE *SubmitExplicitTimingData)();
1767 };
1768 
1769 struct VR_IVROverlay_FnTable
1770 {
1771 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *FindOverlay)(char *pchOverlayKey, VROverlayHandle_t *pOverlayHandle);
1772 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *CreateOverlay)(char *pchOverlayKey, char *pchOverlayName, VROverlayHandle_t *pOverlayHandle);
1773 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *DestroyOverlay)(VROverlayHandle_t ulOverlayHandle);
1774 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetHighQualityOverlay)(VROverlayHandle_t ulOverlayHandle);
1775 	VROverlayHandle_t(OPENVR_FNTABLE_CALLTYPE *GetHighQualityOverlay)();
1776 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetOverlayKey)(VROverlayHandle_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, EVROverlayError *pError);
1777 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetOverlayName)(VROverlayHandle_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, EVROverlayError *pError);
1778 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayName)(VROverlayHandle_t ulOverlayHandle, char *pchName);
1779 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayImageData)(VROverlayHandle_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight);
1780 	char *(OPENVR_FNTABLE_CALLTYPE *GetOverlayErrorNameFromEnum)(EVROverlayError error);
1781 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayRenderingPid)(VROverlayHandle_t ulOverlayHandle, uint32_t unPID);
1782 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetOverlayRenderingPid)(VROverlayHandle_t ulOverlayHandle);
1783 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayFlag)(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled);
1784 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayFlag)(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool *pbEnabled);
1785 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayColor)(VROverlayHandle_t ulOverlayHandle, float fRed, float fGreen, float fBlue);
1786 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayColor)(VROverlayHandle_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue);
1787 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayAlpha)(VROverlayHandle_t ulOverlayHandle, float fAlpha);
1788 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayAlpha)(VROverlayHandle_t ulOverlayHandle, float *pfAlpha);
1789 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTexelAspect)(VROverlayHandle_t ulOverlayHandle, float fTexelAspect);
1790 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTexelAspect)(VROverlayHandle_t ulOverlayHandle, float *pfTexelAspect);
1791 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlaySortOrder)(VROverlayHandle_t ulOverlayHandle, uint32_t unSortOrder);
1792 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlaySortOrder)(VROverlayHandle_t ulOverlayHandle, uint32_t *punSortOrder);
1793 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayWidthInMeters)(VROverlayHandle_t ulOverlayHandle, float fWidthInMeters);
1794 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayWidthInMeters)(VROverlayHandle_t ulOverlayHandle, float *pfWidthInMeters);
1795 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayAutoCurveDistanceRangeInMeters)(VROverlayHandle_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters);
1796 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayAutoCurveDistanceRangeInMeters)(VROverlayHandle_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters);
1797 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTextureColorSpace)(VROverlayHandle_t ulOverlayHandle, EColorSpace eTextureColorSpace);
1798 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureColorSpace)(VROverlayHandle_t ulOverlayHandle, EColorSpace *peTextureColorSpace);
1799 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTextureBounds)(VROverlayHandle_t ulOverlayHandle, struct VRTextureBounds_t *pOverlayTextureBounds);
1800 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureBounds)(VROverlayHandle_t ulOverlayHandle, struct VRTextureBounds_t *pOverlayTextureBounds);
1801 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetOverlayRenderModel)(VROverlayHandle_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, struct HmdColor_t *pColor, EVROverlayError *pError);
1802 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayRenderModel)(VROverlayHandle_t ulOverlayHandle, char *pchRenderModel, struct HmdColor_t *pColor);
1803 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformType)(VROverlayHandle_t ulOverlayHandle, VROverlayTransformType *peTransformType);
1804 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformAbsolute)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t *pmatTrackingOriginToOverlayTransform);
1805 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformAbsolute)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin *peTrackingOrigin, struct HmdMatrix34_t *pmatTrackingOriginToOverlayTransform);
1806 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformTrackedDeviceRelative)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unTrackedDevice, struct HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform);
1807 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformTrackedDeviceRelative)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t *punTrackedDevice, struct HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform);
1808 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformTrackedDeviceComponent)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unDeviceIndex, char *pchComponentName);
1809 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformTrackedDeviceComponent)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize);
1810 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformOverlayRelative)(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t *ulOverlayHandleParent, struct HmdMatrix34_t *pmatParentOverlayToOverlayTransform);
1811 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformOverlayRelative)(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t ulOverlayHandleParent, struct HmdMatrix34_t *pmatParentOverlayToOverlayTransform);
1812 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *ShowOverlay)(VROverlayHandle_t ulOverlayHandle);
1813 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *HideOverlay)(VROverlayHandle_t ulOverlayHandle);
1814 	bool(OPENVR_FNTABLE_CALLTYPE *IsOverlayVisible)(VROverlayHandle_t ulOverlayHandle);
1815 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetTransformForOverlayCoordinates)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdVector2_t coordinatesInOverlay, struct HmdMatrix34_t *pmatTransform);
1816 	bool(OPENVR_FNTABLE_CALLTYPE *PollNextOverlayEvent)(VROverlayHandle_t ulOverlayHandle, struct VREvent_t *pEvent, uint32_t uncbVREvent);
1817 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayInputMethod)(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod *peInputMethod);
1818 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayInputMethod)(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod eInputMethod);
1819 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t *pvecMouseScale);
1820 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t *pvecMouseScale);
1821 	bool(OPENVR_FNTABLE_CALLTYPE *ComputeOverlayIntersection)(VROverlayHandle_t ulOverlayHandle, struct VROverlayIntersectionParams_t *pParams, struct VROverlayIntersectionResults_t *pResults);
1822 	bool(OPENVR_FNTABLE_CALLTYPE *HandleControllerOverlayInteractionAsMouse)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unControllerDeviceIndex);
1823 	bool(OPENVR_FNTABLE_CALLTYPE *IsHoverTargetOverlay)(VROverlayHandle_t ulOverlayHandle);
1824 	VROverlayHandle_t(OPENVR_FNTABLE_CALLTYPE *GetGamepadFocusOverlay)();
1825 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetGamepadFocusOverlay)(VROverlayHandle_t ulNewFocusOverlay);
1826 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayNeighbor)(EOverlayDirection eDirection, VROverlayHandle_t ulFrom, VROverlayHandle_t ulTo);
1827 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *MoveGamepadFocusToNeighbor)(EOverlayDirection eDirection, VROverlayHandle_t ulFrom);
1828 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, struct Texture_t *pTexture);
1829 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *ClearOverlayTexture)(VROverlayHandle_t ulOverlayHandle);
1830 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayRaw)(VROverlayHandle_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth);
1831 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayFromFile)(VROverlayHandle_t ulOverlayHandle, char *pchFilePath);
1832 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, ETextureType *pAPIType, EColorSpace *pColorSpace, struct VRTextureBounds_t *pTextureBounds);
1833 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *ReleaseNativeOverlayHandle)(VROverlayHandle_t ulOverlayHandle, void *pNativeTextureHandle);
1834 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureSize)(VROverlayHandle_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight);
1835 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *CreateDashboardOverlay)(char *pchOverlayKey, char *pchOverlayFriendlyName, VROverlayHandle_t *pMainHandle, VROverlayHandle_t *pThumbnailHandle);
1836 	bool(OPENVR_FNTABLE_CALLTYPE *IsDashboardVisible)();
1837 	bool(OPENVR_FNTABLE_CALLTYPE *IsActiveDashboardOverlay)(VROverlayHandle_t ulOverlayHandle);
1838 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetDashboardOverlaySceneProcess)(VROverlayHandle_t ulOverlayHandle, uint32_t unProcessId);
1839 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetDashboardOverlaySceneProcess)(VROverlayHandle_t ulOverlayHandle, uint32_t *punProcessId);
1840 	void(OPENVR_FNTABLE_CALLTYPE *ShowDashboard)(char *pchOverlayToShow);
1841 	TrackedDeviceIndex_t(OPENVR_FNTABLE_CALLTYPE *GetPrimaryDashboardDevice)();
1842 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *ShowKeyboard)(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, char *pchDescription, uint32_t unCharMax, char *pchExistingText, bool bUseMinimalMode, uint64_t uUserValue);
1843 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *ShowKeyboardForOverlay)(VROverlayHandle_t ulOverlayHandle, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, char *pchDescription, uint32_t unCharMax, char *pchExistingText, bool bUseMinimalMode, uint64_t uUserValue);
1844 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetKeyboardText)(char *pchText, uint32_t cchText);
1845 	void(OPENVR_FNTABLE_CALLTYPE *HideKeyboard)();
1846 	void(OPENVR_FNTABLE_CALLTYPE *SetKeyboardTransformAbsolute)(ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform);
1847 	void(OPENVR_FNTABLE_CALLTYPE *SetKeyboardPositionForOverlay)(VROverlayHandle_t ulOverlayHandle, struct HmdRect2_t avoidRect);
1848 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *SetOverlayIntersectionMask)(VROverlayHandle_t ulOverlayHandle, struct VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize);
1849 	EVROverlayError(OPENVR_FNTABLE_CALLTYPE *GetOverlayFlags)(VROverlayHandle_t ulOverlayHandle, uint32_t *pFlags);
1850 	VRMessageOverlayResponse(OPENVR_FNTABLE_CALLTYPE *ShowMessageOverlay)(char *pchText, char *pchCaption, char *pchButton0Text, char *pchButton1Text, char *pchButton2Text, char *pchButton3Text);
1851 	void(OPENVR_FNTABLE_CALLTYPE *CloseMessageOverlay)();
1852 };
1853 
1854 struct VR_IVRRenderModels_FnTable
1855 {
1856 	EVRRenderModelError(OPENVR_FNTABLE_CALLTYPE *LoadRenderModel_Async)(char *pchRenderModelName, struct RenderModel_t **ppRenderModel);
1857 	void(OPENVR_FNTABLE_CALLTYPE *FreeRenderModel)(struct RenderModel_t *pRenderModel);
1858 	EVRRenderModelError(OPENVR_FNTABLE_CALLTYPE *LoadTexture_Async)(TextureID_t textureId, struct RenderModel_TextureMap_t **ppTexture);
1859 	void(OPENVR_FNTABLE_CALLTYPE *FreeTexture)(struct RenderModel_TextureMap_t *pTexture);
1860 	EVRRenderModelError(OPENVR_FNTABLE_CALLTYPE *LoadTextureD3D11_Async)(TextureID_t textureId, void *pD3D11Device, void **ppD3D11Texture2D);
1861 	EVRRenderModelError(OPENVR_FNTABLE_CALLTYPE *LoadIntoTextureD3D11_Async)(TextureID_t textureId, void *pDstTexture);
1862 	void(OPENVR_FNTABLE_CALLTYPE *FreeTextureD3D11)(void *pD3D11Texture2D);
1863 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetRenderModelName)(uint32_t unRenderModelIndex, char *pchRenderModelName, uint32_t unRenderModelNameLen);
1864 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetRenderModelCount)();
1865 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetComponentCount)(char *pchRenderModelName);
1866 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetComponentName)(char *pchRenderModelName, uint32_t unComponentIndex, char *pchComponentName, uint32_t unComponentNameLen);
1867 	uint64_t(OPENVR_FNTABLE_CALLTYPE *GetComponentButtonMask)(char *pchRenderModelName, char *pchComponentName);
1868 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetComponentRenderModelName)(char *pchRenderModelName, char *pchComponentName, char *pchComponentRenderModelName, uint32_t unComponentRenderModelNameLen);
1869 	bool(OPENVR_FNTABLE_CALLTYPE *GetComponentState)(char *pchRenderModelName, char *pchComponentName, VRControllerState_t *pControllerState, struct RenderModel_ControllerMode_State_t *pState, struct RenderModel_ComponentState_t *pComponentState);
1870 	bool(OPENVR_FNTABLE_CALLTYPE *RenderModelHasComponent)(char *pchRenderModelName, char *pchComponentName);
1871 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetRenderModelThumbnailURL)(char *pchRenderModelName, char *pchThumbnailURL, uint32_t unThumbnailURLLen, EVRRenderModelError *peError);
1872 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetRenderModelOriginalPath)(char *pchRenderModelName, char *pchOriginalPath, uint32_t unOriginalPathLen, EVRRenderModelError *peError);
1873 	char *(OPENVR_FNTABLE_CALLTYPE *GetRenderModelErrorNameFromEnum)(EVRRenderModelError error);
1874 };
1875 
1876 struct VR_IVRNotifications_FnTable
1877 {
1878 	EVRNotificationError(OPENVR_FNTABLE_CALLTYPE *CreateNotification)(VROverlayHandle_t ulOverlayHandle, uint64_t ulUserValue, EVRNotificationType type, char *pchText, EVRNotificationStyle style, struct NotificationBitmap_t *pImage, VRNotificationId *pNotificationId);
1879 	EVRNotificationError(OPENVR_FNTABLE_CALLTYPE *RemoveNotification)(VRNotificationId notificationId);
1880 };
1881 
1882 struct VR_IVRSettings_FnTable
1883 {
1884 	char *(OPENVR_FNTABLE_CALLTYPE *GetSettingsErrorNameFromEnum)(EVRSettingsError eError);
1885 	bool(OPENVR_FNTABLE_CALLTYPE *Sync)(bool bForce, EVRSettingsError *peError);
1886 	void(OPENVR_FNTABLE_CALLTYPE *SetBool)(char *pchSection, char *pchSettingsKey, bool bValue, EVRSettingsError *peError);
1887 	void(OPENVR_FNTABLE_CALLTYPE *SetInt32)(char *pchSection, char *pchSettingsKey, int32_t nValue, EVRSettingsError *peError);
1888 	void(OPENVR_FNTABLE_CALLTYPE *SetFloat)(char *pchSection, char *pchSettingsKey, float flValue, EVRSettingsError *peError);
1889 	void(OPENVR_FNTABLE_CALLTYPE *SetString)(char *pchSection, char *pchSettingsKey, char *pchValue, EVRSettingsError *peError);
1890 	bool(OPENVR_FNTABLE_CALLTYPE *GetBool)(char *pchSection, char *pchSettingsKey, EVRSettingsError *peError);
1891 	int32_t(OPENVR_FNTABLE_CALLTYPE *GetInt32)(char *pchSection, char *pchSettingsKey, EVRSettingsError *peError);
1892 	float(OPENVR_FNTABLE_CALLTYPE *GetFloat)(char *pchSection, char *pchSettingsKey, EVRSettingsError *peError);
1893 	void(OPENVR_FNTABLE_CALLTYPE *GetString)(char *pchSection, char *pchSettingsKey, char *pchValue, uint32_t unValueLen, EVRSettingsError *peError);
1894 	void(OPENVR_FNTABLE_CALLTYPE *RemoveSection)(char *pchSection, EVRSettingsError *peError);
1895 	void(OPENVR_FNTABLE_CALLTYPE *RemoveKeyInSection)(char *pchSection, char *pchSettingsKey, EVRSettingsError *peError);
1896 };
1897 
1898 struct VR_IVRScreenshots_FnTable
1899 {
1900 	EVRScreenshotError(OPENVR_FNTABLE_CALLTYPE *RequestScreenshot)(ScreenshotHandle_t *pOutScreenshotHandle, EVRScreenshotType type, char *pchPreviewFilename, char *pchVRFilename);
1901 	EVRScreenshotError(OPENVR_FNTABLE_CALLTYPE *HookScreenshot)(EVRScreenshotType *pSupportedTypes, int numTypes);
1902 	EVRScreenshotType(OPENVR_FNTABLE_CALLTYPE *GetScreenshotPropertyType)(ScreenshotHandle_t screenshotHandle, EVRScreenshotError *pError);
1903 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetScreenshotPropertyFilename)(ScreenshotHandle_t screenshotHandle, EVRScreenshotPropertyFilenames filenameType, char *pchFilename, uint32_t cchFilename, EVRScreenshotError *pError);
1904 	EVRScreenshotError(OPENVR_FNTABLE_CALLTYPE *UpdateScreenshotProgress)(ScreenshotHandle_t screenshotHandle, float flProgress);
1905 	EVRScreenshotError(OPENVR_FNTABLE_CALLTYPE *TakeStereoScreenshot)(ScreenshotHandle_t *pOutScreenshotHandle, char *pchPreviewFilename, char *pchVRFilename);
1906 	EVRScreenshotError(OPENVR_FNTABLE_CALLTYPE *SubmitScreenshot)(ScreenshotHandle_t screenshotHandle, EVRScreenshotType type, char *pchSourcePreviewFilename, char *pchSourceVRFilename);
1907 };
1908 
1909 struct VR_IVRResources_FnTable
1910 {
1911 	uint32_t(OPENVR_FNTABLE_CALLTYPE *LoadSharedResource)(char *pchResourceName, char *pchBuffer, uint32_t unBufferLen);
1912 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetResourceFullPath)(char *pchResourceName, char *pchResourceTypeDirectory, char *pchPathBuffer, uint32_t unBufferLen);
1913 };
1914 
1915 struct VR_IVRDriverManager_FnTable
1916 {
1917 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetDriverCount)();
1918 	uint32_t(OPENVR_FNTABLE_CALLTYPE *GetDriverName)(DriverId_t nDriver, char *pchValue, uint32_t unBufferSize);
1919 };
1920 
1921 #if 0
1922 // Global entry points
1923 S_API intptr_t VR_InitInternal( EVRInitError *peError, EVRApplicationType eType );
1924 S_API void VR_ShutdownInternal();
1925 S_API bool VR_IsHmdPresent();
1926 S_API intptr_t VR_GetGenericInterface( const char *pchInterfaceVersion, EVRInitError *peError );
1927 S_API bool VR_IsRuntimeInstalled();
1928 S_API const char * VR_GetVRInitErrorAsSymbol( EVRInitError error );
1929 S_API const char * VR_GetVRInitErrorAsEnglishDescription( EVRInitError error );
1930 #endif
1931 
1932 #endif  // __OPENVR_API_FLAT_H__
1933