OpenVR SDK 2.15.6 IVRSystem: * ComputeDistortionSet added for batch queries and inverses. * GetEyeTrackedFoveationCenter and GetEyeTrackedFoveationCenterForProjection added for access eye tracking data for foveation (for supported drivers). IVRInput: * GetEyeTrackingDataRelativeToNow and GetEyeTrackingDataForNextFrame provide eye tracking data for input (for supported drivers). IVROverlay: * Overlays created with this SDK will have translucent grey backsides by default (for consistency with the rest of the dashboard), and will require the use of VROverlayFlags_NoBackside to only draw the fronts. IVRCompositor: * Added ability to pass motion vectors to SteamVR (use VRTextureWithMotion_t with Submit_TextureWithMotion). IVRIPCResourceManagerClient: * NewSharedVulkanImage added unAdditionalVkCreateFlags and unAdditionalVkUsageFlags. IVRApplications: * Added RegisterSubprocess as an alternative to LaunchInternalProcess to support external launching. New: * VREvent_OverlayNameChanged Deprecated: * Prop_PreviousUniverseId_Uint64 [git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 10561095]
diff --git a/bin/androidarm64/libopenvr_api.so b/bin/androidarm64/libopenvr_api.so index 104fd37..ff71df7 100644 --- a/bin/androidarm64/libopenvr_api.so +++ b/bin/androidarm64/libopenvr_api.so Binary files differ
diff --git a/bin/linux32/libopenvr_api.so b/bin/linux32/libopenvr_api.so index b04a4c2..8af2f11 100755 --- a/bin/linux32/libopenvr_api.so +++ b/bin/linux32/libopenvr_api.so Binary files differ
diff --git a/bin/linux32/libopenvr_api.so.dbg b/bin/linux32/libopenvr_api.so.dbg index 56debc9..fb3d7cb 100755 --- a/bin/linux32/libopenvr_api.so.dbg +++ b/bin/linux32/libopenvr_api.so.dbg Binary files differ
diff --git a/bin/linux64/libopenvr_api.so b/bin/linux64/libopenvr_api.so index 198da62..614970f 100755 --- a/bin/linux64/libopenvr_api.so +++ b/bin/linux64/libopenvr_api.so Binary files differ
diff --git a/bin/linux64/libopenvr_api.so.dbg b/bin/linux64/libopenvr_api.so.dbg index 350f2f9..2490cbd 100755 --- a/bin/linux64/libopenvr_api.so.dbg +++ b/bin/linux64/libopenvr_api.so.dbg Binary files differ
diff --git a/bin/linuxarm64/libopenvr_api.so b/bin/linuxarm64/libopenvr_api.so index 74b9301..109815e 100644 --- a/bin/linuxarm64/libopenvr_api.so +++ b/bin/linuxarm64/libopenvr_api.so Binary files differ
diff --git a/bin/linuxarm64/libopenvr_api.so.dbg b/bin/linuxarm64/libopenvr_api.so.dbg index ebf869f..91a0104 100644 --- a/bin/linuxarm64/libopenvr_api.so.dbg +++ b/bin/linuxarm64/libopenvr_api.so.dbg Binary files differ
diff --git a/bin/linuxarm64/libopenvr_api_unity.so b/bin/linuxarm64/libopenvr_api_unity.so index d62754c..9ba50fa 100644 --- a/bin/linuxarm64/libopenvr_api_unity.so +++ b/bin/linuxarm64/libopenvr_api_unity.so Binary files differ
diff --git a/bin/linuxarm64/libopenvr_api_unity.so.dbg b/bin/linuxarm64/libopenvr_api_unity.so.dbg index 90cfd40..b924fde 100644 --- a/bin/linuxarm64/libopenvr_api_unity.so.dbg +++ b/bin/linuxarm64/libopenvr_api_unity.so.dbg Binary files differ
diff --git a/bin/win32/openvr_api.dll b/bin/win32/openvr_api.dll index b17a514..5e2468e 100644 --- a/bin/win32/openvr_api.dll +++ b/bin/win32/openvr_api.dll Binary files differ
diff --git a/bin/win32/openvr_api.dll.sig b/bin/win32/openvr_api.dll.sig index b6b10c0..776423c 100644 --- a/bin/win32/openvr_api.dll.sig +++ b/bin/win32/openvr_api.dll.sig Binary files differ
diff --git a/bin/win32/openvr_api.pdb b/bin/win32/openvr_api.pdb index eff94a2..4d16416 100644 --- a/bin/win32/openvr_api.pdb +++ b/bin/win32/openvr_api.pdb Binary files differ
diff --git a/bin/win64/openvr_api.dll b/bin/win64/openvr_api.dll index ab53dc6..83b2019 100644 --- a/bin/win64/openvr_api.dll +++ b/bin/win64/openvr_api.dll Binary files differ
diff --git a/bin/win64/openvr_api.dll.sig b/bin/win64/openvr_api.dll.sig index 651ebfe..8beca16 100644 --- a/bin/win64/openvr_api.dll.sig +++ b/bin/win64/openvr_api.dll.sig Binary files differ
diff --git a/bin/win64/openvr_api.pdb b/bin/win64/openvr_api.pdb index e576a0c..d5506b2 100644 --- a/bin/win64/openvr_api.pdb +++ b/bin/win64/openvr_api.pdb Binary files differ
diff --git a/codegen/openvr_interop.cs.py b/codegen/openvr_interop.cs.py index 8731158..07585c2 100755 --- a/codegen/openvr_interop.cs.py +++ b/codegen/openvr_interop.cs.py
@@ -251,6 +251,7 @@ m_pVROverlay = null; m_pVROverlayView = null; m_pVRRenderModels = null; + m_pVRResources = null; m_pVRExtendedDisplay = null; m_pVRSettings = null; m_pVRApplications = null; @@ -376,6 +377,19 @@ return m_pVRRenderModels; } + public CVRResources VRResources() + { + CheckClear(); + if (m_pVRResources == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRResources_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRResources = new CVRResources(pInterface); + } + return m_pVRResources; + } + public CVRExtendedDisplay VRExtendedDisplay() { CheckClear(); @@ -514,6 +528,7 @@ private CVROverlay m_pVROverlay; private CVROverlayView m_pVROverlayView; private CVRRenderModels m_pVRRenderModels; + private CVRResources m_pVRResources; private CVRExtendedDisplay m_pVRExtendedDisplay; private CVRSettings m_pVRSettings; private CVRApplications m_pVRApplications; @@ -545,6 +560,7 @@ public static CVROverlay Overlay { get { return OpenVRInternal_ModuleContext.VROverlay(); } } public static CVROverlayView OverlayView { get { return OpenVRInternal_ModuleContext.VROverlayView(); } } public static CVRRenderModels RenderModels { get { return OpenVRInternal_ModuleContext.VRRenderModels(); } } + public static CVRResources Resources { get { return OpenVRInternal_ModuleContext.VRResources(); } } public static CVRExtendedDisplay ExtendedDisplay { get { return OpenVRInternal_ModuleContext.VRExtendedDisplay(); } } public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } @@ -560,6 +576,8 @@ /** Finds the active installation of vrclient.dll and initializes it */ public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene, string pchStartupInfo= "") { + CVRSystem pSystem = null; + try { VRToken = InitInternal2(ref peError, eApplicationType, pchStartupInfo); @@ -571,18 +589,24 @@ OpenVRInternal_ModuleContext.Clear(); - if (peError != EVRInitError.None) - return null; - - bool bInterfaceValid = IsInterfaceVersionValid(IVRSystem_Version); - if (!bInterfaceValid) + if (peError == EVRInitError.None && !IsInterfaceVersionValid(IVRSystem_Version)) { - ShutdownInternal(); peError = EVRInitError.Init_InterfaceNotFound; - return null; } - return OpenVR.System; + if (peError == EVRInitError.None) + { + pSystem = OpenVR.System; + peError = pSystem.SetSDKVersion(k_nSteamVRVersionMajor, k_nSteamVRVersionMinor, k_nSteamVRVersionBuild); + } + + if (peError != EVRInitError.None) + { + pSystem = null; + ShutdownInternal(); + } + + return pSystem; } /** unloads vrclient.dll. Any interface pointers from the interface are
diff --git a/headers/openvr.h b/headers/openvr.h index efa452a..7b25ab4 100644 --- a/headers/openvr.h +++ b/headers/openvr.h
@@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 2; - static const uint32_t k_nSteamVRVersionMinor = 12; - static const uint32_t k_nSteamVRVersionBuild = 14; + static const uint32_t k_nSteamVRVersionMinor = 15; + static const uint32_t k_nSteamVRVersionBuild = 6; } // namespace vr // public_vrtypes.h @@ -193,6 +193,17 @@ VRTextureDepthInfo_t depth; }; +struct VRTextureMotionInfo_t +{ + void *handle; // See ETextureType definition above + HmdMatrix44_t mDeltaPose; // Incremental application-applied transform, if any, since the previous frame that affects the view. +}; + +struct VRTextureWithMotion_t : VRTextureWithPoseAndDepth_t +{ + VRTextureMotionInfo_t motion; +}; + // 64-bit types that are part of public structures // that are replicated in shared memory. #if defined(__linux__) || defined(__APPLE__) @@ -209,7 +220,7 @@ { uint32_t unOffset; uint32_t unStride; - int32_t nFd; + int32_t nFd; // This is not consumed, it is dup'ed. }; struct DmabufAttributes_t @@ -476,6 +487,8 @@ Prop_AllowLightSourceFrequency_Bool = 1056, // Shows the Anti-Flicker option in camera settings. Prop_SteamRemoteClientID_Uint64 = 1057, // For vrlink Prop_Reserved_1058 = 1058, + Prop_Reserved_1059 = 1059, + Prop_Reserved_1060 = 1060, // Properties that are unique to TrackedDeviceClass_HMD Prop_ReportsTimeSinceVSync_Bool = 2000, @@ -483,7 +496,7 @@ Prop_DisplayFrequency_Float = 2002, Prop_UserIpdMeters_Float = 2003, Prop_CurrentUniverseId_Uint64 = 2004, - Prop_PreviousUniverseId_Uint64 = 2005, + Prop_PreviousUniverseId_Uint64_deprecated = Prop_Invalid, Prop_DisplayFirmwareVersion_Uint64 = 2006, Prop_IsOnDesktop_Bool = 2007, Prop_DisplayMCType_Int32 = 2008, @@ -778,11 +791,15 @@ // If the texture is an EGL texture and not an glX/wGL texture (Linux only, currently) Submit_IsEgl = 0x100, + // Set to indicate that pTexture is a pointer to a VRTextureWithMotion_t. + Submit_TextureWithMotion = 0x200 | Submit_TextureWithPose | Submit_TextureWithDepth, + // Do not use Submit_Reserved2 = 0x08000, Submit_Reserved3 = 0x10000, Submit_Reserved4 = 0x20000, Submit_Reserved5 = 0x40000, + Submit_Reserved6 = 0x80000, }; /** Data required for passing Vulkan textures to IVRCompositor::Submit. @@ -930,8 +947,8 @@ VREvent_ScreenshotProgressToDashboard = 524, // Sent by compositor to the dashboard that a completed screenshot was submitted VREvent_PrimaryDashboardDeviceChanged = 525, - VREvent_RoomViewShown = 526, // Sent by compositor whenever room-view is enabled - VREvent_RoomViewHidden = 527, // Sent by compositor whenever room-view is disabled + VREvent_RoomViewShown = 526, // Sent by compositor whenever room-view is enabled (for scene apps only - not for construct or transient bounds) + VREvent_RoomViewHidden = 527, // Sent by compositor whenever room-view is disabled (for scene apps only - not for construct or transient bounds) VREvent_ShowUI = 528, // data is showUi VREvent_ShowDevTools = 529, // data is showDevTools VREvent_DesktopViewUpdating = 530, @@ -939,13 +956,14 @@ VREvent_StartDashboard = 532, VREvent_ElevatePrism = 533, - VREvent_OverlayClosed = 534, + VREvent_OverlayClosed = 534, // The overlay's close button is pressed. VREvent_DashboardThumbChanged = 535, // Sent when a dashboard thumbnail image changes VREvent_DesktopMightBeVisible = 536, // Sent when any known desktop related overlay is visible VREvent_DesktopMightBeHidden = 537, // Sent when all known desktop related overlays are hidden VREvent_MutualSteamCapabilitiesChanged = 538, // Sent when the set of capabilities common between both Steam and SteamVR have changed. VREvent_OverlayCreated = 539, // An OpenVR overlay of any sort was created. Data is overlay. VREvent_OverlayDestroyed = 540, // An OpenVR overlay of any sort was destroyed. Data is overlay. + VREvent_OverlayNameChanged = 544, // An OpenVR overlay's name changed. Data is overlay. VREvent_TrackingRecordingStarted = 541, VREvent_TrackingRecordingStopped = 542, @@ -982,6 +1000,9 @@ VREvent_Reserved_0809 = 809, VREvent_Reserved_0810 = 810, VREvent_Reserved_0811 = 811, + VREvent_Reserved_0812 = 812, + VREvent_Reserved_0813 = 813, + VREvent_Reserved_0814 = 814, VREvent_AudioSettingsHaveChanged = 820, @@ -1008,6 +1029,7 @@ VREvent_WindowsMRSectionSettingChanged = 870, VREvent_OtherSectionSettingChanged = 871, VREvent_AnyDriverSettingsChanged = 872, + VREvent_Reserved_0873 = 873, VREvent_StatusUpdate = 900, @@ -1259,7 +1281,7 @@ struct VREvent_Chaperone_t { - uint64_t m_nPreviousUniverse; + uint64_t m_nPreviousUniverse_deprecated; uint64_t m_nCurrentUniverse; }; @@ -1843,6 +1865,8 @@ VRInitError_Init_VRDashboardTokenFailure = 165, VRInitError_Init_VRDashboardEnvironmentFailure = 166, VRInitError_Init_VRDashboardPathFailure = 167, + VRInitError_Init_InstallationTooOld = 168, + VRInitError_Init_ClientVersionAlreadyProvided = 169, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1997,6 +2021,12 @@ VRInitError_VendorSpecific_OculusRuntimeBadInstall = 1114, VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, + VRInitError_VendorSpecific_Oasis_UnlockRequired = 1150, + + VRInitError_VendorSpecific_VRLink_OutdatedDriverMESA = 1200, + VRInitError_VendorSpecific_VRLink_OutdatedDriverNVIDIA = 1201, + VRInitError_VendorSpecific_VRLink_NoVideoSupport = 1202, + VRInitError_Steam_SteamInstallationNotFound = 2000, // Strictly a placeholder @@ -2221,6 +2251,22 @@ uint32_t unOffScaleFlags; }; +enum class EVRDistortionChannel : uint32_t +{ + Red = 0, // given a coordinate in distorted panel space, returns the coordinate to sample in rectilinear render space for the red channel + Green, // given a coordinate in distorted panel space, returns the coordinate to sample in rectilinear render space for the green channel + Blue, // given a coordinate in distorted panel space, returns the coordinate to sample in rectilinear render space for the blue channel + InverseRed, // given a coordinate in rectilinear render space, returns the corresponding coordinate in distorted panel space for the red channel + InverseGreen, // given a coordinate in rectilinear render space, returns the corresponding coordinate in distorted panel space for the green channel + InverseBlue, // given a coordinate in rectilinear render space, returns the corresponding coordinate in distorted panel space for the blue channel + Count +}; + +struct DistortionCoordinate_t +{ + float u, v; // 0..1 +}; + #pragma pack( pop ) // figure out how to import from the VR API dll @@ -2307,6 +2353,12 @@ * Returns true for success. Otherwise, returns false, and distortion coordinates are not suitable. */ virtual bool ComputeDistortion( EVREye eEye, float fU, float fV, DistortionCoordinates_t *pDistortionCoordinates ) = 0; + /** Gets the result of the distortion functions for the specified eye and set of input UVs. + * nNumCoordinates must be the number of elements of pInput and pOutput. + * Returns true for success. Otherwise, returns false, and distortion coordinates are not suitable. */ + virtual bool ComputeDistortionSet( EVREye eEye, EVRDistortionChannel eChannel, bool bAsNormalizedDeviceCoordinates, + uint32_t nNumCoordinates, const DistortionCoordinate_t *pInput, DistortionCoordinate_t *pOutput ) = 0; + /** Returns the transform from eye space to the head space. Eye space is the per-eye flavor of head * space that provides stereo disparity. Instead of Model * View * Projection the sequence is Model * View * Eye^-1 * Projection. * Normally View and Eye^-1 will be multiplied together and treated as View in your application. @@ -2504,6 +2556,18 @@ */ virtual HiddenAreaMesh_t GetHiddenAreaMesh( EVREye eEye, EHiddenAreaMeshType type = k_eHiddenAreaMesh_Standard ) = 0; + /** Provides per-eye NDC foveation centers based on eye tracking, using the projection matrices accessible + * from IVRSystem::GetProjectionMatrix(...). Returns true if these NDC points are valid; false otherwise. + * This API will return false on systems that do not have an eye tracker, or may transiently return false if a + * system's eye tracker reports that eye tracking is invalid. + */ + virtual bool GetEyeTrackedFoveationCenter( HmdVector2_t *pNdcLeft, HmdVector2_t *pNdcRight ) = 0; + + /** A variant of GetEyeTrackedFoveationCenter(...), where the caller specifies the projection matrix to use. + * Use this if you need a foveation center for a projection matrix other than what is returned from IVRSystem::GetProjectionMatrix(...). + */ + virtual bool GetEyeTrackedFoveationCenterForProjection( const HmdMatrix44_t *pProjMat, HmdVector2_t *pNdc ) = 0; + // ------------------------------------ // Controller methods // ------------------------------------ @@ -2582,9 +2646,11 @@ * presence information is provided by other APIs. */ virtual const char *GetRuntimeVersion() = 0; + /** Tells the SteamVR runtime which version of the SDK our client was compiled against. */ + virtual vr::EVRInitError SetSDKVersion( uint32_t nVersionMajor, uint32_t nVersionMinor, uint32_t nVersionBuild ) = 0; }; -static const char * const IVRSystem_Version = "IVRSystem_023"; +static const char * const IVRSystem_Version = "IVRSystem_026"; } @@ -2611,10 +2677,11 @@ VRApplicationError_LaunchFailed = 109, // the process didn't start VRApplicationError_ApplicationAlreadyStarting = 110, // the system was already starting the same application VRApplicationError_LaunchInProgress = 111, // The system was already starting a different application - VRApplicationError_OldApplicationQuitting = 112, + VRApplicationError_OldApplicationQuitting = 112, // Caller should retry while PerformApplicationPrelaunchCheck is returing this VRApplicationError_TransitionAborted = 113, VRApplicationError_IsTemplate = 114, // error when you try to call LaunchApplication() on a template type app (use LaunchTemplateApplication) VRApplicationError_SteamVRIsExiting = 115, + VRApplicationError_WaitingForChaperone = 116, // Caller should retry while PerformApplicationPrelaunchCheck is returing this VRApplicationError_BufferTooSmall = 200, // The provided buffer was too small to fit the requested data VRApplicationError_PropertyNotSet = 201, // The requested property was not set @@ -2778,6 +2845,7 @@ * What the caller should do about these failures depends on the failure: * VRApplicationError_OldApplicationQuitting - An existing application has been told to quit. Wait for a VREvent_ProcessQuit * and try again. + * VRApplicationError_WaitingForChaperone - Room setup is in progress. Wait for VREvent_ChaperoneRoomSetupCommitted and try again. * VRApplicationError_ApplicationAlreadyStarting - This application is already starting. This is a permanent failure. * VRApplicationError_LaunchInProgress - A different application is already starting. This is a permanent failure. * VRApplicationError_None - Go ahead and launch. Everything is clear. @@ -2794,13 +2862,18 @@ * the working directory. */ virtual EVRApplicationError LaunchInternalProcess( const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory ) = 0; + /** Registers a new subprocess launched by the calling application. This + * suppresses all application transition UI and automatically identifies the new process + * as part of the same application. On success the calling process should exit immediately. */ + virtual EVRApplicationError RegisterSubprocess( uint32_t nPid ) = 0; + /** Returns the current scene process ID according to the application system. A scene process will get scene * focus once it starts rendering, but it will appear here once it calls VR_Init with the Scene application * type. */ virtual uint32_t GetCurrentSceneProcessId() = 0; }; - static const char * const IVRApplications_Version = "IVRApplications_007"; + static const char * const IVRApplications_Version = "IVRApplications_008"; } // namespace vr @@ -2933,6 +3006,7 @@ //----------------------------------------------------------------------------- // steamvr keys static const char * const k_pch_SteamVR_Section = "steamvr"; + static const char * const k_pch_SteamVR_Contrast_Float = "contrast"; static const char * const k_pch_SteamVR_RequireHmd_String = "requireHmd"; static const char * const k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; static const char * const k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; @@ -2950,6 +3024,7 @@ static const char * const k_pch_SteamVR_GridColor_String = "gridColor"; static const char * const k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; static const char * const k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; + static const char * const k_pch_SteamVR_StartColor_String = "startColor"; static const char * const k_pch_SteamVR_ShowStage_Bool = "showStage"; static const char * const k_pch_SteamVR_DrawTrackingReferences_Bool = "drawTrackingReferences"; static const char * const k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; @@ -2962,6 +3037,8 @@ static const char * const k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; static const char * const k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; static const char * const k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; + static const char * const k_pch_SteamVR_FoveatedSharpening_Bool = "sharpening"; + static const char * const k_pch_SteamVR_FoveatedSharpeningOverride_Int32 = "sharpeningOverride"; static const char * const k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; static const char * const k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; static const char * const k_pch_SteamVR_WorldScale_Float = "worldScale"; @@ -3160,6 +3237,7 @@ static const char * const k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; static const char * const k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; static const char * const k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; + static const char * const k_pch_Power_OverrideWindowsPowerScheme_Bool = "overrideWindowsPowerScheme"; //----------------------------------------------------------------------------- // dashboard keys @@ -3167,14 +3245,13 @@ static const char * const k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; static const char * const k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; static const char * const k_pch_Dashboard_Position = "position"; - static const char * const k_pch_Dashboard_DesktopScale = "desktopScale"; static const char * const k_pch_Dashboard_DashboardScale = "dashboardScale"; static const char * const k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; static const char * const k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; - static const char * const k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; static const char * const k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; static const char * const k_pch_Dashboard_GrabHandleAcceleration = "grabHandleAcceleration"; + static const char * const k_pch_Dashboard_OverlayBacksideColor_String = "overlayBacksideColor"; //----------------------------------------------------------------------------- // model skin keys @@ -3405,7 +3482,7 @@ virtual void SetWorkingCollisionBoundsInfo( VR_ARRAY_COUNT(unQuadsCount) HmdQuad_t *pQuadsBuffer, uint32_t unQuadsCount ) = 0; /** Sets the Collision Bounds in the working copy. */ - virtual void SetWorkingPerimeter( VR_ARRAY_COUNT( unPointCount ) HmdVector2_t *pPointBuffer, uint32_t unPointCount ) = 0; + virtual void SetWorkingPerimeter( VR_ARRAY_COUNT( unPointCount ) const HmdVector2_t *pPointBuffer, uint32_t unPointCount ) = 0; /** Sets the preferred seated position in the working copy. */ virtual void SetWorkingSeatedZeroPoseToRawTrackingPose( const HmdMatrix34_t *pMatSeatedZeroPoseToRawTrackingPose ) = 0; @@ -4075,6 +4152,12 @@ // If this is set, laser mouse pointer events may be sent for the secondary laser. These events will have // cursorIndex set to 0 for the primary laser and 1 for the secondary. VROverlayFlags_MultiCursor = 1 << 28, + + // If this is set, the compositor won't draw any stylized backing when viewing the overlay from behind. + // NOTE: Overlays will only have a backside in the first place if build with OpenVR SDK 2.15.x and higher. + // NOTE: DashboardOverlays ignore this flag and the SDK version; they always have a backside unless the user + // globally disables that. + VROverlayFlags_NoBackside = 1 << 29, }; enum VRMessageOverlayResponse @@ -4836,6 +4919,12 @@ class IVRTrackedCamera { public: + + // ------------------------------------ + // IVRTrackedCamera is used by client applications to poll for camera frames, when available. + // This API has no relevance to driver writers adding camera support to a particular HMD. + // ------------------------------------ + /** Returns a string for an error */ virtual const char *GetCameraErrorNameFromEnum( vr::EVRTrackedCameraError eCameraError ) = 0; @@ -5309,6 +5398,14 @@ /** Sets the dominant hand for the user for this application. */ virtual EVRInputError SetDominantHand( ETrackedControllerRole eDominantHand ) = 0; + /** Reads the state of an eye tracking action given its handle for the number of seconds relative to now. + * This will generally be called with negative times from the fUpdateTime fields in other actions. */ + virtual EVRInputError GetEyeTrackingDataRelativeToNow( VRActionHandle_t action, vr::ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, vr::VREyeTrackingData_t *pEyeTrackingData, uint32_t ulEyeTrackingDataSize ) = 0; + + /** Reads the state of an eye tracking action given its handle. The returned data will be for the frame + * predicted by last call to IVRCompositor::WaitGetPoses(). */ + virtual EVRInputError GetEyeTrackingDataForNextFrame( VRActionHandle_t action, vr::ETrackingUniverseOrigin eOrigin, vr::VREyeTrackingData_t *pEyeTrackingData, uint32_t ulEyeTrackingDataSize ) = 0; + // --------------- Static Skeletal Data ------------------- // /** Reads the number of bones in skeleton associated with the given action */ @@ -5391,7 +5488,7 @@ }; - static const char * const IVRInput_Version = "IVRInput_010"; + static const char * const IVRInput_Version = "IVRInput_011"; } // namespace vr @@ -5561,7 +5658,7 @@ * * nImageFormat: in VkFormat */ - virtual bool NewSharedVulkanImage( uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, vr::SharedTextureHandle_t *pSharedHandle ) = 0; + virtual bool NewSharedVulkanImage( uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, uint32_t unAdditionalVkCreateFlags, uint32_t unAdditionalVkUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0; /** Create a new tracked Vulkan Buffer */ virtual bool NewSharedVulkanBuffer( uint32_t nSize, uint32_t nUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0; @@ -5619,7 +5716,7 @@ virtual ~IVRIPCResourceManagerClient() {}; }; -static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002"; +static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_003"; } // End @@ -6036,17 +6133,21 @@ COpenVRContext &ctx = OpenVRInternal_ModuleContext(); ctx.Clear(); + if ( eError == VRInitError_None && !VR_IsInterfaceVersionValid( IVRSystem_Version ) ) + { + eError = VRInitError_Init_InterfaceNotFound; + } + if ( eError == VRInitError_None ) { - if ( VR_IsInterfaceVersionValid( IVRSystem_Version ) ) - { - pVRSystem = VRSystem(); - } - else - { - VR_ShutdownInternal(); - eError = VRInitError_Init_InterfaceNotFound; - } + pVRSystem = VRSystem(); + eError = pVRSystem->SetSDKVersion( k_nSteamVRVersionMajor, k_nSteamVRVersionMinor, k_nSteamVRVersionBuild ); + } + + if ( eError != VRInitError_None ) + { + pVRSystem = nullptr; + VR_ShutdownInternal(); } if ( peError )
diff --git a/headers/openvr_api.cs b/headers/openvr_api.cs index bfaec40..3050761 100644 --- a/headers/openvr_api.cs +++ b/headers/openvr_api.cs
@@ -42,6 +42,12 @@ internal _ComputeDistortion ComputeDistortion; [UnmanagedFunctionPointer(CallingConvention.StdCall)] + [return: MarshalAs(UnmanagedType.I1)] + internal delegate bool _ComputeDistortionSet(EVREye eEye, EVRDistortionChannel eChannel, [MarshalAs(UnmanagedType.I1)] bool bAsNormalizedDeviceCoordinates, uint nNumCoordinates, ref DistortionCoordinate_t pInput, ref DistortionCoordinate_t pOutput); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ComputeDistortionSet ComputeDistortionSet; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate HmdMatrix34_t _GetEyeToHeadTransform(EVREye eEye); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetEyeToHeadTransform GetEyeToHeadTransform; @@ -201,6 +207,18 @@ [UnmanagedFunctionPointer(CallingConvention.StdCall)] [return: MarshalAs(UnmanagedType.I1)] + internal delegate bool _GetEyeTrackedFoveationCenter(ref HmdVector2_t pNdcLeft, ref HmdVector2_t pNdcRight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeTrackedFoveationCenter GetEyeTrackedFoveationCenter; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + [return: MarshalAs(UnmanagedType.I1)] + internal delegate bool _GetEyeTrackedFoveationCenterForProjection(ref HmdMatrix44_t pProjMat, ref HmdVector2_t pNdc); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeTrackedFoveationCenterForProjection GetEyeTrackedFoveationCenterForProjection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + [return: MarshalAs(UnmanagedType.I1)] internal delegate bool _GetControllerState(uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetControllerState GetControllerState; @@ -270,6 +288,11 @@ [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetRuntimeVersion GetRuntimeVersion; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInitError _SetSDKVersion(uint nVersionMajor, uint nVersionMinor, uint nVersionBuild); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetSDKVersion SetSDKVersion; + } [StructLayout(LayoutKind.Sequential)] @@ -522,6 +545,11 @@ internal _LaunchInternalProcess LaunchInternalProcess; [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _RegisterSubprocess(uint nPid); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RegisterSubprocess RegisterSubprocess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate uint _GetCurrentSceneProcessId(); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetCurrentSceneProcessId GetCurrentSceneProcessId; @@ -1798,6 +1826,16 @@ internal _SetDominantHand SetDominantHand; [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetEyeTrackingDataRelativeToNow(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref VREyeTrackingData_t pEyeTrackingData, uint ulEyeTrackingDataSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeTrackingDataRelativeToNow GetEyeTrackingDataRelativeToNow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetEyeTrackingDataForNextFrame(ulong action, ETrackingUniverseOrigin eOrigin, ref VREyeTrackingData_t pEyeTrackingData, uint ulEyeTrackingDataSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeTrackingDataForNextFrame GetEyeTrackingDataForNextFrame; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVRInputError _GetBoneCount(ulong action, ref uint pBoneCount); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetBoneCount GetBoneCount; @@ -1991,7 +2029,7 @@ { [UnmanagedFunctionPointer(CallingConvention.StdCall)] [return: MarshalAs(UnmanagedType.I1)] - internal delegate bool _NewSharedVulkanImage(uint nImageFormat, uint nWidth, uint nHeight, [MarshalAs(UnmanagedType.I1)] bool bRenderable, [MarshalAs(UnmanagedType.I1)] bool bMappable, [MarshalAs(UnmanagedType.I1)] bool bComputeAccess, uint unMipLevels, uint unArrayLayerCount, ref ulong pSharedHandle); + internal delegate bool _NewSharedVulkanImage(uint nImageFormat, uint nWidth, uint nHeight, [MarshalAs(UnmanagedType.I1)] bool bRenderable, [MarshalAs(UnmanagedType.I1)] bool bMappable, [MarshalAs(UnmanagedType.I1)] bool bComputeAccess, uint unMipLevels, uint unArrayLayerCount, uint unAdditionalVkCreateFlags, uint unAdditionalVkUsageFlags, ref ulong pSharedHandle); [MarshalAs(UnmanagedType.FunctionPtr)] internal _NewSharedVulkanImage NewSharedVulkanImage; @@ -2202,6 +2240,11 @@ bool result = FnTable.ComputeDistortion(eEye,fU,fV,ref pDistortionCoordinates); return result; } + public bool ComputeDistortionSet(EVREye eEye,EVRDistortionChannel eChannel,bool bAsNormalizedDeviceCoordinates,uint nNumCoordinates,ref DistortionCoordinate_t pInput,ref DistortionCoordinate_t pOutput) + { + bool result = FnTable.ComputeDistortionSet(eEye,eChannel,bAsNormalizedDeviceCoordinates,nNumCoordinates,ref pInput,ref pOutput); + return result; + } public HmdMatrix34_t GetEyeToHeadTransform(EVREye eEye) { HmdMatrix34_t result = FnTable.GetEyeToHeadTransform(eEye); @@ -2405,6 +2448,16 @@ HiddenAreaMesh_t result = FnTable.GetHiddenAreaMesh(eEye,type); return result; } + public bool GetEyeTrackedFoveationCenter(ref HmdVector2_t pNdcLeft,ref HmdVector2_t pNdcRight) + { + bool result = FnTable.GetEyeTrackedFoveationCenter(ref pNdcLeft,ref pNdcRight); + return result; + } + public bool GetEyeTrackedFoveationCenterForProjection(ref HmdMatrix44_t pProjMat,ref HmdVector2_t pNdc) + { + bool result = FnTable.GetEyeTrackedFoveationCenterForProjection(ref pProjMat,ref pNdc); + return result; + } // This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were // originally mis-compiled with the wrong packing for Linux and OSX. [UnmanagedFunctionPointer(CallingConvention.StdCall)] @@ -2520,6 +2573,11 @@ IntPtr result = FnTable.GetRuntimeVersion(); return Marshal.PtrToStringAnsi(result); } + public EVRInitError SetSDKVersion(uint nVersionMajor,uint nVersionMinor,uint nVersionBuild) + { + EVRInitError result = FnTable.SetSDKVersion(nVersionMajor,nVersionMinor,nVersionBuild); + return result; + } } @@ -2846,6 +2904,11 @@ Marshal.FreeHGlobal(pchWorkingDirectoryUtf8); return result; } + public EVRApplicationError RegisterSubprocess(uint nPid) + { + EVRApplicationError result = FnTable.RegisterSubprocess(nPid); + return result; + } public uint GetCurrentSceneProcessId() { uint result = FnTable.GetCurrentSceneProcessId(); @@ -4342,6 +4405,16 @@ EVRInputError result = FnTable.SetDominantHand(eDominantHand); return result; } + public EVRInputError GetEyeTrackingDataRelativeToNow(ulong action,ETrackingUniverseOrigin eOrigin,float fPredictedSecondsFromNow,ref VREyeTrackingData_t pEyeTrackingData,uint ulEyeTrackingDataSize) + { + EVRInputError result = FnTable.GetEyeTrackingDataRelativeToNow(action,eOrigin,fPredictedSecondsFromNow,ref pEyeTrackingData,ulEyeTrackingDataSize); + return result; + } + public EVRInputError GetEyeTrackingDataForNextFrame(ulong action,ETrackingUniverseOrigin eOrigin,ref VREyeTrackingData_t pEyeTrackingData,uint ulEyeTrackingDataSize) + { + EVRInputError result = FnTable.GetEyeTrackingDataForNextFrame(action,eOrigin,ref pEyeTrackingData,ulEyeTrackingDataSize); + return result; + } public EVRInputError GetBoneCount(ulong action,ref uint pBoneCount) { pBoneCount = 0; @@ -4577,10 +4650,10 @@ { FnTable = (IVRIPCResourceManagerClient)Marshal.PtrToStructure(pInterface, typeof(IVRIPCResourceManagerClient)); } - public bool NewSharedVulkanImage(uint nImageFormat,uint nWidth,uint nHeight,bool bRenderable,bool bMappable,bool bComputeAccess,uint unMipLevels,uint unArrayLayerCount,ref ulong pSharedHandle) + public bool NewSharedVulkanImage(uint nImageFormat,uint nWidth,uint nHeight,bool bRenderable,bool bMappable,bool bComputeAccess,uint unMipLevels,uint unArrayLayerCount,uint unAdditionalVkCreateFlags,uint unAdditionalVkUsageFlags,ref ulong pSharedHandle) { pSharedHandle = 0; - bool result = FnTable.NewSharedVulkanImage(nImageFormat,nWidth,nHeight,bRenderable,bMappable,bComputeAccess,unMipLevels,unArrayLayerCount,ref pSharedHandle); + bool result = FnTable.NewSharedVulkanImage(nImageFormat,nWidth,nHeight,bRenderable,bMappable,bComputeAccess,unMipLevels,unArrayLayerCount,unAdditionalVkCreateFlags,unAdditionalVkUsageFlags,ref pSharedHandle); return result; } public bool NewSharedVulkanBuffer(uint nSize,uint nUsageFlags,ref ulong pSharedHandle) @@ -4923,12 +4996,14 @@ Prop_AllowLightSourceFrequency_Bool = 1056, Prop_SteamRemoteClientID_Uint64 = 1057, Prop_Reserved_1058 = 1058, + Prop_Reserved_1059 = 1059, + Prop_Reserved_1060 = 1060, Prop_ReportsTimeSinceVSync_Bool = 2000, Prop_SecondsFromVsyncToPhotons_Float = 2001, Prop_DisplayFrequency_Float = 2002, Prop_UserIpdMeters_Float = 2003, Prop_CurrentUniverseId_Uint64 = 2004, - Prop_PreviousUniverseId_Uint64 = 2005, + Prop_PreviousUniverseId_Uint64_deprecated = 0, Prop_DisplayFirmwareVersion_Uint64 = 2006, Prop_IsOnDesktop_Bool = 2007, Prop_DisplayMCType_Int32 = 2008, @@ -5147,10 +5222,12 @@ Submit_VulkanTextureWithArrayData = 64, Submit_GlArrayTexture = 128, Submit_IsEgl = 256, + Submit_TextureWithMotion = 536, Submit_Reserved2 = 32768, Submit_Reserved3 = 65536, Submit_Reserved4 = 131072, Submit_Reserved5 = 262144, + Submit_Reserved6 = 524288, } public enum EVRState { @@ -5248,6 +5325,7 @@ VREvent_MutualSteamCapabilitiesChanged = 538, VREvent_OverlayCreated = 539, VREvent_OverlayDestroyed = 540, + VREvent_OverlayNameChanged = 544, VREvent_TrackingRecordingStarted = 541, VREvent_TrackingRecordingStopped = 542, VREvent_SetTrackingRecordingPath = 543, @@ -5278,6 +5356,9 @@ VREvent_Reserved_0809 = 809, VREvent_Reserved_0810 = 810, VREvent_Reserved_0811 = 811, + VREvent_Reserved_0812 = 812, + VREvent_Reserved_0813 = 813, + VREvent_Reserved_0814 = 814, VREvent_AudioSettingsHaveChanged = 820, VREvent_BackgroundSettingHasChanged = 850, VREvent_CameraSettingsHaveChanged = 851, @@ -5302,6 +5383,7 @@ VREvent_WindowsMRSectionSettingChanged = 870, VREvent_OtherSectionSettingChanged = 871, VREvent_AnyDriverSettingsChanged = 872, + VREvent_Reserved_0873 = 873, VREvent_StatusUpdate = 900, VREvent_WebInterface_InstallDriverCompleted = 950, VREvent_MCImageUpdated = 1000, @@ -5644,6 +5726,8 @@ Init_VRDashboardTokenFailure = 165, Init_VRDashboardEnvironmentFailure = 166, Init_VRDashboardPathFailure = 167, + Init_InstallationTooOld = 168, + Init_ClientVersionAlreadyProvided = 169, Driver_Failed = 200, Driver_Unknown = 201, Driver_HmdUnknown = 202, @@ -5789,6 +5873,10 @@ VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, VendorSpecific_OculusRuntimeBadInstall = 1114, VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, + VendorSpecific_Oasis_UnlockRequired = 1150, + VendorSpecific_VRLink_OutdatedDriverMESA = 1200, + VendorSpecific_VRLink_OutdatedDriverNVIDIA = 1201, + VendorSpecific_VRLink_NoVideoSupport = 1202, Steam_SteamInstallationNotFound = 2000, LastError = 2001, } @@ -5867,6 +5955,16 @@ OffScale_GyroY = 16, OffScale_GyroZ = 32, } +public enum EVRDistortionChannel +{ + Red = 0, + Green = 1, + Blue = 2, + InverseRed = 3, + InverseGreen = 4, + InverseBlue = 5, + Count = 6, +} public enum EVRApplicationError { None = 0, @@ -5886,6 +5984,7 @@ TransitionAborted = 113, IsTemplate = 114, SteamVRIsExiting = 115, + WaitingForChaperone = 116, BufferTooSmall = 200, PropertyNotSet = 201, UnknownProperty = 202, @@ -6016,6 +6115,7 @@ MinimalControlBar = 67108864, EnableClickStabilization = 134217728, MultiCursor = 268435456, + NoBackside = 536870912, } public enum VRMessageOverlayResponse { @@ -6465,6 +6565,15 @@ public HmdMatrix34_t mDeviceToAbsoluteTracking; public VRTextureDepthInfo_t depth; } +[StructLayout(LayoutKind.Sequential)] public struct VRTextureMotionInfo_t +{ + public IntPtr handle; // void * + public HmdMatrix44_t mDeltaPose; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithMotion_t +{ + public VRTextureMotionInfo_t motion; +} [StructLayout(LayoutKind.Sequential)] public struct DmabufPlane_t { public uint unOffset; @@ -6605,7 +6714,7 @@ } [StructLayout(LayoutKind.Sequential)] public struct VREvent_Chaperone_t { - public ulong m_nPreviousUniverse; + public ulong m_nPreviousUniverse_deprecated; public ulong m_nCurrentUniverse; } [StructLayout(LayoutKind.Sequential)] public struct VREvent_Reserved_t @@ -6864,6 +6973,11 @@ public HmdVector3d_t vGyro; public uint unOffScaleFlags; } +[StructLayout(LayoutKind.Sequential)] public struct DistortionCoordinate_t +{ + public float u; + public float v; +} [StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t { public IntPtr pchKey; // const char * @@ -7896,6 +8010,11 @@ { public IntPtr m_pProperties; // class vr::IVRProperties * } +[StructLayout(LayoutKind.Sequential)] public struct PathWriteOptions_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bPostEvents; +} [StructLayout(LayoutKind.Sequential)] public struct PathWrite_t { public ulong ulPath; @@ -7906,6 +8025,10 @@ public uint unTag; public ETrackedPropertyError eError; public IntPtr pszPath; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bPostEvents; + [MarshalAs(UnmanagedType.I1)] + public bool bValueChanged; } [StructLayout(LayoutKind.Sequential)] public struct PathRead_t { @@ -8030,13 +8153,13 @@ public const ulong k_ulOverlayHandleInvalid = 0; public const uint k_unMaxDistortionFunctionParameters = 8; public const uint k_unScreenshotHandleInvalid = 0; - public const string IVRSystem_Version = "IVRSystem_023"; + public const string IVRSystem_Version = "IVRSystem_026"; public const string IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; public const string IVRTrackedCamera_Version = "IVRTrackedCamera_006"; public const uint k_unMaxApplicationKeyLength = 128; public const string k_pch_MimeType_HomeApp = "vr/home"; public const string k_pch_MimeType_GameTheater = "vr/game_theater"; - public const string IVRApplications_Version = "IVRApplications_007"; + public const string IVRApplications_Version = "IVRApplications_008"; public const string IVRChaperone_Version = "IVRChaperone_004"; public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; public const string IVRCompositor_Version = "IVRCompositor_029"; @@ -8064,6 +8187,7 @@ public const uint k_unMaxSettingsKeyLength = 128; public const string IVRSettings_Version = "IVRSettings_003"; public const string k_pch_SteamVR_Section = "steamvr"; + public const string k_pch_SteamVR_Contrast_Float = "contrast"; public const string k_pch_SteamVR_RequireHmd_String = "requireHmd"; public const string k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; public const string k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; @@ -8081,6 +8205,7 @@ public const string k_pch_SteamVR_GridColor_String = "gridColor"; public const string k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; public const string k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; + public const string k_pch_SteamVR_StartColor_String = "startColor"; public const string k_pch_SteamVR_ShowStage_Bool = "showStage"; public const string k_pch_SteamVR_DrawTrackingReferences_Bool = "drawTrackingReferences"; public const string k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; @@ -8093,6 +8218,8 @@ public const string k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; public const string k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; public const string k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; + public const string k_pch_SteamVR_FoveatedSharpening_Bool = "sharpening"; + public const string k_pch_SteamVR_FoveatedSharpeningOverride_Int32 = "sharpeningOverride"; public const string k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; public const string k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; public const string k_pch_SteamVR_WorldScale_Float = "worldScale"; @@ -8252,18 +8379,18 @@ public const string k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; public const string k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; public const string k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; + public const string k_pch_Power_OverrideWindowsPowerScheme_Bool = "overrideWindowsPowerScheme"; public const string k_pch_Dashboard_Section = "dashboard"; public const string k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; public const string k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; public const string k_pch_Dashboard_Position = "position"; - public const string k_pch_Dashboard_DesktopScale = "desktopScale"; public const string k_pch_Dashboard_DashboardScale = "dashboardScale"; public const string k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; public const string k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; public const string k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; - public const string k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; public const string k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; public const string k_pch_Dashboard_GrabHandleAcceleration = "grabHandleAcceleration"; + public const string k_pch_Dashboard_OverlayBacksideColor_String = "overlayBacksideColor"; public const string k_pch_modelskin_Section = "modelskins"; public const string k_pch_Driver_Enable_Bool = "enable"; public const string k_pch_Driver_BlockedBySafemode_Bool = "blocked_by_safe_mode"; @@ -8309,13 +8436,16 @@ public const int k_nActionSetOverlayGlobalPriorityMin = 16777216; public const int k_nActionSetOverlayGlobalPriorityMax = 33554431; public const int k_nActionSetPriorityReservedMin = 33554432; - public const string IVRInput_Version = "IVRInput_010"; + public const string IVRInput_Version = "IVRInput_011"; public const ulong k_ulInvalidIOBufferHandle = 0; public const string IVRIOBuffer_Version = "IVRIOBuffer_002"; public const uint k_ulInvalidSpatialAnchorHandle = 0; public const string IVRSpatialAnchors_Version = "IVRSpatialAnchors_001"; public const string IVRDebug_Version = "IVRDebug_001"; - public const string IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002"; + public const string IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_003"; + public const uint k_nSteamVRVersionMajor = 2; + public const uint k_nSteamVRVersionMinor = 15; + public const uint k_nSteamVRVersionBuild = 6; public const ulong k_ulDisplayRedirectContainer = 25769803779; public const string IVRProperties_Version = "IVRProperties_001"; public const string k_pchPathUserHandRight = "/user/hand/right"; @@ -8361,7 +8491,7 @@ public const string k_pchPathUserKeyboard = "/user/keyboard"; public const string k_pchPathClientAppKey = "/client_info/app_key"; public const ulong k_ulInvalidPathHandle = 0; - public const string IVRPaths_Version = "IVRPaths_001"; + public const string IVRPaths_Version = "IVRPaths_002"; public const string IVRBlockQueue_Version = "IVRBlockQueue_005"; static uint VRToken { get; set; } @@ -8382,6 +8512,7 @@ m_pVROverlay = null; m_pVROverlayView = null; m_pVRRenderModels = null; + m_pVRResources = null; m_pVRExtendedDisplay = null; m_pVRSettings = null; m_pVRApplications = null; @@ -8507,6 +8638,19 @@ return m_pVRRenderModels; } + public CVRResources VRResources() + { + CheckClear(); + if (m_pVRResources == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRResources_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRResources = new CVRResources(pInterface); + } + return m_pVRResources; + } + public CVRExtendedDisplay VRExtendedDisplay() { CheckClear(); @@ -8645,6 +8789,7 @@ private CVROverlay m_pVROverlay; private CVROverlayView m_pVROverlayView; private CVRRenderModels m_pVRRenderModels; + private CVRResources m_pVRResources; private CVRExtendedDisplay m_pVRExtendedDisplay; private CVRSettings m_pVRSettings; private CVRApplications m_pVRApplications; @@ -8676,6 +8821,7 @@ public static CVROverlay Overlay { get { return OpenVRInternal_ModuleContext.VROverlay(); } } public static CVROverlayView OverlayView { get { return OpenVRInternal_ModuleContext.VROverlayView(); } } public static CVRRenderModels RenderModels { get { return OpenVRInternal_ModuleContext.VRRenderModels(); } } + public static CVRResources Resources { get { return OpenVRInternal_ModuleContext.VRResources(); } } public static CVRExtendedDisplay ExtendedDisplay { get { return OpenVRInternal_ModuleContext.VRExtendedDisplay(); } } public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } @@ -8691,6 +8837,8 @@ /** Finds the active installation of vrclient.dll and initializes it */ public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene, string pchStartupInfo= "") { + CVRSystem pSystem = null; + try { VRToken = InitInternal2(ref peError, eApplicationType, pchStartupInfo); @@ -8702,18 +8850,24 @@ OpenVRInternal_ModuleContext.Clear(); - if (peError != EVRInitError.None) - return null; - - bool bInterfaceValid = IsInterfaceVersionValid(IVRSystem_Version); - if (!bInterfaceValid) + if (peError == EVRInitError.None && !IsInterfaceVersionValid(IVRSystem_Version)) { - ShutdownInternal(); peError = EVRInitError.Init_InterfaceNotFound; - return null; } - return OpenVR.System; + if (peError == EVRInitError.None) + { + pSystem = OpenVR.System; + peError = pSystem.SetSDKVersion(k_nSteamVRVersionMajor, k_nSteamVRVersionMinor, k_nSteamVRVersionBuild); + } + + if (peError != EVRInitError.None) + { + pSystem = null; + ShutdownInternal(); + } + + return pSystem; } /** unloads vrclient.dll. Any interface pointers from the interface are
diff --git a/headers/openvr_api.json b/headers/openvr_api.json index 382e051..6e0be00 100644 --- a/headers/openvr_api.json +++ b/headers/openvr_api.json
@@ -165,12 +165,14 @@ ,{"name": "Prop_AllowLightSourceFrequency_Bool","value": "1056"} ,{"name": "Prop_SteamRemoteClientID_Uint64","value": "1057"} ,{"name": "Prop_Reserved_1058","value": "1058"} + ,{"name": "Prop_Reserved_1059","value": "1059"} + ,{"name": "Prop_Reserved_1060","value": "1060"} ,{"name": "Prop_ReportsTimeSinceVSync_Bool","value": "2000"} ,{"name": "Prop_SecondsFromVsyncToPhotons_Float","value": "2001"} ,{"name": "Prop_DisplayFrequency_Float","value": "2002"} ,{"name": "Prop_UserIpdMeters_Float","value": "2003"} ,{"name": "Prop_CurrentUniverseId_Uint64","value": "2004"} - ,{"name": "Prop_PreviousUniverseId_Uint64","value": "2005"} + ,{"name": "Prop_PreviousUniverseId_Uint64_deprecated","value": "0"} ,{"name": "Prop_DisplayFirmwareVersion_Uint64","value": "2006"} ,{"name": "Prop_IsOnDesktop_Bool","value": "2007"} ,{"name": "Prop_DisplayMCType_Int32","value": "2008"} @@ -386,10 +388,12 @@ ,{"name": "Submit_VulkanTextureWithArrayData","value": "64"} ,{"name": "Submit_GlArrayTexture","value": "128"} ,{"name": "Submit_IsEgl","value": "256"} + ,{"name": "Submit_TextureWithMotion","value": "536"} ,{"name": "Submit_Reserved2","value": "32768"} ,{"name": "Submit_Reserved3","value": "65536"} ,{"name": "Submit_Reserved4","value": "131072"} ,{"name": "Submit_Reserved5","value": "262144"} + ,{"name": "Submit_Reserved6","value": "524288"} ]} , {"enumname": "vr::EVRState","values": [ {"name": "VRState_Undefined","value": "-1"} @@ -485,6 +489,7 @@ ,{"name": "VREvent_MutualSteamCapabilitiesChanged","value": "538"} ,{"name": "VREvent_OverlayCreated","value": "539"} ,{"name": "VREvent_OverlayDestroyed","value": "540"} + ,{"name": "VREvent_OverlayNameChanged","value": "544"} ,{"name": "VREvent_TrackingRecordingStarted","value": "541"} ,{"name": "VREvent_TrackingRecordingStopped","value": "542"} ,{"name": "VREvent_SetTrackingRecordingPath","value": "543"} @@ -515,6 +520,9 @@ ,{"name": "VREvent_Reserved_0809","value": "809"} ,{"name": "VREvent_Reserved_0810","value": "810"} ,{"name": "VREvent_Reserved_0811","value": "811"} + ,{"name": "VREvent_Reserved_0812","value": "812"} + ,{"name": "VREvent_Reserved_0813","value": "813"} + ,{"name": "VREvent_Reserved_0814","value": "814"} ,{"name": "VREvent_AudioSettingsHaveChanged","value": "820"} ,{"name": "VREvent_BackgroundSettingHasChanged","value": "850"} ,{"name": "VREvent_CameraSettingsHaveChanged","value": "851"} @@ -539,6 +547,7 @@ ,{"name": "VREvent_WindowsMRSectionSettingChanged","value": "870"} ,{"name": "VREvent_OtherSectionSettingChanged","value": "871"} ,{"name": "VREvent_AnyDriverSettingsChanged","value": "872"} + ,{"name": "VREvent_Reserved_0873","value": "873"} ,{"name": "VREvent_StatusUpdate","value": "900"} ,{"name": "VREvent_WebInterface_InstallDriverCompleted","value": "950"} ,{"name": "VREvent_MCImageUpdated","value": "1000"} @@ -862,6 +871,8 @@ ,{"name": "VRInitError_Init_VRDashboardTokenFailure","value": "165"} ,{"name": "VRInitError_Init_VRDashboardEnvironmentFailure","value": "166"} ,{"name": "VRInitError_Init_VRDashboardPathFailure","value": "167"} + ,{"name": "VRInitError_Init_InstallationTooOld","value": "168"} + ,{"name": "VRInitError_Init_ClientVersionAlreadyProvided","value": "169"} ,{"name": "VRInitError_Driver_Failed","value": "200"} ,{"name": "VRInitError_Driver_Unknown","value": "201"} ,{"name": "VRInitError_Driver_HmdUnknown","value": "202"} @@ -1007,6 +1018,10 @@ ,{"name": "VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck","value": "1113"} ,{"name": "VRInitError_VendorSpecific_OculusRuntimeBadInstall","value": "1114"} ,{"name": "VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1","value": "1115"} + ,{"name": "VRInitError_VendorSpecific_Oasis_UnlockRequired","value": "1150"} + ,{"name": "VRInitError_VendorSpecific_VRLink_OutdatedDriverMESA","value": "1200"} + ,{"name": "VRInitError_VendorSpecific_VRLink_OutdatedDriverNVIDIA","value": "1201"} + ,{"name": "VRInitError_VendorSpecific_VRLink_NoVideoSupport","value": "1202"} ,{"name": "VRInitError_Steam_SteamInstallationNotFound","value": "2000"} ,{"name": "VRInitError_LastError","value": "2001"} ]} @@ -1076,6 +1091,15 @@ ,{"name": "OffScale_GyroY","value": "16"} ,{"name": "OffScale_GyroZ","value": "32"} ]} +, {"enumname": "vr::EVRDistortionChannel","values": [ + {"name": "Red","value": "0"} + ,{"name": "Green","value": "1"} + ,{"name": "Blue","value": "2"} + ,{"name": "InverseRed","value": "3"} + ,{"name": "InverseGreen","value": "4"} + ,{"name": "InverseBlue","value": "5"} + ,{"name": "Count","value": "6"} +]} , {"enumname": "vr::EVRApplicationError","values": [ {"name": "VRApplicationError_None","value": "0"} ,{"name": "VRApplicationError_AppKeyAlreadyExists","value": "100"} @@ -1094,6 +1118,7 @@ ,{"name": "VRApplicationError_TransitionAborted","value": "113"} ,{"name": "VRApplicationError_IsTemplate","value": "114"} ,{"name": "VRApplicationError_SteamVRIsExiting","value": "115"} + ,{"name": "VRApplicationError_WaitingForChaperone","value": "116"} ,{"name": "VRApplicationError_BufferTooSmall","value": "200"} ,{"name": "VRApplicationError_PropertyNotSet","value": "201"} ,{"name": "VRApplicationError_UnknownProperty","value": "202"} @@ -1213,6 +1238,7 @@ ,{"name": "VROverlayFlags_MinimalControlBar","value": "67108864"} ,{"name": "VROverlayFlags_EnableClickStabilization","value": "134217728"} ,{"name": "VROverlayFlags_MultiCursor","value": "268435456"} + ,{"name": "VROverlayFlags_NoBackside","value": "536870912"} ]} , {"enumname": "vr::VRMessageOverlayResponse","values": [ {"name": "VRMessageOverlayResponse_ButtonPress_0","value": "0"} @@ -1477,7 +1503,7 @@ ,{ "constname": "k_unScreenshotHandleInvalid","consttype": "const uint32_t", "constval": "0"} ,{ - "constname": "IVRSystem_Version","consttype": "const char *const", "constval": "IVRSystem_023"} + "constname": "IVRSystem_Version","consttype": "const char *const", "constval": "IVRSystem_026"} ,{ "constname": "IVRExtendedDisplay_Version","consttype": "const char *const", "constval": "IVRExtendedDisplay_001"} ,{ @@ -1489,7 +1515,7 @@ ,{ "constname": "k_pch_MimeType_GameTheater","consttype": "const char *const", "constval": "vr/game_theater"} ,{ - "constname": "IVRApplications_Version","consttype": "const char *const", "constval": "IVRApplications_007"} + "constname": "IVRApplications_Version","consttype": "const char *const", "constval": "IVRApplications_008"} ,{ "constname": "IVRChaperone_Version","consttype": "const char *const", "constval": "IVRChaperone_004"} ,{ @@ -1545,6 +1571,8 @@ ,{ "constname": "k_pch_SteamVR_Section","consttype": "const char *const", "constval": "steamvr"} ,{ + "constname": "k_pch_SteamVR_Contrast_Float","consttype": "const char *const", "constval": "contrast"} +,{ "constname": "k_pch_SteamVR_RequireHmd_String","consttype": "const char *const", "constval": "requireHmd"} ,{ "constname": "k_pch_SteamVR_ForcedDriverKey_String","consttype": "const char *const", "constval": "forcedDriver"} @@ -1579,6 +1607,8 @@ ,{ "constname": "k_pch_SteamVR_TrackingLossColor_String","consttype": "const char *const", "constval": "trackingLossColor"} ,{ + "constname": "k_pch_SteamVR_StartColor_String","consttype": "const char *const", "constval": "startColor"} +,{ "constname": "k_pch_SteamVR_ShowStage_Bool","consttype": "const char *const", "constval": "showStage"} ,{ "constname": "k_pch_SteamVR_DrawTrackingReferences_Bool","consttype": "const char *const", "constval": "drawTrackingReferences"} @@ -1603,6 +1633,10 @@ ,{ "constname": "k_pch_SteamVR_MotionSmoothingOverride_Int32","consttype": "const char *const", "constval": "motionSmoothingOverride"} ,{ + "constname": "k_pch_SteamVR_FoveatedSharpening_Bool","consttype": "const char *const", "constval": "sharpening"} +,{ + "constname": "k_pch_SteamVR_FoveatedSharpeningOverride_Int32","consttype": "const char *const", "constval": "sharpeningOverride"} +,{ "constname": "k_pch_SteamVR_FramesToThrottle_Int32","consttype": "const char *const", "constval": "framesToThrottle"} ,{ "constname": "k_pch_SteamVR_AdditionalFramesToPredict_Int32","consttype": "const char *const", "constval": "additionalFramesToPredict"} @@ -1921,6 +1955,8 @@ ,{ "constname": "k_pch_Power_PauseCompositorOnStandby_Bool","consttype": "const char *const", "constval": "pauseCompositorOnStandby"} ,{ + "constname": "k_pch_Power_OverrideWindowsPowerScheme_Bool","consttype": "const char *const", "constval": "overrideWindowsPowerScheme"} +,{ "constname": "k_pch_Dashboard_Section","consttype": "const char *const", "constval": "dashboard"} ,{ "constname": "k_pch_Dashboard_EnableDashboard_Bool","consttype": "const char *const", "constval": "enableDashboard"} @@ -1929,8 +1965,6 @@ ,{ "constname": "k_pch_Dashboard_Position","consttype": "const char *const", "constval": "position"} ,{ - "constname": "k_pch_Dashboard_DesktopScale","consttype": "const char *const", "constval": "desktopScale"} -,{ "constname": "k_pch_Dashboard_DashboardScale","consttype": "const char *const", "constval": "dashboardScale"} ,{ "constname": "k_pch_Dashboard_UseStandaloneSystemLayer","consttype": "const char *const", "constval": "standaloneSystemLayer"} @@ -1939,12 +1973,12 @@ ,{ "constname": "k_pch_Dashboard_AllowVRGamepadUI_Bool","consttype": "const char *const", "constval": "allowVRGamepadUI"} ,{ - "constname": "k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool","consttype": "const char *const", "constval": "allowVRGamepadUIViaGamescope"} -,{ "constname": "k_pch_Dashboard_SteamMatchesHMDFramerate","consttype": "const char *const", "constval": "steamMatchesHMDFramerate"} ,{ "constname": "k_pch_Dashboard_GrabHandleAcceleration","consttype": "const char *const", "constval": "grabHandleAcceleration"} ,{ + "constname": "k_pch_Dashboard_OverlayBacksideColor_String","consttype": "const char *const", "constval": "overlayBacksideColor"} +,{ "constname": "k_pch_modelskin_Section","consttype": "const char *const", "constval": "modelskins"} ,{ "constname": "k_pch_Driver_Enable_Bool","consttype": "const char *const", "constval": "enable"} @@ -2035,7 +2069,7 @@ ,{ "constname": "k_nActionSetPriorityReservedMin","consttype": "const int32_t", "constval": "33554432"} ,{ - "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_010"} + "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_011"} ,{ "constname": "k_ulInvalidIOBufferHandle","consttype": "const uint64_t", "constval": "0"} ,{ @@ -2047,99 +2081,105 @@ ,{ "constname": "IVRDebug_Version","consttype": "const char *const", "constval": "IVRDebug_001"} ,{ - "constname": "IVRIPCResourceManagerClient_Version","consttype": "const char *", "constval": "IVRIPCResourceManagerClient_002"} + "constname": "IVRIPCResourceManagerClient_Version","consttype": "const char *", "constval": "IVRIPCResourceManagerClient_003"} +,{ + "constname": "k_nSteamVRVersionMajor","consttype": "const uint32_t", "constval": "2"} +,{ + "constname": "k_nSteamVRVersionMinor","consttype": "const uint32_t", "constval": "15"} +,{ + "constname": "k_nSteamVRVersionBuild","consttype": "const uint32_t", "constval": "6"} ,{ "constname": "k_ulDisplayRedirectContainer","consttype": "const PropertyContainerHandle_t", "constval": "25769803779"} ,{ "constname": "IVRProperties_Version","consttype": "const char *const", "constval": "IVRProperties_001"} ,{ - "constname": "k_pchPathUserHandRight","consttype": "const char *", "constval": "/user/hand/right"} + "constname": "k_pchPathUserHandRight","consttype": "const char *const", "constval": "/user/hand/right"} ,{ - "constname": "k_pchPathUserHandLeft","consttype": "const char *", "constval": "/user/hand/left"} + "constname": "k_pchPathUserHandLeft","consttype": "const char *const", "constval": "/user/hand/left"} ,{ - "constname": "k_pchPathUserHandPrimary","consttype": "const char *", "constval": "/user/hand/primary"} + "constname": "k_pchPathUserHandPrimary","consttype": "const char *const", "constval": "/user/hand/primary"} ,{ - "constname": "k_pchPathUserHandSecondary","consttype": "const char *", "constval": "/user/hand/secondary"} + "constname": "k_pchPathUserHandSecondary","consttype": "const char *const", "constval": "/user/hand/secondary"} ,{ - "constname": "k_pchPathUserHead","consttype": "const char *", "constval": "/user/head"} + "constname": "k_pchPathUserHead","consttype": "const char *const", "constval": "/user/head"} ,{ - "constname": "k_pchPathUserGamepad","consttype": "const char *", "constval": "/user/gamepad"} + "constname": "k_pchPathUserGamepad","consttype": "const char *const", "constval": "/user/gamepad"} ,{ - "constname": "k_pchPathUserTreadmill","consttype": "const char *", "constval": "/user/treadmill"} + "constname": "k_pchPathUserTreadmill","consttype": "const char *const", "constval": "/user/treadmill"} ,{ - "constname": "k_pchPathUserStylus","consttype": "const char *", "constval": "/user/stylus"} + "constname": "k_pchPathUserStylus","consttype": "const char *const", "constval": "/user/stylus"} ,{ - "constname": "k_pchPathDevices","consttype": "const char *", "constval": "/devices"} + "constname": "k_pchPathDevices","consttype": "const char *const", "constval": "/devices"} ,{ - "constname": "k_pchPathDevicePath","consttype": "const char *", "constval": "/device_path"} + "constname": "k_pchPathDevicePath","consttype": "const char *const", "constval": "/device_path"} ,{ - "constname": "k_pchPathBestAliasPath","consttype": "const char *", "constval": "/best_alias_path"} + "constname": "k_pchPathBestAliasPath","consttype": "const char *const", "constval": "/best_alias_path"} ,{ - "constname": "k_pchPathBoundTrackerAliasPath","consttype": "const char *", "constval": "/bound_tracker_path"} + "constname": "k_pchPathBoundTrackerAliasPath","consttype": "const char *const", "constval": "/bound_tracker_path"} ,{ - "constname": "k_pchPathBoundTrackerRole","consttype": "const char *", "constval": "/bound_tracker_role"} + "constname": "k_pchPathBoundTrackerRole","consttype": "const char *const", "constval": "/bound_tracker_role"} ,{ - "constname": "k_pchPathPoseRaw","consttype": "const char *", "constval": "/pose/raw"} + "constname": "k_pchPathPoseRaw","consttype": "const char *const", "constval": "/pose/raw"} ,{ - "constname": "k_pchPathPoseTip","consttype": "const char *", "constval": "/pose/tip"} + "constname": "k_pchPathPoseTip","consttype": "const char *const", "constval": "/pose/tip"} ,{ - "constname": "k_pchPathPoseGrip","consttype": "const char *", "constval": "/pose/grip"} + "constname": "k_pchPathPoseGrip","consttype": "const char *const", "constval": "/pose/grip"} ,{ - "constname": "k_pchPathSystemButtonClick","consttype": "const char *", "constval": "/input/system/click"} + "constname": "k_pchPathSystemButtonClick","consttype": "const char *const", "constval": "/input/system/click"} ,{ - "constname": "k_pchPathProximity","consttype": "const char *", "constval": "/proximity"} + "constname": "k_pchPathProximity","consttype": "const char *const", "constval": "/proximity"} ,{ - "constname": "k_pchPathControllerTypePrefix","consttype": "const char *", "constval": "/controller_type/"} + "constname": "k_pchPathControllerTypePrefix","consttype": "const char *const", "constval": "/controller_type/"} ,{ - "constname": "k_pchPathInputProfileSuffix","consttype": "const char *", "constval": "/input_profile"} + "constname": "k_pchPathInputProfileSuffix","consttype": "const char *const", "constval": "/input_profile"} ,{ - "constname": "k_pchPathBindingNameSuffix","consttype": "const char *", "constval": "/binding_name"} + "constname": "k_pchPathBindingNameSuffix","consttype": "const char *const", "constval": "/binding_name"} ,{ - "constname": "k_pchPathBindingUrlSuffix","consttype": "const char *", "constval": "/binding_url"} + "constname": "k_pchPathBindingUrlSuffix","consttype": "const char *const", "constval": "/binding_url"} ,{ - "constname": "k_pchPathBindingErrorSuffix","consttype": "const char *", "constval": "/binding_error"} + "constname": "k_pchPathBindingErrorSuffix","consttype": "const char *const", "constval": "/binding_error"} ,{ - "constname": "k_pchPathActiveActionSets","consttype": "const char *", "constval": "/active_action_sets"} + "constname": "k_pchPathActiveActionSets","consttype": "const char *const", "constval": "/active_action_sets"} ,{ - "constname": "k_pchPathComponentUpdates","consttype": "const char *", "constval": "/total_component_updates"} + "constname": "k_pchPathComponentUpdates","consttype": "const char *const", "constval": "/total_component_updates"} ,{ - "constname": "k_pchPathUserFootLeft","consttype": "const char *", "constval": "/user/foot/left"} + "constname": "k_pchPathUserFootLeft","consttype": "const char *const", "constval": "/user/foot/left"} ,{ - "constname": "k_pchPathUserFootRight","consttype": "const char *", "constval": "/user/foot/right"} + "constname": "k_pchPathUserFootRight","consttype": "const char *const", "constval": "/user/foot/right"} ,{ - "constname": "k_pchPathUserShoulderLeft","consttype": "const char *", "constval": "/user/shoulder/left"} + "constname": "k_pchPathUserShoulderLeft","consttype": "const char *const", "constval": "/user/shoulder/left"} ,{ - "constname": "k_pchPathUserShoulderRight","consttype": "const char *", "constval": "/user/shoulder/right"} + "constname": "k_pchPathUserShoulderRight","consttype": "const char *const", "constval": "/user/shoulder/right"} ,{ - "constname": "k_pchPathUserElbowLeft","consttype": "const char *", "constval": "/user/elbow/left"} + "constname": "k_pchPathUserElbowLeft","consttype": "const char *const", "constval": "/user/elbow/left"} ,{ - "constname": "k_pchPathUserElbowRight","consttype": "const char *", "constval": "/user/elbow/right"} + "constname": "k_pchPathUserElbowRight","consttype": "const char *const", "constval": "/user/elbow/right"} ,{ - "constname": "k_pchPathUserKneeLeft","consttype": "const char *", "constval": "/user/knee/left"} + "constname": "k_pchPathUserKneeLeft","consttype": "const char *const", "constval": "/user/knee/left"} ,{ - "constname": "k_pchPathUserKneeRight","consttype": "const char *", "constval": "/user/knee/right"} + "constname": "k_pchPathUserKneeRight","consttype": "const char *const", "constval": "/user/knee/right"} ,{ - "constname": "k_pchPathUserWristLeft","consttype": "const char *", "constval": "/user/wrist/left"} + "constname": "k_pchPathUserWristLeft","consttype": "const char *const", "constval": "/user/wrist/left"} ,{ - "constname": "k_pchPathUserWristRight","consttype": "const char *", "constval": "/user/wrist/right"} + "constname": "k_pchPathUserWristRight","consttype": "const char *const", "constval": "/user/wrist/right"} ,{ - "constname": "k_pchPathUserAnkleLeft","consttype": "const char *", "constval": "/user/ankle/left"} + "constname": "k_pchPathUserAnkleLeft","consttype": "const char *const", "constval": "/user/ankle/left"} ,{ - "constname": "k_pchPathUserAnkleRight","consttype": "const char *", "constval": "/user/ankle/right"} + "constname": "k_pchPathUserAnkleRight","consttype": "const char *const", "constval": "/user/ankle/right"} ,{ - "constname": "k_pchPathUserWaist","consttype": "const char *", "constval": "/user/waist"} + "constname": "k_pchPathUserWaist","consttype": "const char *const", "constval": "/user/waist"} ,{ - "constname": "k_pchPathUserChest","consttype": "const char *", "constval": "/user/chest"} + "constname": "k_pchPathUserChest","consttype": "const char *const", "constval": "/user/chest"} ,{ - "constname": "k_pchPathUserCamera","consttype": "const char *", "constval": "/user/camera"} + "constname": "k_pchPathUserCamera","consttype": "const char *const", "constval": "/user/camera"} ,{ - "constname": "k_pchPathUserKeyboard","consttype": "const char *", "constval": "/user/keyboard"} + "constname": "k_pchPathUserKeyboard","consttype": "const char *const", "constval": "/user/keyboard"} ,{ - "constname": "k_pchPathClientAppKey","consttype": "const char *", "constval": "/client_info/app_key"} + "constname": "k_pchPathClientAppKey","consttype": "const char *const", "constval": "/client_info/app_key"} ,{ "constname": "k_ulInvalidPathHandle","consttype": "const PathHandle_t", "constval": "0"} ,{ - "constname": "IVRPaths_Version","consttype": "const char *const", "constval": "IVRPaths_001"} + "constname": "IVRPaths_Version","consttype": "const char *const", "constval": "IVRPaths_002"} ,{ "constname": "IVRBlockQueue_Version","consttype": "const char *", "constval": "IVRBlockQueue_005"} ], @@ -2209,6 +2249,11 @@ { "fieldname": "depth", "fieldtype": "struct vr::VRTextureDepthInfo_t"}]} ,{"struct": "vr::VRTextureWithPoseAndDepth_t","fields": [ { "fieldname": "depth", "fieldtype": "struct vr::VRTextureDepthInfo_t"}]} +,{"struct": "vr::VRTextureMotionInfo_t","fields": [ +{ "fieldname": "handle", "fieldtype": "void *"}, +{ "fieldname": "mDeltaPose", "fieldtype": "struct vr::HmdMatrix44_t"}]} +,{"struct": "vr::VRTextureWithMotion_t","fields": [ +{ "fieldname": "motion", "fieldtype": "struct vr::VRTextureMotionInfo_t"}]} ,{"struct": "vr::DmabufPlane_t","fields": [ { "fieldname": "unOffset", "fieldtype": "uint32_t"}, { "fieldname": "unStride", "fieldtype": "uint32_t"}, @@ -2292,7 +2337,7 @@ ,{"struct": "vr::VREvent_Ipd_t","fields": [ { "fieldname": "ipdMeters", "fieldtype": "float"}]} ,{"struct": "vr::VREvent_Chaperone_t","fields": [ -{ "fieldname": "m_nPreviousUniverse", "fieldtype": "uint64_t"}, +{ "fieldname": "m_nPreviousUniverse_deprecated", "fieldtype": "uint64_t"}, { "fieldname": "m_nCurrentUniverse", "fieldtype": "uint64_t"}]} ,{"struct": "vr::VREvent_Reserved_t","fields": [ { "fieldname": "reserved0", "fieldtype": "uint64_t"}, @@ -2460,6 +2505,9 @@ { "fieldname": "vAccel", "fieldtype": "struct vr::HmdVector3d_t"}, { "fieldname": "vGyro", "fieldtype": "struct vr::HmdVector3d_t"}, { "fieldname": "unOffScaleFlags", "fieldtype": "uint32_t"}]} +,{"struct": "vr::DistortionCoordinate_t","fields": [ +{ "fieldname": "u", "fieldtype": "float"}, +{ "fieldname": "v", "fieldtype": "float"}]} ,{"struct": "vr::AppOverrideKeys_t","fields": [ { "fieldname": "pchKey", "fieldtype": "const char *"}, { "fieldname": "pchValue", "fieldtype": "const char *"}]} @@ -2645,6 +2693,8 @@ { "fieldname": "eError", "fieldtype": "enum vr::ETrackedPropertyError"}]} ,{"struct": "vr::CVRPropertyHelpers","fields": [ { "fieldname": "m_pProperties", "fieldtype": "class vr::IVRProperties *"}]} +,{"struct": "vr::PathWriteOptions_t","fields": [ +{ "fieldname": "bPostEvents", "fieldtype": "_Bool"}]} ,{"struct": "vr::PathWrite_t","fields": [ { "fieldname": "ulPath", "fieldtype": "PathHandle_t"}, { "fieldname": "writeType", "fieldtype": "enum vr::EPropertyWriteType"}, @@ -2653,7 +2703,9 @@ { "fieldname": "unBufferSize", "fieldtype": "uint32_t"}, { "fieldname": "unTag", "fieldtype": "PropertyTypeTag_t"}, { "fieldname": "eError", "fieldtype": "enum vr::ETrackedPropertyError"}, -{ "fieldname": "pszPath", "fieldtype": "const char *"}]} +{ "fieldname": "pszPath", "fieldtype": "const char *"}, +{ "fieldname": "bPostEvents", "fieldtype": "_Bool"}, +{ "fieldname": "bValueChanged", "fieldtype": "_Bool"}]} ,{"struct": "vr::PathRead_t","fields": [ { "fieldname": "ulPath", "fieldtype": "PathHandle_t"}, { "fieldname": "pvBuffer", "fieldtype": "void *"}, @@ -2707,6 +2759,19 @@ } ,{ "classname": "vr::IVRSystem", + "methodname": "ComputeDistortionSet", + "returntype": "bool", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "eChannel" ,"paramtype": "vr::EVRDistortionChannel"}, +{ "paramname": "bAsNormalizedDeviceCoordinates" ,"paramtype": "bool"}, +{ "paramname": "nNumCoordinates" ,"paramtype": "uint32_t"}, +{ "paramname": "pInput" ,"paramtype": "const struct vr::DistortionCoordinate_t *"}, +{ "paramname": "pOutput" ,"paramtype": "struct vr::DistortionCoordinate_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", "methodname": "GetEyeToHeadTransform", "returntype": "struct vr::HmdMatrix34_t", "params": [ @@ -2974,6 +3039,24 @@ } ,{ "classname": "vr::IVRSystem", + "methodname": "GetEyeTrackedFoveationCenter", + "returntype": "bool", + "params": [ +{ "paramname": "pNdcLeft" ,"paramtype": "struct vr::HmdVector2_t *"}, +{ "paramname": "pNdcRight" ,"paramtype": "struct vr::HmdVector2_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetEyeTrackedFoveationCenterForProjection", + "returntype": "bool", + "params": [ +{ "paramname": "pProjMat" ,"paramtype": "const struct vr::HmdMatrix44_t *"}, +{ "paramname": "pNdc" ,"paramtype": "struct vr::HmdVector2_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", "methodname": "GetControllerState", "returntype": "bool", "params": [ @@ -3068,6 +3151,16 @@ "returntype": "const char *" } ,{ + "classname": "vr::IVRSystem", + "methodname": "SetSDKVersion", + "returntype": "vr::EVRInitError", + "params": [ +{ "paramname": "nVersionMajor" ,"paramtype": "uint32_t"}, +{ "paramname": "nVersionMinor" ,"paramtype": "uint32_t"}, +{ "paramname": "nVersionBuild" ,"paramtype": "uint32_t"} + ] +} +,{ "classname": "vr::IVRExtendedDisplay", "methodname": "GetWindowBounds", "returntype": "void", @@ -3501,6 +3594,14 @@ } ,{ "classname": "vr::IVRApplications", + "methodname": "RegisterSubprocess", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "nPid" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", "methodname": "GetCurrentSceneProcessId", "returntype": "uint32_t" } @@ -3658,7 +3759,7 @@ "methodname": "SetWorkingPerimeter", "returntype": "void", "params": [ -{ "paramname": "pPointBuffer" ,"array_count": "unPointCount" ,"paramtype": "struct vr::HmdVector2_t *"}, +{ "paramname": "pPointBuffer" ,"array_count": "unPointCount" ,"paramtype": "const struct vr::HmdVector2_t *"}, { "paramname": "unPointCount" ,"paramtype": "uint32_t"} ] } @@ -5556,6 +5657,29 @@ } ,{ "classname": "vr::IVRInput", + "methodname": "GetEyeTrackingDataRelativeToNow", + "returntype": "vr::EVRInputError", + "params": [ +{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "fPredictedSecondsFromNow" ,"paramtype": "float"}, +{ "paramname": "pEyeTrackingData" ,"paramtype": "vr::VREyeTrackingData_t *"}, +{ "paramname": "ulEyeTrackingDataSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRInput", + "methodname": "GetEyeTrackingDataForNextFrame", + "returntype": "vr::EVRInputError", + "params": [ +{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "pEyeTrackingData" ,"paramtype": "vr::VREyeTrackingData_t *"}, +{ "paramname": "ulEyeTrackingDataSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRInput", "methodname": "GetBoneCount", "returntype": "vr::EVRInputError", "params": [ @@ -5913,6 +6037,8 @@ { "paramname": "bComputeAccess" ,"paramtype": "bool"}, { "paramname": "unMipLevels" ,"paramtype": "uint32_t"}, { "paramname": "unArrayLayerCount" ,"paramtype": "uint32_t"}, +{ "paramname": "unAdditionalVkCreateFlags" ,"paramtype": "uint32_t"}, +{ "paramname": "unAdditionalVkUsageFlags" ,"paramtype": "uint32_t"}, { "paramname": "pSharedHandle" ,"paramtype": "vr::SharedTextureHandle_t *"} ] }
diff --git a/headers/openvr_capi.h b/headers/openvr_capi.h index c4b6877..b4dd992 100644 --- a/headers/openvr_capi.h +++ b/headers/openvr_capi.h
@@ -118,13 +118,13 @@ static const unsigned long long k_ulOverlayHandleInvalid = 0; static const unsigned long k_unMaxDistortionFunctionParameters = 8; static const unsigned long k_unScreenshotHandleInvalid = 0; -static const char * IVRSystem_Version = "IVRSystem_023"; +static const char * IVRSystem_Version = "IVRSystem_026"; static const char * IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; static const char * IVRTrackedCamera_Version = "IVRTrackedCamera_006"; static const unsigned long k_unMaxApplicationKeyLength = 128; static const char * k_pch_MimeType_HomeApp = "vr/home"; static const char * k_pch_MimeType_GameTheater = "vr/game_theater"; -static const char * IVRApplications_Version = "IVRApplications_007"; +static const char * IVRApplications_Version = "IVRApplications_008"; static const char * IVRChaperone_Version = "IVRChaperone_004"; static const char * IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; static const char * IVRCompositor_Version = "IVRCompositor_029"; @@ -152,6 +152,7 @@ static const unsigned long k_unMaxSettingsKeyLength = 128; static const char * IVRSettings_Version = "IVRSettings_003"; static const char * k_pch_SteamVR_Section = "steamvr"; +static const char * k_pch_SteamVR_Contrast_Float = "contrast"; static const char * k_pch_SteamVR_RequireHmd_String = "requireHmd"; static const char * k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; static const char * k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; @@ -169,6 +170,7 @@ static const char * k_pch_SteamVR_GridColor_String = "gridColor"; static const char * k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; static const char * k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; +static const char * k_pch_SteamVR_StartColor_String = "startColor"; static const char * k_pch_SteamVR_ShowStage_Bool = "showStage"; static const char * k_pch_SteamVR_DrawTrackingReferences_Bool = "drawTrackingReferences"; static const char * k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; @@ -181,6 +183,8 @@ static const char * k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; static const char * k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; static const char * k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; +static const char * k_pch_SteamVR_FoveatedSharpening_Bool = "sharpening"; +static const char * k_pch_SteamVR_FoveatedSharpeningOverride_Int32 = "sharpeningOverride"; static const char * k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; static const char * k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; static const char * k_pch_SteamVR_WorldScale_Float = "worldScale"; @@ -340,18 +344,18 @@ static const char * k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; static const char * k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; static const char * k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; +static const char * k_pch_Power_OverrideWindowsPowerScheme_Bool = "overrideWindowsPowerScheme"; static const char * k_pch_Dashboard_Section = "dashboard"; static const char * k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; static const char * k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; static const char * k_pch_Dashboard_Position = "position"; -static const char * k_pch_Dashboard_DesktopScale = "desktopScale"; static const char * k_pch_Dashboard_DashboardScale = "dashboardScale"; static const char * k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; static const char * k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; static const char * k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; -static const char * k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; static const char * k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; static const char * k_pch_Dashboard_GrabHandleAcceleration = "grabHandleAcceleration"; +static const char * k_pch_Dashboard_OverlayBacksideColor_String = "overlayBacksideColor"; static const char * k_pch_modelskin_Section = "modelskins"; static const char * k_pch_Driver_Enable_Bool = "enable"; static const char * k_pch_Driver_BlockedBySafemode_Bool = "blocked_by_safe_mode"; @@ -397,13 +401,16 @@ static const int k_nActionSetOverlayGlobalPriorityMin = 16777216; static const int k_nActionSetOverlayGlobalPriorityMax = 33554431; static const int k_nActionSetPriorityReservedMin = 33554432; -static const char * IVRInput_Version = "IVRInput_010"; +static const char * IVRInput_Version = "IVRInput_011"; static const unsigned long long k_ulInvalidIOBufferHandle = 0; static const char * IVRIOBuffer_Version = "IVRIOBuffer_002"; static const unsigned long k_ulInvalidSpatialAnchorHandle = 0; static const char * IVRSpatialAnchors_Version = "IVRSpatialAnchors_001"; static const char * IVRDebug_Version = "IVRDebug_001"; -static const char * IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002"; +static const char * IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_003"; +static const unsigned long k_nSteamVRVersionMajor = 2; +static const unsigned long k_nSteamVRVersionMinor = 15; +static const unsigned long k_nSteamVRVersionBuild = 6; static const unsigned long long k_ulDisplayRedirectContainer = 25769803779; static const char * IVRProperties_Version = "IVRProperties_001"; static const char * k_pchPathUserHandRight = "/user/hand/right"; @@ -449,7 +456,7 @@ static const char * k_pchPathUserKeyboard = "/user/keyboard"; static const char * k_pchPathClientAppKey = "/client_info/app_key"; static const unsigned long long k_ulInvalidPathHandle = 0; -static const char * IVRPaths_Version = "IVRPaths_001"; +static const char * IVRPaths_Version = "IVRPaths_002"; static const char * IVRBlockQueue_Version = "IVRBlockQueue_005"; // OpenVR Enums @@ -590,12 +597,14 @@ ETrackedDeviceProperty_Prop_AllowLightSourceFrequency_Bool = 1056, ETrackedDeviceProperty_Prop_SteamRemoteClientID_Uint64 = 1057, ETrackedDeviceProperty_Prop_Reserved_1058 = 1058, + ETrackedDeviceProperty_Prop_Reserved_1059 = 1059, + ETrackedDeviceProperty_Prop_Reserved_1060 = 1060, ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool = 2000, ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float = 2001, ETrackedDeviceProperty_Prop_DisplayFrequency_Float = 2002, ETrackedDeviceProperty_Prop_UserIpdMeters_Float = 2003, ETrackedDeviceProperty_Prop_CurrentUniverseId_Uint64 = 2004, - ETrackedDeviceProperty_Prop_PreviousUniverseId_Uint64 = 2005, + ETrackedDeviceProperty_Prop_PreviousUniverseId_Uint64_deprecated = 0, ETrackedDeviceProperty_Prop_DisplayFirmwareVersion_Uint64 = 2006, ETrackedDeviceProperty_Prop_IsOnDesktop_Bool = 2007, ETrackedDeviceProperty_Prop_DisplayMCType_Int32 = 2008, @@ -817,10 +826,12 @@ EVRSubmitFlags_Submit_VulkanTextureWithArrayData = 64, EVRSubmitFlags_Submit_GlArrayTexture = 128, EVRSubmitFlags_Submit_IsEgl = 256, + EVRSubmitFlags_Submit_TextureWithMotion = 536, EVRSubmitFlags_Submit_Reserved2 = 32768, EVRSubmitFlags_Submit_Reserved3 = 65536, EVRSubmitFlags_Submit_Reserved4 = 131072, EVRSubmitFlags_Submit_Reserved5 = 262144, + EVRSubmitFlags_Submit_Reserved6 = 524288, } EVRSubmitFlags; typedef enum EVRState @@ -920,6 +931,7 @@ EVREventType_VREvent_MutualSteamCapabilitiesChanged = 538, EVREventType_VREvent_OverlayCreated = 539, EVREventType_VREvent_OverlayDestroyed = 540, + EVREventType_VREvent_OverlayNameChanged = 544, EVREventType_VREvent_TrackingRecordingStarted = 541, EVREventType_VREvent_TrackingRecordingStopped = 542, EVREventType_VREvent_SetTrackingRecordingPath = 543, @@ -950,6 +962,9 @@ EVREventType_VREvent_Reserved_0809 = 809, EVREventType_VREvent_Reserved_0810 = 810, EVREventType_VREvent_Reserved_0811 = 811, + EVREventType_VREvent_Reserved_0812 = 812, + EVREventType_VREvent_Reserved_0813 = 813, + EVREventType_VREvent_Reserved_0814 = 814, EVREventType_VREvent_AudioSettingsHaveChanged = 820, EVREventType_VREvent_BackgroundSettingHasChanged = 850, EVREventType_VREvent_CameraSettingsHaveChanged = 851, @@ -974,6 +989,7 @@ EVREventType_VREvent_WindowsMRSectionSettingChanged = 870, EVREventType_VREvent_OtherSectionSettingChanged = 871, EVREventType_VREvent_AnyDriverSettingsChanged = 872, + EVREventType_VREvent_Reserved_0873 = 873, EVREventType_VREvent_StatusUpdate = 900, EVREventType_VREvent_WebInterface_InstallDriverCompleted = 950, EVREventType_VREvent_MCImageUpdated = 1000, @@ -1335,6 +1351,8 @@ EVRInitError_VRInitError_Init_VRDashboardTokenFailure = 165, EVRInitError_VRInitError_Init_VRDashboardEnvironmentFailure = 166, EVRInitError_VRInitError_Init_VRDashboardPathFailure = 167, + EVRInitError_VRInitError_Init_InstallationTooOld = 168, + EVRInitError_VRInitError_Init_ClientVersionAlreadyProvided = 169, EVRInitError_VRInitError_Driver_Failed = 200, EVRInitError_VRInitError_Driver_Unknown = 201, EVRInitError_VRInitError_Driver_HmdUnknown = 202, @@ -1480,6 +1498,10 @@ EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, EVRInitError_VRInitError_VendorSpecific_OculusRuntimeBadInstall = 1114, EVRInitError_VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, + EVRInitError_VRInitError_VendorSpecific_Oasis_UnlockRequired = 1150, + EVRInitError_VRInitError_VendorSpecific_VRLink_OutdatedDriverMESA = 1200, + EVRInitError_VRInitError_VendorSpecific_VRLink_OutdatedDriverNVIDIA = 1201, + EVRInitError_VRInitError_VendorSpecific_VRLink_NoVideoSupport = 1202, EVRInitError_VRInitError_Steam_SteamInstallationNotFound = 2000, EVRInitError_VRInitError_LastError = 2001, } EVRInitError; @@ -1568,6 +1590,17 @@ Imu_OffScaleFlags_OffScale_GyroZ = 32, } Imu_OffScaleFlags; +typedef enum EVRDistortionChannel +{ + EVRDistortionChannel_Red = 0, + EVRDistortionChannel_Green = 1, + EVRDistortionChannel_Blue = 2, + EVRDistortionChannel_InverseRed = 3, + EVRDistortionChannel_InverseGreen = 4, + EVRDistortionChannel_InverseBlue = 5, + EVRDistortionChannel_Count = 6, +} EVRDistortionChannel; + typedef enum EVRApplicationError { EVRApplicationError_VRApplicationError_None = 0, @@ -1587,6 +1620,7 @@ EVRApplicationError_VRApplicationError_TransitionAborted = 113, EVRApplicationError_VRApplicationError_IsTemplate = 114, EVRApplicationError_VRApplicationError_SteamVRIsExiting = 115, + EVRApplicationError_VRApplicationError_WaitingForChaperone = 116, EVRApplicationError_VRApplicationError_BufferTooSmall = 200, EVRApplicationError_VRApplicationError_PropertyNotSet = 201, EVRApplicationError_VRApplicationError_UnknownProperty = 202, @@ -1728,6 +1762,7 @@ VROverlayFlags_MinimalControlBar = 67108864, VROverlayFlags_EnableClickStabilization = 134217728, VROverlayFlags_MultiCursor = 268435456, + VROverlayFlags_NoBackside = 536870912, } VROverlayFlags; typedef enum VRMessageOverlayResponse @@ -2147,6 +2182,17 @@ struct VRTextureDepthInfo_t depth; } VRTextureWithPoseAndDepth_t; +typedef struct VRTextureMotionInfo_t +{ + void * handle; // void * + struct HmdMatrix44_t mDeltaPose; +} VRTextureMotionInfo_t; + +typedef struct VRTextureWithMotion_t +{ + struct VRTextureMotionInfo_t motion; +} VRTextureWithMotion_t; + typedef struct DmabufPlane_t { uint32_t unOffset; @@ -2279,7 +2325,7 @@ typedef struct VREvent_Chaperone_t { - uint64_t m_nPreviousUniverse; + uint64_t m_nPreviousUniverse_deprecated; uint64_t m_nCurrentUniverse; } VREvent_Chaperone_t; @@ -2499,6 +2545,12 @@ uint32_t unOffScaleFlags; } ImuSample_t; +typedef struct DistortionCoordinate_t +{ + float u; + float v; +} DistortionCoordinate_t; + typedef struct AppOverrideKeys_t { char * pchKey; // const char * @@ -2780,6 +2832,11 @@ intptr_t m_pProperties; // class vr::IVRProperties * } CVRPropertyHelpers; +typedef struct PathWriteOptions_t +{ + bool bPostEvents; +} PathWriteOptions_t; + typedef struct PathWrite_t { PathHandle_t ulPath; @@ -2790,6 +2847,8 @@ PropertyTypeTag_t unTag; enum ETrackedPropertyError eError; char * pszPath; // const char * + bool bPostEvents; + bool bValueChanged; } PathWrite_t; typedef struct PathRead_t @@ -2881,6 +2940,7 @@ struct HmdMatrix44_t (OPENVR_FNTABLE_CALLTYPE *GetProjectionMatrix)(EVREye eEye, float fNearZ, float fFarZ); void (OPENVR_FNTABLE_CALLTYPE *GetProjectionRaw)(EVREye eEye, float * pfLeft, float * pfRight, float * pfTop, float * pfBottom); bool (OPENVR_FNTABLE_CALLTYPE *ComputeDistortion)(EVREye eEye, float fU, float fV, struct DistortionCoordinates_t * pDistortionCoordinates); + bool (OPENVR_FNTABLE_CALLTYPE *ComputeDistortionSet)(EVREye eEye, EVRDistortionChannel eChannel, bool bAsNormalizedDeviceCoordinates, uint32_t nNumCoordinates, struct DistortionCoordinate_t * pInput, struct DistortionCoordinate_t * pOutput); struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetEyeToHeadTransform)(EVREye eEye); bool (OPENVR_FNTABLE_CALLTYPE *GetTimeSinceLastVsync)(float * pfSecondsSinceLastVsync, uint64_t * pulFrameCounter); int32_t (OPENVR_FNTABLE_CALLTYPE *GetD3D9AdapterIndex)(); @@ -2911,6 +2971,8 @@ bool (OPENVR_FNTABLE_CALLTYPE *PollNextEventWithPoseAndOverlays)(ETrackingUniverseOrigin eOrigin, struct VREvent_t * pEvent, uint32_t uncbVREvent, struct TrackedDevicePose_t * pTrackedDevicePose, VROverlayHandle_t * pulOverlayHandle); char * (OPENVR_FNTABLE_CALLTYPE *GetEventTypeNameFromEnum)(EVREventType eType); struct HiddenAreaMesh_t (OPENVR_FNTABLE_CALLTYPE *GetHiddenAreaMesh)(EVREye eEye, EHiddenAreaMeshType type); + bool (OPENVR_FNTABLE_CALLTYPE *GetEyeTrackedFoveationCenter)(struct HmdVector2_t * pNdcLeft, struct HmdVector2_t * pNdcRight); + bool (OPENVR_FNTABLE_CALLTYPE *GetEyeTrackedFoveationCenterForProjection)(struct HmdMatrix44_t * pProjMat, struct HmdVector2_t * pNdc); bool (OPENVR_FNTABLE_CALLTYPE *GetControllerState)(TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t * pControllerState, uint32_t unControllerStateSize); bool (OPENVR_FNTABLE_CALLTYPE *GetControllerStateWithPose)(ETrackingUniverseOrigin eOrigin, TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t * pControllerState, uint32_t unControllerStateSize, struct TrackedDevicePose_t * pTrackedDevicePose); void (OPENVR_FNTABLE_CALLTYPE *TriggerHapticPulse)(TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec); @@ -2924,6 +2986,7 @@ void (OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_Exiting)(); uint32_t (OPENVR_FNTABLE_CALLTYPE *GetAppContainerFilePaths)(char * pchBuffer, uint32_t unBufferSize); char * (OPENVR_FNTABLE_CALLTYPE *GetRuntimeVersion)(); + EVRInitError (OPENVR_FNTABLE_CALLTYPE *SetSDKVersion)(uint32_t nVersionMajor, uint32_t nVersionMinor, uint32_t nVersionBuild); }; struct VR_IVRExtendedDisplay_FnTable @@ -2982,6 +3045,7 @@ EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *PerformApplicationPrelaunchCheck)(char * pchAppKey); char * (OPENVR_FNTABLE_CALLTYPE *GetSceneApplicationStateNameFromEnum)(EVRSceneApplicationState state); EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchInternalProcess)(char * pchBinaryPath, char * pchArguments, char * pchWorkingDirectory); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *RegisterSubprocess)(uint32_t nPid); uint32_t (OPENVR_FNTABLE_CALLTYPE *GetCurrentSceneProcessId)(); }; @@ -3269,6 +3333,8 @@ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalActionData)(VRActionHandle_t action, struct InputSkeletalActionData_t * pActionData, uint32_t unActionDataSize); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetDominantHand)(ETrackedControllerRole * peDominantHand); EVRInputError (OPENVR_FNTABLE_CALLTYPE *SetDominantHand)(ETrackedControllerRole eDominantHand); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetEyeTrackingDataRelativeToNow)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, VREyeTrackingData_t * pEyeTrackingData, uint32_t ulEyeTrackingDataSize); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetEyeTrackingDataForNextFrame)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, VREyeTrackingData_t * pEyeTrackingData, uint32_t ulEyeTrackingDataSize); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneCount)(VRActionHandle_t action, uint32_t * pBoneCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneHierarchy)(VRActionHandle_t action, BoneIndex_t * pParentIndices, uint32_t unIndexArayCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneName)(VRActionHandle_t action, BoneIndex_t nBoneIndex, char * pchBoneName, uint32_t unNameBufferSize); @@ -3319,7 +3385,7 @@ struct VR_IVRIPCResourceManagerClient_FnTable { - bool (OPENVR_FNTABLE_CALLTYPE *NewSharedVulkanImage)(uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, SharedTextureHandle_t * pSharedHandle); + bool (OPENVR_FNTABLE_CALLTYPE *NewSharedVulkanImage)(uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, uint32_t unAdditionalVkCreateFlags, uint32_t unAdditionalVkUsageFlags, SharedTextureHandle_t * pSharedHandle); bool (OPENVR_FNTABLE_CALLTYPE *NewSharedVulkanBuffer)(uint32_t nSize, uint32_t nUsageFlags, SharedTextureHandle_t * pSharedHandle); bool (OPENVR_FNTABLE_CALLTYPE *NewSharedVulkanSemaphore)(bool bCounting, SharedTextureHandle_t * pSharedHandle); bool (OPENVR_FNTABLE_CALLTYPE *RefResource)(SharedTextureHandle_t hSharedHandle, uint64_t * pNewIpcHandle);
diff --git a/headers/openvr_driver.h b/headers/openvr_driver.h index c967c94..fcd6755 100644 --- a/headers/openvr_driver.h +++ b/headers/openvr_driver.h
@@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 2; - static const uint32_t k_nSteamVRVersionMinor = 12; - static const uint32_t k_nSteamVRVersionBuild = 14; + static const uint32_t k_nSteamVRVersionMinor = 15; + static const uint32_t k_nSteamVRVersionBuild = 6; } // namespace vr // public_vrtypes.h @@ -193,6 +193,17 @@ VRTextureDepthInfo_t depth; }; +struct VRTextureMotionInfo_t +{ + void *handle; // See ETextureType definition above + HmdMatrix44_t mDeltaPose; // Incremental application-applied transform, if any, since the previous frame that affects the view. +}; + +struct VRTextureWithMotion_t : VRTextureWithPoseAndDepth_t +{ + VRTextureMotionInfo_t motion; +}; + // 64-bit types that are part of public structures // that are replicated in shared memory. #if defined(__linux__) || defined(__APPLE__) @@ -209,7 +220,7 @@ { uint32_t unOffset; uint32_t unStride; - int32_t nFd; + int32_t nFd; // This is not consumed, it is dup'ed. }; struct DmabufAttributes_t @@ -476,6 +487,8 @@ Prop_AllowLightSourceFrequency_Bool = 1056, // Shows the Anti-Flicker option in camera settings. Prop_SteamRemoteClientID_Uint64 = 1057, // For vrlink Prop_Reserved_1058 = 1058, + Prop_Reserved_1059 = 1059, + Prop_Reserved_1060 = 1060, // Properties that are unique to TrackedDeviceClass_HMD Prop_ReportsTimeSinceVSync_Bool = 2000, @@ -483,7 +496,7 @@ Prop_DisplayFrequency_Float = 2002, Prop_UserIpdMeters_Float = 2003, Prop_CurrentUniverseId_Uint64 = 2004, - Prop_PreviousUniverseId_Uint64 = 2005, + Prop_PreviousUniverseId_Uint64_deprecated = Prop_Invalid, Prop_DisplayFirmwareVersion_Uint64 = 2006, Prop_IsOnDesktop_Bool = 2007, Prop_DisplayMCType_Int32 = 2008, @@ -778,11 +791,15 @@ // If the texture is an EGL texture and not an glX/wGL texture (Linux only, currently) Submit_IsEgl = 0x100, + // Set to indicate that pTexture is a pointer to a VRTextureWithMotion_t. + Submit_TextureWithMotion = 0x200 | Submit_TextureWithPose | Submit_TextureWithDepth, + // Do not use Submit_Reserved2 = 0x08000, Submit_Reserved3 = 0x10000, Submit_Reserved4 = 0x20000, Submit_Reserved5 = 0x40000, + Submit_Reserved6 = 0x80000, }; /** Data required for passing Vulkan textures to IVRCompositor::Submit. @@ -930,8 +947,8 @@ VREvent_ScreenshotProgressToDashboard = 524, // Sent by compositor to the dashboard that a completed screenshot was submitted VREvent_PrimaryDashboardDeviceChanged = 525, - VREvent_RoomViewShown = 526, // Sent by compositor whenever room-view is enabled - VREvent_RoomViewHidden = 527, // Sent by compositor whenever room-view is disabled + VREvent_RoomViewShown = 526, // Sent by compositor whenever room-view is enabled (for scene apps only - not for construct or transient bounds) + VREvent_RoomViewHidden = 527, // Sent by compositor whenever room-view is disabled (for scene apps only - not for construct or transient bounds) VREvent_ShowUI = 528, // data is showUi VREvent_ShowDevTools = 529, // data is showDevTools VREvent_DesktopViewUpdating = 530, @@ -939,13 +956,14 @@ VREvent_StartDashboard = 532, VREvent_ElevatePrism = 533, - VREvent_OverlayClosed = 534, + VREvent_OverlayClosed = 534, // The overlay's close button is pressed. VREvent_DashboardThumbChanged = 535, // Sent when a dashboard thumbnail image changes VREvent_DesktopMightBeVisible = 536, // Sent when any known desktop related overlay is visible VREvent_DesktopMightBeHidden = 537, // Sent when all known desktop related overlays are hidden VREvent_MutualSteamCapabilitiesChanged = 538, // Sent when the set of capabilities common between both Steam and SteamVR have changed. VREvent_OverlayCreated = 539, // An OpenVR overlay of any sort was created. Data is overlay. VREvent_OverlayDestroyed = 540, // An OpenVR overlay of any sort was destroyed. Data is overlay. + VREvent_OverlayNameChanged = 544, // An OpenVR overlay's name changed. Data is overlay. VREvent_TrackingRecordingStarted = 541, VREvent_TrackingRecordingStopped = 542, @@ -982,6 +1000,9 @@ VREvent_Reserved_0809 = 809, VREvent_Reserved_0810 = 810, VREvent_Reserved_0811 = 811, + VREvent_Reserved_0812 = 812, + VREvent_Reserved_0813 = 813, + VREvent_Reserved_0814 = 814, VREvent_AudioSettingsHaveChanged = 820, @@ -1008,6 +1029,7 @@ VREvent_WindowsMRSectionSettingChanged = 870, VREvent_OtherSectionSettingChanged = 871, VREvent_AnyDriverSettingsChanged = 872, + VREvent_Reserved_0873 = 873, VREvent_StatusUpdate = 900, @@ -1259,7 +1281,7 @@ struct VREvent_Chaperone_t { - uint64_t m_nPreviousUniverse; + uint64_t m_nPreviousUniverse_deprecated; uint64_t m_nCurrentUniverse; }; @@ -1843,6 +1865,8 @@ VRInitError_Init_VRDashboardTokenFailure = 165, VRInitError_Init_VRDashboardEnvironmentFailure = 166, VRInitError_Init_VRDashboardPathFailure = 167, + VRInitError_Init_InstallationTooOld = 168, + VRInitError_Init_ClientVersionAlreadyProvided = 169, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1997,6 +2021,12 @@ VRInitError_VendorSpecific_OculusRuntimeBadInstall = 1114, VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, + VRInitError_VendorSpecific_Oasis_UnlockRequired = 1150, + + VRInitError_VendorSpecific_VRLink_OutdatedDriverMESA = 1200, + VRInitError_VendorSpecific_VRLink_OutdatedDriverNVIDIA = 1201, + VRInitError_VendorSpecific_VRLink_NoVideoSupport = 1202, + VRInitError_Steam_SteamInstallationNotFound = 2000, // Strictly a placeholder @@ -2221,6 +2251,22 @@ uint32_t unOffScaleFlags; }; +enum class EVRDistortionChannel : uint32_t +{ + Red = 0, // given a coordinate in distorted panel space, returns the coordinate to sample in rectilinear render space for the red channel + Green, // given a coordinate in distorted panel space, returns the coordinate to sample in rectilinear render space for the green channel + Blue, // given a coordinate in distorted panel space, returns the coordinate to sample in rectilinear render space for the blue channel + InverseRed, // given a coordinate in rectilinear render space, returns the corresponding coordinate in distorted panel space for the red channel + InverseGreen, // given a coordinate in rectilinear render space, returns the corresponding coordinate in distorted panel space for the green channel + InverseBlue, // given a coordinate in rectilinear render space, returns the corresponding coordinate in distorted panel space for the blue channel + Count +}; + +struct DistortionCoordinate_t +{ + float u, v; // 0..1 +}; + #pragma pack( pop ) // figure out how to import from the VR API dll @@ -2515,6 +2561,7 @@ //----------------------------------------------------------------------------- // steamvr keys static const char * const k_pch_SteamVR_Section = "steamvr"; + static const char * const k_pch_SteamVR_Contrast_Float = "contrast"; static const char * const k_pch_SteamVR_RequireHmd_String = "requireHmd"; static const char * const k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; static const char * const k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; @@ -2532,6 +2579,7 @@ static const char * const k_pch_SteamVR_GridColor_String = "gridColor"; static const char * const k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; static const char * const k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; + static const char * const k_pch_SteamVR_StartColor_String = "startColor"; static const char * const k_pch_SteamVR_ShowStage_Bool = "showStage"; static const char * const k_pch_SteamVR_DrawTrackingReferences_Bool = "drawTrackingReferences"; static const char * const k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; @@ -2544,6 +2592,8 @@ static const char * const k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; static const char * const k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; static const char * const k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; + static const char * const k_pch_SteamVR_FoveatedSharpening_Bool = "sharpening"; + static const char * const k_pch_SteamVR_FoveatedSharpeningOverride_Int32 = "sharpeningOverride"; static const char * const k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; static const char * const k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; static const char * const k_pch_SteamVR_WorldScale_Float = "worldScale"; @@ -2742,6 +2792,7 @@ static const char * const k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; static const char * const k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; static const char * const k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; + static const char * const k_pch_Power_OverrideWindowsPowerScheme_Bool = "overrideWindowsPowerScheme"; //----------------------------------------------------------------------------- // dashboard keys @@ -2749,14 +2800,13 @@ static const char * const k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; static const char * const k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; static const char * const k_pch_Dashboard_Position = "position"; - static const char * const k_pch_Dashboard_DesktopScale = "desktopScale"; static const char * const k_pch_Dashboard_DashboardScale = "dashboardScale"; static const char * const k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; static const char * const k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; - static const char * const k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; static const char * const k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; static const char * const k_pch_Dashboard_GrabHandleAcceleration = "grabHandleAcceleration"; + static const char * const k_pch_Dashboard_OverlayBacksideColor_String = "overlayBacksideColor"; //----------------------------------------------------------------------------- // model skin keys @@ -4256,7 +4306,7 @@ * * nImageFormat: in VkFormat */ - virtual bool NewSharedVulkanImage( uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, vr::SharedTextureHandle_t *pSharedHandle ) = 0; + virtual bool NewSharedVulkanImage( uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, uint32_t unAdditionalVkCreateFlags, uint32_t unAdditionalVkUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0; /** Create a new tracked Vulkan Buffer */ virtual bool NewSharedVulkanBuffer( uint32_t nSize, uint32_t nUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0; @@ -4314,7 +4364,7 @@ virtual ~IVRIPCResourceManagerClient() {}; }; -static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002"; +static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_003"; }
diff --git a/lib/linuxarm64/libopenvr_api_unity.so b/lib/linuxarm64/libopenvr_api_unity.so index 90cfd40..b924fde 100644 --- a/lib/linuxarm64/libopenvr_api_unity.so +++ b/lib/linuxarm64/libopenvr_api_unity.so Binary files differ
diff --git a/samples/bin/androidarm64/libopenvr_api.so b/samples/bin/androidarm64/libopenvr_api.so index 104fd37..ff71df7 100644 --- a/samples/bin/androidarm64/libopenvr_api.so +++ b/samples/bin/androidarm64/libopenvr_api.so Binary files differ
diff --git a/samples/bin/linux32/libopenvr_api.so b/samples/bin/linux32/libopenvr_api.so index b04a4c2..8af2f11 100644 --- a/samples/bin/linux32/libopenvr_api.so +++ b/samples/bin/linux32/libopenvr_api.so Binary files differ
diff --git a/samples/bin/linux64/libopenvr_api.so b/samples/bin/linux64/libopenvr_api.so index 198da62..614970f 100644 --- a/samples/bin/linux64/libopenvr_api.so +++ b/samples/bin/linux64/libopenvr_api.so Binary files differ
diff --git a/samples/bin/linuxarm64/libopenvr_api.so b/samples/bin/linuxarm64/libopenvr_api.so index 74b9301..109815e 100644 --- a/samples/bin/linuxarm64/libopenvr_api.so +++ b/samples/bin/linuxarm64/libopenvr_api.so Binary files differ
diff --git a/samples/bin/win32/hmd_opencv_sandbox.exe b/samples/bin/win32/hmd_opencv_sandbox.exe index 47b8c6e..6240992 100755 --- a/samples/bin/win32/hmd_opencv_sandbox.exe +++ b/samples/bin/win32/hmd_opencv_sandbox.exe Binary files differ
diff --git a/samples/bin/win32/openvr_api.dll b/samples/bin/win32/openvr_api.dll index b17a514..5e2468e 100644 --- a/samples/bin/win32/openvr_api.dll +++ b/samples/bin/win32/openvr_api.dll Binary files differ
diff --git a/samples/bin/win64/hmd_opencv_sandbox.exe b/samples/bin/win64/hmd_opencv_sandbox.exe index d4b0427..9f50b4b 100755 --- a/samples/bin/win64/hmd_opencv_sandbox.exe +++ b/samples/bin/win64/hmd_opencv_sandbox.exe Binary files differ
diff --git a/samples/bin/win64/openvr_api.dll b/samples/bin/win64/openvr_api.dll index ab53dc6..83b2019 100644 --- a/samples/bin/win64/openvr_api.dll +++ b/samples/bin/win64/openvr_api.dll Binary files differ
diff --git a/samples/drivers/drivers/simplecontroller/src/controller_device_driver.cpp b/samples/drivers/drivers/simplecontroller/src/controller_device_driver.cpp index 8bf25b0..37e692d 100644 --- a/samples/drivers/drivers/simplecontroller/src/controller_device_driver.cpp +++ b/samples/drivers/drivers/simplecontroller/src/controller_device_driver.cpp
@@ -11,8 +11,8 @@ static const char *my_controller_main_settings_section = "driver_simplecontroller"; // Individual right/left hand settings sections -static const char *my_controller_right_settings_section = "driver_simplecontroller_left_controller"; -static const char *my_controller_left_settings_section = "driver_simplecontroller_right_controller"; +static const char *my_controller_right_settings_section = "driver_simplecontroller_right_controller"; +static const char *my_controller_left_settings_section = "driver_simplecontroller_left_controller"; // These are the keys we want to retrieve the values for in the settings static const char *my_controller_settings_key_model_number = "mycontroller_model_number";
diff --git a/samples/drivers/drivers/simpletrackers/src/tracker_device_driver.h b/samples/drivers/drivers/simpletrackers/src/tracker_device_driver.h index 0581388..b5dbb4d 100644 --- a/samples/drivers/drivers/simpletrackers/src/tracker_device_driver.h +++ b/samples/drivers/drivers/simpletrackers/src/tracker_device_driver.h
@@ -16,6 +16,8 @@ MyComponent_trigger_value, MyComponent_trigger_click, + MyComponent_grip_click, + MyComponent_MAX };
diff --git a/src/vrcore/hmderrors_public.cpp b/src/vrcore/hmderrors_public.cpp index ef204bd..9602a04 100644 --- a/src/vrcore/hmderrors_public.cpp +++ b/src/vrcore/hmderrors_public.cpp
@@ -206,6 +206,8 @@ RETURN_ENUM_AS_STRING( VRInitError_Init_VRDashboardTokenFailure ); RETURN_ENUM_AS_STRING( VRInitError_Init_VRDashboardEnvironmentFailure ); RETURN_ENUM_AS_STRING( VRInitError_Init_VRDashboardPathFailure ); + RETURN_ENUM_AS_STRING( VRInitError_Init_InstallationTooOld ); + RETURN_ENUM_AS_STRING( VRInitError_Init_ClientVersionAlreadyProvided ); RETURN_ENUM_AS_STRING( VRInitError_Driver_Failed ); RETURN_ENUM_AS_STRING( VRInitError_Driver_Unknown ); @@ -360,6 +362,13 @@ RETURN_ENUM_AS_STRING( VRInitError_VendorSpecific_HmdFound_UserDataError ); RETURN_ENUM_AS_STRING( VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 ); + // VRLink + RETURN_ENUM_AS_STRING( VRInitError_VendorSpecific_VRLink_OutdatedDriverMESA ); + RETURN_ENUM_AS_STRING( VRInitError_VendorSpecific_VRLink_OutdatedDriverNVIDIA ); + RETURN_ENUM_AS_STRING( VRInitError_VendorSpecific_VRLink_NoVideoSupport ); + + RETURN_ENUM_AS_STRING( VRInitError_VendorSpecific_Oasis_UnlockRequired ); + RETURN_ENUM_AS_STRING( VRInitError_Steam_SteamInstallationNotFound ); default:
diff --git a/src/vrcore/sharedlibtools_public.cpp b/src/vrcore/sharedlibtools_public.cpp index dd4575a..46199c2 100644 --- a/src/vrcore/sharedlibtools_public.cpp +++ b/src/vrcore/sharedlibtools_public.cpp
@@ -1,5 +1,8 @@ //========= Copyright Valve Corporation ============// #include <vrcore/sharedlibtools_public.h> + +#include "vrcore/strtools_public.h" + #include <string.h> #if defined(_WIN32) @@ -14,7 +17,9 @@ { SharedLibHandle pHandle = nullptr; #if defined( _WIN32) - pHandle = ( SharedLibHandle )LoadLibraryEx( pchPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); + std::wstring wsFixedPath = UTF8to16( pchPath ); + + pHandle = ( SharedLibHandle )LoadLibraryExW( wsFixedPath.c_str(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); #elif defined(POSIX) pHandle = (SharedLibHandle) dlopen( pchPath, RTLD_LOCAL|RTLD_NOW ); #endif
diff --git a/src/vrcore/vrpathregistry_public.cpp b/src/vrcore/vrpathregistry_public.cpp index 0fbff25..2939efd 100644 --- a/src/vrcore/vrpathregistry_public.cpp +++ b/src/vrcore/vrpathregistry_public.cpp
@@ -482,6 +482,7 @@ } //----------------------------------------------------------------------------- +// Purpose: Used by things that guess appkey to special case children of SteamVR processes //----------------------------------------------------------------------------- bool CVRPathRegistry_Public::IsChildOfVRServer() {