diff options
34 files changed, 424 insertions, 79 deletions
diff --git a/bin/linux32/libopenvr_api.so b/bin/linux32/libopenvr_api.so Binary files differindex 7c3940b..f0c2bef 100755 --- a/bin/linux32/libopenvr_api.so +++ b/bin/linux32/libopenvr_api.so diff --git a/bin/linux32/libopenvr_api.so.dbg b/bin/linux32/libopenvr_api.so.dbg Binary files differindex 9520d4c..dc673e5 100755 --- a/bin/linux32/libopenvr_api.so.dbg +++ b/bin/linux32/libopenvr_api.so.dbg diff --git a/bin/linux64/libopenvr_api.so b/bin/linux64/libopenvr_api.so Binary files differindex 7ee96ea..b5db2f0 100755 --- a/bin/linux64/libopenvr_api.so +++ b/bin/linux64/libopenvr_api.so diff --git a/bin/linux64/libopenvr_api.so.dbg b/bin/linux64/libopenvr_api.so.dbg Binary files differindex 240ea67..e906635 100755 --- a/bin/linux64/libopenvr_api.so.dbg +++ b/bin/linux64/libopenvr_api.so.dbg diff --git a/bin/osx32/libopenvr_api.dylib b/bin/osx32/libopenvr_api.dylib Binary files differindex b3c2569..8a2df47 100755 --- a/bin/osx32/libopenvr_api.dylib +++ b/bin/osx32/libopenvr_api.dylib diff --git a/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib b/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib Binary files differindex 095ca48..2351ff4 100644 --- a/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib +++ b/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib diff --git a/bin/win32/openvr_api.dll b/bin/win32/openvr_api.dll Binary files differindex 66d492b..4f5bdf1 100644 --- a/bin/win32/openvr_api.dll +++ b/bin/win32/openvr_api.dll diff --git a/bin/win32/openvr_api.pdb b/bin/win32/openvr_api.pdb Binary files differindex 0614e8f..f3429e0 100644 --- a/bin/win32/openvr_api.pdb +++ b/bin/win32/openvr_api.pdb diff --git a/bin/win64/openvr_api.dll b/bin/win64/openvr_api.dll Binary files differindex 7c9a0b1..3b05986 100644 --- a/bin/win64/openvr_api.dll +++ b/bin/win64/openvr_api.dll diff --git a/bin/win64/openvr_api.pdb b/bin/win64/openvr_api.pdb Binary files differindex 6b11a0a..3c53691 100644 --- a/bin/win64/openvr_api.pdb +++ b/bin/win64/openvr_api.pdb diff --git a/headers/openvr.h b/headers/openvr.h index 59d97a1..3585e25 100644 --- a/headers/openvr.h +++ b/headers/openvr.h @@ -15,8 +15,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 3; - static const uint32_t k_nSteamVRVersionBuild = 20; + static const uint32_t k_nSteamVRVersionMinor = 4; + static const uint32_t k_nSteamVRVersionBuild = 18; } // namespace vr // vrtypes.h @@ -207,7 +207,7 @@ enum ETrackedControllerRole TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand TrackedControllerRole_OptOut = 3, // Tracked device is opting out of left/right hand selection TrackedControllerRole_Treadmill = 4, // Tracked device is a treadmill - TrackedControllerRole_Max = 4 + TrackedControllerRole_Max = 5 }; @@ -430,6 +430,11 @@ enum ETrackedDeviceProperty Prop_CameraDistortionCoefficients_Float_Array = 2073, // Prop_NumCameras_Int32-sized array of double[vr::k_unMaxDistortionFunctionParameters] (max size is vr::k_unMaxCameras) Prop_ExpectedControllerType_String = 2074, + Prop_DisplayAvailableFrameRates_Float_Array = 2080, // populated by compositor from actual EDID list when available from GPU driver + Prop_DisplaySupportsMultipleFramerates_Bool = 2081, // if this is true but Prop_DisplayAvailableFrameRates_Float_Array is empty, explain to user + + Prop_DashboardLayoutPathName_String = 2090, + // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, @@ -490,7 +495,7 @@ enum ETrackedDeviceProperty // Properties that are set internally based on other information provided by drivers Prop_ControllerType_String = 7000, - Prop_LegacyInputProfile_String = 7001, + //Prop_LegacyInputProfile_String = 7001, // This is no longer used. See "legacy_binding" in the input profile instead. Prop_ControllerHandSelectionPriority_Int32 = 7002, // Allows hand assignments to prefer some controllers over others. High numbers are selected over low numbers // Vendors are free to expose private debug data in this reserved region @@ -734,12 +739,14 @@ enum EVREventType VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down VREvent_RestartRequested = 705, // A driver or other component wants the user to restart SteamVR - VREvent_ChaperoneDataHasChanged = 800, // Sent when the process needs to call VRChaperone()->ReloadInfo() + VREvent_ChaperoneDataHasChanged = 800, // this will never happen with the new chaperone system VREvent_ChaperoneUniverseHasChanged = 801, - VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneTempDataHasChanged = 802, // this will never happen with the new chaperone system VREvent_ChaperoneSettingsHaveChanged = 803, VREvent_SeatedZeroPoseReset = 804, VREvent_ChaperoneFlushCache = 805, // Sent when the process needs to reload any cached data it retrieved from VRChaperone() + VREvent_ChaperoneRoomSetupStarting = 806, // Triggered by CVRChaperoneClient::RoomSetupStarting + VREvent_ChaperoneRoomSetupFinished = 807, // Triggered by CVRChaperoneClient::CommitWorkingCopy VREvent_AudioSettingsHaveChanged = 820, @@ -794,6 +801,7 @@ enum EVREventType VREvent_Compositor_HDCPError = 1414, // data is hdcpError VREvent_Compositor_ApplicationNotResponding = 1415, VREvent_Compositor_ApplicationResumed = 1416, + VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, @@ -871,9 +879,9 @@ enum EVRButtonId k_EButton_Dashboard_Back = k_EButton_Grip, - k_EButton_Knuckles_A = k_EButton_Grip, - k_EButton_Knuckles_B = k_EButton_ApplicationMenu, - k_EButton_Knuckles_JoyStick = k_EButton_Axis3, + k_EButton_IndexController_A = k_EButton_Grip, + k_EButton_IndexController_B = k_EButton_ApplicationMenu, + k_EButton_IndexController_JoyStick = k_EButton_Axis3, k_EButton_Max = 64 }; @@ -1099,7 +1107,7 @@ enum EShowUIType { ShowUI_ControllerBinding = 0, ShowUI_ManageTrackers = 1, - ShowUI_QuickStart = 2, + // ShowUI_QuickStart = 2, // Deprecated ShowUI_Pairing = 3, ShowUI_Settings = 4, }; @@ -1428,7 +1436,7 @@ enum EVRSkeletalTrackingLevel // body part location can be measured directly but with fewer degrees of freedom than the actual body // part. Certain body part positions may be unmeasured by the device and estimated from other input data. - // E.g. Knuckles, gloves that only measure finger curl + // E.g. Index Controllers, gloves that only measure finger curl VRSkeletalTracking_Partial, // Body part location can be measured directly throughout the entire range of motion of the body part. @@ -1505,6 +1513,7 @@ enum EVRInitError VRInitError_Init_VRWebHelperStartupFailed = 141, VRInitError_Init_TrackerManagerInitFailed = 142, VRInitError_Init_AlreadyRunning = 143, + VRInitError_Init_FailedForVrMonitor = 144, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1519,6 +1528,7 @@ enum EVRInitError // VRInitError_Driver_HmdDisplayNotFoundAfterFix = 210, // not needed: here for historic reasons VRInitError_Driver_HmdDriverIdOutOfBounds = 211, VRInitError_Driver_HmdDisplayMirrored = 212, + VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, VRInitError_IPC_ServerInitFailed = 300, VRInitError_IPC_ConnectFailed = 301, @@ -2523,6 +2533,7 @@ namespace vr static const char * const k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; static const char * const k_pch_SteamVR_DebugInput = "debugInput"; static const char * const k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; + static const char * const k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; static const char * const k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * const k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -2551,6 +2562,7 @@ namespace vr static const char * const k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; + static const char * const k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; static const char * const k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; static const char * const k_pch_Lighthouse_NewPairing_Bool = "newPairing"; @@ -2600,7 +2612,7 @@ namespace vr static const char * const k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * const k_pch_Perf_TestData_Float = "perfTestData"; - static const char * const k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + static const char * const k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; //----------------------------------------------------------------------------- // collision bounds keys @@ -2867,6 +2879,11 @@ public: /** Hides the chaperone data in the working set to preview in the compositor (if it was visible).*/ virtual void HideWorkingSetPreview() = 0; + + /** Fire an event that the tracking system can use to know room setup is about to begin. This lets the tracking + * system make any last minute adjustments that should be incorporated into the new setup. If the user is adjusting + * live in HMD using a tweak tool, keep in mind that calling this might cause the user to see the room jump. */ + virtual void RoomSetupStarting() = 0; }; static const char * const IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; @@ -3201,6 +3218,13 @@ public: * If you want to know if motion smoothing actually triggered due to a late frame, check Compositor_FrameTiming * m_nReprojectionFlags & VRCompositor_ReprojectionMotion instead. */ virtual bool IsMotionSmoothingEnabled() = 0; + + /** Indicates whether or not motion smoothing is supported by the current hardware. */ + virtual bool IsMotionSmoothingSupported() = 0; + + /** Indicates whether or not the current scene focus app is currently loading. This is inferred from its use of FadeGrid to + * explicitly fade to the compositor to cover up the fact that it cannot render at a sustained full framerate during this time. */ + virtual bool IsCurrentSceneFocusAppLoading() = 0; }; static const char * const IVRCompositor_Version = "IVRCompositor_022"; @@ -4296,6 +4320,16 @@ namespace vr VRFingerSplay_Count }; + enum EVRSummaryType + { + // The skeletal summary data will match the animated bone transforms for the action. + VRSummaryType_FromAnimation = 0, + + // The skeletal summary data will include unprocessed data directly from the device when available. + // This data is generally less latent than the data that is computed from the animations. + VRSummaryType_FromDevice = 1, + }; + enum EVRInputFilterCancelType { VRInputFilterCancel_Timers = 0, @@ -4448,8 +4482,13 @@ namespace vr * action is something other than analog */ virtual EVRInputError GetAnalogActionData( VRActionHandle_t action, InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0; - /** Reads the state of a pose action given its handle. */ - virtual EVRInputError GetPoseActionData( VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, InputPoseActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0; + /** Reads the state of a pose 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 GetPoseActionDataRelativeToNow( VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, InputPoseActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0; + + /** Reads the state of a pose action given its handle. The returned values will match the values returned + * by the last call to IVRCompositor::WaitGetPoses(). */ + virtual EVRInputError GetPoseActionDataForNextFrame( VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, InputPoseActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0; /** Reads the state of a skeletal action given its handle. */ virtual EVRInputError GetSkeletalActionData( VRActionHandle_t action, InputSkeletalActionData_t *pActionData, uint32_t unActionDataSize ) = 0; @@ -4477,7 +4516,7 @@ namespace vr virtual EVRInputError GetSkeletalBoneData( VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, VR_ARRAY_COUNT( unTransformArrayCount ) VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount ) = 0; /** Reads summary information about the current pose of the skeleton associated with the given action. */ - virtual EVRInputError GetSkeletalSummaryData( VRActionHandle_t action, VRSkeletalSummaryData_t * pSkeletalSummaryData ) = 0; + virtual EVRInputError GetSkeletalSummaryData( VRActionHandle_t action, EVRSummaryType eSummaryType, VRSkeletalSummaryData_t * pSkeletalSummaryData ) = 0; /** Reads the state of the skeletal bone data in a compressed form that is suitable for * sending over the network. The required buffer size will never exceed ( sizeof(VR_BoneTransform_t)*boneCount + 2). @@ -4514,7 +4553,7 @@ namespace vr virtual bool IsUsingLegacyInput() = 0; }; - static const char * const IVRInput_Version = "IVRInput_005"; + static const char * const IVRInput_Version = "IVRInput_006"; } // namespace vr @@ -4656,8 +4695,8 @@ namespace vr VR_INTERFACE bool VR_CALLTYPE VR_IsRuntimeInstalled(); /** Returns where the OpenVR runtime is installed. */ - VR_INTERFACE const char *VR_CALLTYPE VR_RuntimePath(); - + VR_INTERFACE bool VR_GetRuntimePath( VR_OUT_STRING() char *pchPathBuffer, uint32_t unBufferSize, uint32_t *punRequiredBufferSize ); + /** Returns the name of the enum value for an EVRInitError. This function may be called outside of VR_Init()/VR_Shutdown(). */ VR_INTERFACE const char *VR_CALLTYPE VR_GetVRInitErrorAsSymbol( EVRInitError error ); diff --git a/headers/openvr_api.cs b/headers/openvr_api.cs index 3f8267b..d593777 100644 --- a/headers/openvr_api.cs +++ b/headers/openvr_api.cs @@ -640,6 +640,11 @@ public struct IVRChaperoneSetup [MarshalAs(UnmanagedType.FunctionPtr)] internal _HideWorkingSetPreview HideWorkingSetPreview; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RoomSetupStarting(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RoomSetupStarting RoomSetupStarting; + } [StructLayout(LayoutKind.Sequential)] @@ -865,6 +870,16 @@ public struct IVRCompositor [MarshalAs(UnmanagedType.FunctionPtr)] internal _IsMotionSmoothingEnabled IsMotionSmoothingEnabled; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsMotionSmoothingSupported(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsMotionSmoothingSupported IsMotionSmoothingSupported; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsCurrentSceneFocusAppLoading(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsCurrentSceneFocusAppLoading IsCurrentSceneFocusAppLoading; + } [StructLayout(LayoutKind.Sequential)] @@ -1576,9 +1591,14 @@ public struct IVRInput internal _GetAnalogActionData GetAnalogActionData; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetPoseActionData(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + internal delegate EVRInputError _GetPoseActionDataRelativeToNow(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPoseActionDataRelativeToNow GetPoseActionDataRelativeToNow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetPoseActionDataForNextFrame(ulong action, ETrackingUniverseOrigin eOrigin, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPoseActionData GetPoseActionData; + internal _GetPoseActionDataForNextFrame GetPoseActionDataForNextFrame; [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVRInputError _GetSkeletalActionData(ulong action, ref InputSkeletalActionData_t pActionData, uint unActionDataSize); @@ -1616,7 +1636,7 @@ public struct IVRInput internal _GetSkeletalBoneData GetSkeletalBoneData; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalSummaryData(ulong action, ref VRSkeletalSummaryData_t pSkeletalSummaryData); + internal delegate EVRInputError _GetSkeletalSummaryData(ulong action, EVRSummaryType eSummaryType, ref VRSkeletalSummaryData_t pSkeletalSummaryData); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetSkeletalSummaryData GetSkeletalSummaryData; @@ -2476,6 +2496,10 @@ public class CVRChaperoneSetup { FnTable.HideWorkingSetPreview(); } + public void RoomSetupStarting() + { + FnTable.RoomSetupStarting(); + } } @@ -2687,6 +2711,16 @@ public class CVRCompositor bool result = FnTable.IsMotionSmoothingEnabled(); return result; } + public bool IsMotionSmoothingSupported() + { + bool result = FnTable.IsMotionSmoothingSupported(); + return result; + } + public bool IsCurrentSceneFocusAppLoading() + { + bool result = FnTable.IsCurrentSceneFocusAppLoading(); + return result; + } } @@ -3507,9 +3541,14 @@ public class CVRInput EVRInputError result = FnTable.GetAnalogActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice); return result; } - public EVRInputError GetPoseActionData(ulong action,ETrackingUniverseOrigin eOrigin,float fPredictedSecondsFromNow,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + public EVRInputError GetPoseActionDataRelativeToNow(ulong action,ETrackingUniverseOrigin eOrigin,float fPredictedSecondsFromNow,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetPoseActionDataRelativeToNow(action,eOrigin,fPredictedSecondsFromNow,ref pActionData,unActionDataSize,ulRestrictToDevice); + return result; + } + public EVRInputError GetPoseActionDataForNextFrame(ulong action,ETrackingUniverseOrigin eOrigin,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) { - EVRInputError result = FnTable.GetPoseActionData(action,eOrigin,fPredictedSecondsFromNow,ref pActionData,unActionDataSize,ulRestrictToDevice); + EVRInputError result = FnTable.GetPoseActionDataForNextFrame(action,eOrigin,ref pActionData,unActionDataSize,ulRestrictToDevice); return result; } public EVRInputError GetSkeletalActionData(ulong action,ref InputSkeletalActionData_t pActionData,uint unActionDataSize) @@ -3548,9 +3587,9 @@ public class CVRInput EVRInputError result = FnTable.GetSkeletalBoneData(action,eTransformSpace,eMotionRange,pTransformArray,(uint) pTransformArray.Length); return result; } - public EVRInputError GetSkeletalSummaryData(ulong action,ref VRSkeletalSummaryData_t pSkeletalSummaryData) + public EVRInputError GetSkeletalSummaryData(ulong action,EVRSummaryType eSummaryType,ref VRSkeletalSummaryData_t pSkeletalSummaryData) { - EVRInputError result = FnTable.GetSkeletalSummaryData(action,ref pSkeletalSummaryData); + EVRInputError result = FnTable.GetSkeletalSummaryData(action,eSummaryType,ref pSkeletalSummaryData); return result; } public EVRInputError GetSkeletalBoneDataCompressed(ulong action,EVRSkeletalMotionRange eMotionRange,IntPtr pvCompressedData,uint unCompressedSize,ref uint punRequiredCompressedSize) @@ -3750,7 +3789,7 @@ public enum ETrackedControllerRole RightHand = 2, OptOut = 3, Treadmill = 4, - Max = 4, + Max = 5, } public enum ETrackingUniverseOrigin { @@ -3887,6 +3926,9 @@ public enum ETrackedDeviceProperty Prop_CameraDistortionFunction_Int32_Array = 2072, Prop_CameraDistortionCoefficients_Float_Array = 2073, Prop_ExpectedControllerType_String = 2074, + Prop_DisplayAvailableFrameRates_Float_Array = 2080, + Prop_DisplaySupportsMultipleFramerates_Bool = 2081, + Prop_DashboardLayoutPathName_String = 2090, Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, @@ -3934,7 +3976,6 @@ public enum ETrackedDeviceProperty Prop_HasVirtualDisplayComponent_Bool = 6006, Prop_HasSpatialAnchorsSupport_Bool = 6007, Prop_ControllerType_String = 7000, - Prop_LegacyInputProfile_String = 7001, Prop_ControllerHandSelectionPriority_Int32 = 7002, Prop_VendorSpecific_Reserved_Start = 10000, Prop_VendorSpecific_Reserved_End = 10999, @@ -4074,6 +4115,8 @@ public enum EVREventType VREvent_ChaperoneSettingsHaveChanged = 803, VREvent_SeatedZeroPoseReset = 804, VREvent_ChaperoneFlushCache = 805, + VREvent_ChaperoneRoomSetupStarting = 806, + VREvent_ChaperoneRoomSetupFinished = 807, VREvent_AudioSettingsHaveChanged = 820, VREvent_BackgroundSettingHasChanged = 850, VREvent_CameraSettingsHaveChanged = 851, @@ -4119,6 +4162,7 @@ public enum EVREventType VREvent_Compositor_HDCPError = 1414, VREvent_Compositor_ApplicationNotResponding = 1415, VREvent_Compositor_ApplicationResumed = 1416, + VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, VREvent_TrackedCamera_PauseVideoStream = 1502, @@ -4172,9 +4216,9 @@ public enum EVRButtonId k_EButton_SteamVR_Touchpad = 32, k_EButton_SteamVR_Trigger = 33, k_EButton_Dashboard_Back = 2, - k_EButton_Knuckles_A = 2, - k_EButton_Knuckles_B = 1, - k_EButton_Knuckles_JoyStick = 35, + k_EButton_IndexController_A = 2, + k_EButton_IndexController_B = 1, + k_EButton_IndexController_JoyStick = 35, k_EButton_Max = 64, } public enum EVRMouseButton @@ -4192,7 +4236,6 @@ public enum EShowUIType { ShowUI_ControllerBinding = 0, ShowUI_ManageTrackers = 1, - ShowUI_QuickStart = 2, ShowUI_Pairing = 3, ShowUI_Settings = 4, } @@ -4385,6 +4428,7 @@ public enum EVRInitError Init_VRWebHelperStartupFailed = 141, Init_TrackerManagerInitFailed = 142, Init_AlreadyRunning = 143, + Init_FailedForVrMonitor = 144, Driver_Failed = 200, Driver_Unknown = 201, Driver_HmdUnknown = 202, @@ -4397,6 +4441,7 @@ public enum EVRInitError Driver_TrackedDeviceInterfaceUnknown = 209, Driver_HmdDriverIdOutOfBounds = 211, Driver_HmdDisplayMirrored = 212, + Driver_HmdDisplayNotFoundLaptop = 213, IPC_ServerInitFailed = 300, IPC_ConnectFailed = 301, IPC_SharedStateInitFailed = 302, @@ -4831,6 +4876,11 @@ public enum EVRFingerSplay Ring_Pinky = 3, Count = 4, } +public enum EVRSummaryType +{ + FromAnimation = 0, + FromDevice = 1, +} public enum EVRInputFilterCancelType { VRInputFilterCancel_Timers = 0, @@ -5952,6 +6002,7 @@ public class OpenVR public const string k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; public const string k_pch_SteamVR_DebugInput = "debugInput"; public const string k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; + public const string k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; public const string k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; public const string k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; public const string k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -5974,6 +6025,7 @@ public class OpenVR public const string k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; public const string k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; public const string k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; + public const string k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; public const string k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; public const string k_pch_Lighthouse_NewPairing_Bool = "newPairing"; public const string k_pch_Null_Section = "driver_null"; @@ -6008,7 +6060,7 @@ public class OpenVR public const string k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; public const string k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; public const string k_pch_Perf_TestData_Float = "perfTestData"; - public const string k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + public const string k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; public const string k_pch_CollisionBounds_Section = "collisionBounds"; public const string k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; public const string k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; @@ -6076,7 +6128,7 @@ public class OpenVR public const uint k_unMaxActionSetNameLength = 64; public const uint k_unMaxActionOriginCount = 16; public const uint k_unMaxBoneNameLength = 32; - public const string IVRInput_Version = "IVRInput_005"; + public const string IVRInput_Version = "IVRInput_006"; public const ulong k_ulInvalidIOBufferHandle = 0; public const string IVRIOBuffer_Version = "IVRIOBuffer_002"; public const uint k_ulInvalidSpatialAnchorHandle = 0; diff --git a/headers/openvr_api.json b/headers/openvr_api.json index 508e434..6dc415f 100644 --- a/headers/openvr_api.json +++ b/headers/openvr_api.json @@ -82,7 +82,7 @@ ,{"name": "TrackedControllerRole_RightHand","value": "2"} ,{"name": "TrackedControllerRole_OptOut","value": "3"} ,{"name": "TrackedControllerRole_Treadmill","value": "4"} - ,{"name": "TrackedControllerRole_Max","value": "4"} + ,{"name": "TrackedControllerRole_Max","value": "5"} ]} , {"enumname": "vr::ETrackingUniverseOrigin","values": [ {"name": "TrackingUniverseSeated","value": "0"} @@ -216,6 +216,9 @@ ,{"name": "Prop_CameraDistortionFunction_Int32_Array","value": "2072"} ,{"name": "Prop_CameraDistortionCoefficients_Float_Array","value": "2073"} ,{"name": "Prop_ExpectedControllerType_String","value": "2074"} + ,{"name": "Prop_DisplayAvailableFrameRates_Float_Array","value": "2080"} + ,{"name": "Prop_DisplaySupportsMultipleFramerates_Bool","value": "2081"} + ,{"name": "Prop_DashboardLayoutPathName_String","value": "2090"} ,{"name": "Prop_DriverRequestedMuraCorrectionMode_Int32","value": "2200"} ,{"name": "Prop_DriverRequestedMuraFeather_InnerLeft_Int32","value": "2201"} ,{"name": "Prop_DriverRequestedMuraFeather_InnerRight_Int32","value": "2202"} @@ -263,7 +266,6 @@ ,{"name": "Prop_HasVirtualDisplayComponent_Bool","value": "6006"} ,{"name": "Prop_HasSpatialAnchorsSupport_Bool","value": "6007"} ,{"name": "Prop_ControllerType_String","value": "7000"} - ,{"name": "Prop_LegacyInputProfile_String","value": "7001"} ,{"name": "Prop_ControllerHandSelectionPriority_Int32","value": "7002"} ,{"name": "Prop_VendorSpecific_Reserved_Start","value": "10000"} ,{"name": "Prop_VendorSpecific_Reserved_End","value": "10999"} @@ -399,6 +401,8 @@ ,{"name": "VREvent_ChaperoneSettingsHaveChanged","value": "803"} ,{"name": "VREvent_SeatedZeroPoseReset","value": "804"} ,{"name": "VREvent_ChaperoneFlushCache","value": "805"} + ,{"name": "VREvent_ChaperoneRoomSetupStarting","value": "806"} + ,{"name": "VREvent_ChaperoneRoomSetupFinished","value": "807"} ,{"name": "VREvent_AudioSettingsHaveChanged","value": "820"} ,{"name": "VREvent_BackgroundSettingHasChanged","value": "850"} ,{"name": "VREvent_CameraSettingsHaveChanged","value": "851"} @@ -444,6 +448,7 @@ ,{"name": "VREvent_Compositor_HDCPError","value": "1414"} ,{"name": "VREvent_Compositor_ApplicationNotResponding","value": "1415"} ,{"name": "VREvent_Compositor_ApplicationResumed","value": "1416"} + ,{"name": "VREvent_Compositor_OutOfVideoMemory","value": "1417"} ,{"name": "VREvent_TrackedCamera_StartVideoStream","value": "1500"} ,{"name": "VREvent_TrackedCamera_StopVideoStream","value": "1501"} ,{"name": "VREvent_TrackedCamera_PauseVideoStream","value": "1502"} @@ -495,9 +500,9 @@ ,{"name": "k_EButton_SteamVR_Touchpad","value": "32"} ,{"name": "k_EButton_SteamVR_Trigger","value": "33"} ,{"name": "k_EButton_Dashboard_Back","value": "2"} - ,{"name": "k_EButton_Knuckles_A","value": "2"} - ,{"name": "k_EButton_Knuckles_B","value": "1"} - ,{"name": "k_EButton_Knuckles_JoyStick","value": "35"} + ,{"name": "k_EButton_IndexController_A","value": "2"} + ,{"name": "k_EButton_IndexController_B","value": "1"} + ,{"name": "k_EButton_IndexController_JoyStick","value": "35"} ,{"name": "k_EButton_Max","value": "64"} ]} , {"enumname": "vr::EVRMouseButton","values": [ @@ -512,7 +517,6 @@ , {"enumname": "vr::EShowUIType","values": [ {"name": "ShowUI_ControllerBinding","value": "0"} ,{"name": "ShowUI_ManageTrackers","value": "1"} - ,{"name": "ShowUI_QuickStart","value": "2"} ,{"name": "ShowUI_Pairing","value": "3"} ,{"name": "ShowUI_Settings","value": "4"} ]} @@ -691,6 +695,7 @@ ,{"name": "VRInitError_Init_VRWebHelperStartupFailed","value": "141"} ,{"name": "VRInitError_Init_TrackerManagerInitFailed","value": "142"} ,{"name": "VRInitError_Init_AlreadyRunning","value": "143"} + ,{"name": "VRInitError_Init_FailedForVrMonitor","value": "144"} ,{"name": "VRInitError_Driver_Failed","value": "200"} ,{"name": "VRInitError_Driver_Unknown","value": "201"} ,{"name": "VRInitError_Driver_HmdUnknown","value": "202"} @@ -703,6 +708,7 @@ ,{"name": "VRInitError_Driver_TrackedDeviceInterfaceUnknown","value": "209"} ,{"name": "VRInitError_Driver_HmdDriverIdOutOfBounds","value": "211"} ,{"name": "VRInitError_Driver_HmdDisplayMirrored","value": "212"} + ,{"name": "VRInitError_Driver_HmdDisplayNotFoundLaptop","value": "213"} ,{"name": "VRInitError_IPC_ServerInitFailed","value": "300"} ,{"name": "VRInitError_IPC_ConnectFailed","value": "301"} ,{"name": "VRInitError_IPC_SharedStateInitFailed","value": "302"} @@ -1102,6 +1108,10 @@ ,{"name": "VRFingerSplay_Ring_Pinky","value": "3"} ,{"name": "VRFingerSplay_Count","value": "4"} ]} +, {"enumname": "vr::EVRSummaryType","values": [ + {"name": "VRSummaryType_FromAnimation","value": "0"} + ,{"name": "VRSummaryType_FromDevice","value": "1"} +]} , {"enumname": "vr::EVRInputFilterCancelType","values": [ {"name": "VRInputFilterCancel_Timers","value": "0"} ,{"name": "VRInputFilterCancel_Momentum","value": "1"} @@ -1354,6 +1364,8 @@ ,{ "constname": "k_pch_SteamVR_DebugInputBinding","consttype": "const char *const", "constval": "debugInputBinding"} ,{ + "constname": "k_pch_SteamVR_DoNotFadeToGrid","consttype": "const char *const", "constval": "doNotFadeToGrid"} +,{ "constname": "k_pch_SteamVR_InputBindingUIBlock","consttype": "const char *const", "constval": "inputBindingUI"} ,{ "constname": "k_pch_SteamVR_RenderCameraMode","consttype": "const char *const", "constval": "renderCameraMode"} @@ -1398,6 +1410,8 @@ ,{ "constname": "k_pch_Lighthouse_PowerManagedBaseStations2_String","consttype": "const char *const", "constval": "PowerManagedBaseStations2"} ,{ + "constname": "k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32","consttype": "const char *const", "constval": "InactivityTimeoutForBaseStations"} +,{ "constname": "k_pch_Lighthouse_EnableImuFallback_Bool","consttype": "const char *const", "constval": "enableImuFallback"} ,{ "constname": "k_pch_Lighthouse_NewPairing_Bool","consttype": "const char *const", "constval": "newPairing"} @@ -1466,7 +1480,7 @@ ,{ "constname": "k_pch_Perf_TestData_Float","consttype": "const char *const", "constval": "perfTestData"} ,{ - "constname": "k_pch_Perf_LinuxGPUProfiling_Bool","consttype": "const char *const", "constval": "linuxGPUProfiling"} + "constname": "k_pch_Perf_GPUProfiling_Bool","consttype": "const char *const", "constval": "GPUProfiling"} ,{ "constname": "k_pch_CollisionBounds_Section","consttype": "const char *const", "constval": "collisionBounds"} ,{ @@ -1602,7 +1616,7 @@ ,{ "constname": "k_unMaxBoneNameLength","consttype": "const uint32_t", "constval": "32"} ,{ - "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_005"} + "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_006"} ,{ "constname": "k_ulInvalidIOBufferHandle","consttype": "const uint64_t", "constval": "0"} ,{ @@ -3073,6 +3087,11 @@ "returntype": "void" } ,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "RoomSetupStarting", + "returntype": "void" +} +,{ "classname": "vr::IVRCompositor", "methodname": "SetTrackingSpace", "returntype": "void", @@ -3391,6 +3410,16 @@ "returntype": "bool" } ,{ + "classname": "vr::IVRCompositor", + "methodname": "IsMotionSmoothingSupported", + "returntype": "bool" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "IsCurrentSceneFocusAppLoading", + "returntype": "bool" +} +,{ "classname": "vr::IVROverlay", "methodname": "FindOverlay", "returntype": "vr::EVROverlayError", @@ -4666,7 +4695,7 @@ } ,{ "classname": "vr::IVRInput", - "methodname": "GetPoseActionData", + "methodname": "GetPoseActionDataRelativeToNow", "returntype": "vr::EVRInputError", "params": [ { "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, @@ -4679,6 +4708,18 @@ } ,{ "classname": "vr::IVRInput", + "methodname": "GetPoseActionDataForNextFrame", + "returntype": "vr::EVRInputError", + "params": [ +{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "pActionData" ,"paramtype": "struct vr::InputPoseActionData_t *"}, +{ "paramname": "unActionDataSize" ,"paramtype": "uint32_t"}, +{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"} + ] +} +,{ + "classname": "vr::IVRInput", "methodname": "GetSkeletalActionData", "returntype": "vr::EVRInputError", "params": [ @@ -4756,6 +4797,7 @@ "returntype": "vr::EVRInputError", "params": [ { "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, +{ "paramname": "eSummaryType" ,"paramtype": "vr::EVRSummaryType"}, { "paramname": "pSkeletalSummaryData" ,"paramtype": "struct vr::VRSkeletalSummaryData_t *"} ] } diff --git a/headers/openvr_capi.h b/headers/openvr_capi.h index 03724dd..6cb9c44 100644 --- a/headers/openvr_capi.h +++ b/headers/openvr_capi.h @@ -176,6 +176,7 @@ static const char * k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bo static const char * k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; static const char * k_pch_SteamVR_DebugInput = "debugInput"; static const char * k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; +static const char * k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; static const char * k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; static const char * k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -198,6 +199,7 @@ static const char * k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; static const char * k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; static const char * k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; static const char * k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; +static const char * k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; static const char * k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; static const char * k_pch_Lighthouse_NewPairing_Bool = "newPairing"; static const char * k_pch_Null_Section = "driver_null"; @@ -232,7 +234,7 @@ static const char * k_pch_Perf_PerfGraphInHMD_Bool = "perfGraphInHMD"; static const char * k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; static const char * k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * k_pch_Perf_TestData_Float = "perfTestData"; -static const char * k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; +static const char * k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; static const char * k_pch_CollisionBounds_Section = "collisionBounds"; static const char * k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; static const char * k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; @@ -300,7 +302,7 @@ static const unsigned int k_unMaxActionNameLength = 64; static const unsigned int k_unMaxActionSetNameLength = 64; static const unsigned int k_unMaxActionOriginCount = 16; static const unsigned int k_unMaxBoneNameLength = 32; -static const char * IVRInput_Version = "IVRInput_005"; +static const char * IVRInput_Version = "IVRInput_006"; static const unsigned long k_ulInvalidIOBufferHandle = 0; static const char * IVRIOBuffer_Version = "IVRIOBuffer_002"; static const unsigned int k_ulInvalidSpatialAnchorHandle = 0; @@ -361,7 +363,7 @@ typedef enum ETrackedControllerRole ETrackedControllerRole_TrackedControllerRole_RightHand = 2, ETrackedControllerRole_TrackedControllerRole_OptOut = 3, ETrackedControllerRole_TrackedControllerRole_Treadmill = 4, - ETrackedControllerRole_TrackedControllerRole_Max = 4, + ETrackedControllerRole_TrackedControllerRole_Max = 5, } ETrackedControllerRole; typedef enum ETrackingUniverseOrigin @@ -501,6 +503,9 @@ typedef enum ETrackedDeviceProperty ETrackedDeviceProperty_Prop_CameraDistortionFunction_Int32_Array = 2072, ETrackedDeviceProperty_Prop_CameraDistortionCoefficients_Float_Array = 2073, ETrackedDeviceProperty_Prop_ExpectedControllerType_String = 2074, + ETrackedDeviceProperty_Prop_DisplayAvailableFrameRates_Float_Array = 2080, + ETrackedDeviceProperty_Prop_DisplaySupportsMultipleFramerates_Bool = 2081, + ETrackedDeviceProperty_Prop_DashboardLayoutPathName_String = 2090, ETrackedDeviceProperty_Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, @@ -548,7 +553,6 @@ typedef enum ETrackedDeviceProperty ETrackedDeviceProperty_Prop_HasVirtualDisplayComponent_Bool = 6006, ETrackedDeviceProperty_Prop_HasSpatialAnchorsSupport_Bool = 6007, ETrackedDeviceProperty_Prop_ControllerType_String = 7000, - ETrackedDeviceProperty_Prop_LegacyInputProfile_String = 7001, ETrackedDeviceProperty_Prop_ControllerHandSelectionPriority_Int32 = 7002, ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start = 10000, ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End = 10999, @@ -692,6 +696,8 @@ typedef enum EVREventType EVREventType_VREvent_ChaperoneSettingsHaveChanged = 803, EVREventType_VREvent_SeatedZeroPoseReset = 804, EVREventType_VREvent_ChaperoneFlushCache = 805, + EVREventType_VREvent_ChaperoneRoomSetupStarting = 806, + EVREventType_VREvent_ChaperoneRoomSetupFinished = 807, EVREventType_VREvent_AudioSettingsHaveChanged = 820, EVREventType_VREvent_BackgroundSettingHasChanged = 850, EVREventType_VREvent_CameraSettingsHaveChanged = 851, @@ -737,6 +743,7 @@ typedef enum EVREventType EVREventType_VREvent_Compositor_HDCPError = 1414, EVREventType_VREvent_Compositor_ApplicationNotResponding = 1415, EVREventType_VREvent_Compositor_ApplicationResumed = 1416, + EVREventType_VREvent_Compositor_OutOfVideoMemory = 1417, EVREventType_VREvent_TrackedCamera_StartVideoStream = 1500, EVREventType_VREvent_TrackedCamera_StopVideoStream = 1501, EVREventType_VREvent_TrackedCamera_PauseVideoStream = 1502, @@ -792,9 +799,9 @@ typedef enum EVRButtonId EVRButtonId_k_EButton_SteamVR_Touchpad = 32, EVRButtonId_k_EButton_SteamVR_Trigger = 33, EVRButtonId_k_EButton_Dashboard_Back = 2, - EVRButtonId_k_EButton_Knuckles_A = 2, - EVRButtonId_k_EButton_Knuckles_B = 1, - EVRButtonId_k_EButton_Knuckles_JoyStick = 35, + EVRButtonId_k_EButton_IndexController_A = 2, + EVRButtonId_k_EButton_IndexController_B = 1, + EVRButtonId_k_EButton_IndexController_JoyStick = 35, EVRButtonId_k_EButton_Max = 64, } EVRButtonId; @@ -815,7 +822,6 @@ typedef enum EShowUIType { EShowUIType_ShowUI_ControllerBinding = 0, EShowUIType_ShowUI_ManageTrackers = 1, - EShowUIType_ShowUI_QuickStart = 2, EShowUIType_ShowUI_Pairing = 3, EShowUIType_ShowUI_Settings = 4, } EShowUIType; @@ -1022,6 +1028,7 @@ typedef enum EVRInitError EVRInitError_VRInitError_Init_VRWebHelperStartupFailed = 141, EVRInitError_VRInitError_Init_TrackerManagerInitFailed = 142, EVRInitError_VRInitError_Init_AlreadyRunning = 143, + EVRInitError_VRInitError_Init_FailedForVrMonitor = 144, EVRInitError_VRInitError_Driver_Failed = 200, EVRInitError_VRInitError_Driver_Unknown = 201, EVRInitError_VRInitError_Driver_HmdUnknown = 202, @@ -1034,6 +1041,7 @@ typedef enum EVRInitError EVRInitError_VRInitError_Driver_TrackedDeviceInterfaceUnknown = 209, EVRInitError_VRInitError_Driver_HmdDriverIdOutOfBounds = 211, EVRInitError_VRInitError_Driver_HmdDisplayMirrored = 212, + EVRInitError_VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, EVRInitError_VRInitError_IPC_ServerInitFailed = 300, EVRInitError_VRInitError_IPC_ConnectFailed = 301, EVRInitError_VRInitError_IPC_SharedStateInitFailed = 302, @@ -1504,6 +1512,12 @@ typedef enum EVRFingerSplay EVRFingerSplay_VRFingerSplay_Count = 4, } EVRFingerSplay; +typedef enum EVRSummaryType +{ + EVRSummaryType_VRSummaryType_FromAnimation = 0, + EVRSummaryType_VRSummaryType_FromDevice = 1, +} EVRSummaryType; + typedef enum EVRInputFilterCancelType { EVRInputFilterCancelType_VRInputFilterCancel_Timers = 0, @@ -2432,6 +2446,7 @@ struct VR_IVRChaperoneSetup_FnTable bool (OPENVR_FNTABLE_CALLTYPE *ImportFromBufferToWorking)(char * pBuffer, uint32_t nImportFlags); void (OPENVR_FNTABLE_CALLTYPE *ShowWorkingSetPreview)(); void (OPENVR_FNTABLE_CALLTYPE *HideWorkingSetPreview)(); + void (OPENVR_FNTABLE_CALLTYPE *RoomSetupStarting)(); }; struct VR_IVRCompositor_FnTable @@ -2480,6 +2495,8 @@ struct VR_IVRCompositor_FnTable void (OPENVR_FNTABLE_CALLTYPE *SetExplicitTimingMode)(EVRCompositorTimingMode eTimingMode); EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SubmitExplicitTimingData)(); bool (OPENVR_FNTABLE_CALLTYPE *IsMotionSmoothingEnabled)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsMotionSmoothingSupported)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsCurrentSceneFocusAppLoading)(); }; struct VR_IVROverlay_FnTable @@ -2646,7 +2663,8 @@ struct VR_IVRInput_FnTable EVRInputError (OPENVR_FNTABLE_CALLTYPE *UpdateActionState)(struct VRActiveActionSet_t * pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetDigitalActionData)(VRActionHandle_t action, struct InputDigitalActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetAnalogActionData)(VRActionHandle_t action, struct InputAnalogActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); - EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionData)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionDataRelativeToNow)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionDataForNextFrame)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalActionData)(VRActionHandle_t action, struct InputSkeletalActionData_t * pActionData, uint32_t unActionDataSize); 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); @@ -2654,7 +2672,7 @@ struct VR_IVRInput_FnTable EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalReferenceTransforms)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalReferencePose eReferencePose, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalTrackingLevel)(VRActionHandle_t action, EVRSkeletalTrackingLevel * pSkeletalTrackingLevel); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneData)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); - EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalSummaryData)(VRActionHandle_t action, struct VRSkeletalSummaryData_t * pSkeletalSummaryData); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalSummaryData)(VRActionHandle_t action, EVRSummaryType eSummaryType, struct VRSkeletalSummaryData_t * pSkeletalSummaryData); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneDataCompressed)(VRActionHandle_t action, EVRSkeletalMotionRange eMotionRange, void * pvCompressedData, uint32_t unCompressedSize, uint32_t * punRequiredCompressedSize); EVRInputError (OPENVR_FNTABLE_CALLTYPE *DecompressSkeletalBoneData)(void * pvCompressedBuffer, uint32_t unCompressedBufferSize, EVRSkeletalTransformSpace eTransformSpace, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *TriggerHapticVibrationAction)(VRActionHandle_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, VRInputValueHandle_t ulRestrictToDevice); diff --git a/headers/openvr_driver.h b/headers/openvr_driver.h index 8a48bc5..960042e 100644 --- a/headers/openvr_driver.h +++ b/headers/openvr_driver.h @@ -15,8 +15,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 3; - static const uint32_t k_nSteamVRVersionBuild = 20; + static const uint32_t k_nSteamVRVersionMinor = 4; + static const uint32_t k_nSteamVRVersionBuild = 18; } // namespace vr // vrtypes.h @@ -207,7 +207,7 @@ enum ETrackedControllerRole TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand TrackedControllerRole_OptOut = 3, // Tracked device is opting out of left/right hand selection TrackedControllerRole_Treadmill = 4, // Tracked device is a treadmill - TrackedControllerRole_Max = 4 + TrackedControllerRole_Max = 5 }; @@ -430,6 +430,11 @@ enum ETrackedDeviceProperty Prop_CameraDistortionCoefficients_Float_Array = 2073, // Prop_NumCameras_Int32-sized array of double[vr::k_unMaxDistortionFunctionParameters] (max size is vr::k_unMaxCameras) Prop_ExpectedControllerType_String = 2074, + Prop_DisplayAvailableFrameRates_Float_Array = 2080, // populated by compositor from actual EDID list when available from GPU driver + Prop_DisplaySupportsMultipleFramerates_Bool = 2081, // if this is true but Prop_DisplayAvailableFrameRates_Float_Array is empty, explain to user + + Prop_DashboardLayoutPathName_String = 2090, + // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, @@ -490,7 +495,7 @@ enum ETrackedDeviceProperty // Properties that are set internally based on other information provided by drivers Prop_ControllerType_String = 7000, - Prop_LegacyInputProfile_String = 7001, + //Prop_LegacyInputProfile_String = 7001, // This is no longer used. See "legacy_binding" in the input profile instead. Prop_ControllerHandSelectionPriority_Int32 = 7002, // Allows hand assignments to prefer some controllers over others. High numbers are selected over low numbers // Vendors are free to expose private debug data in this reserved region @@ -734,12 +739,14 @@ enum EVREventType VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down VREvent_RestartRequested = 705, // A driver or other component wants the user to restart SteamVR - VREvent_ChaperoneDataHasChanged = 800, // Sent when the process needs to call VRChaperone()->ReloadInfo() + VREvent_ChaperoneDataHasChanged = 800, // this will never happen with the new chaperone system VREvent_ChaperoneUniverseHasChanged = 801, - VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneTempDataHasChanged = 802, // this will never happen with the new chaperone system VREvent_ChaperoneSettingsHaveChanged = 803, VREvent_SeatedZeroPoseReset = 804, VREvent_ChaperoneFlushCache = 805, // Sent when the process needs to reload any cached data it retrieved from VRChaperone() + VREvent_ChaperoneRoomSetupStarting = 806, // Triggered by CVRChaperoneClient::RoomSetupStarting + VREvent_ChaperoneRoomSetupFinished = 807, // Triggered by CVRChaperoneClient::CommitWorkingCopy VREvent_AudioSettingsHaveChanged = 820, @@ -794,6 +801,7 @@ enum EVREventType VREvent_Compositor_HDCPError = 1414, // data is hdcpError VREvent_Compositor_ApplicationNotResponding = 1415, VREvent_Compositor_ApplicationResumed = 1416, + VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, @@ -871,9 +879,9 @@ enum EVRButtonId k_EButton_Dashboard_Back = k_EButton_Grip, - k_EButton_Knuckles_A = k_EButton_Grip, - k_EButton_Knuckles_B = k_EButton_ApplicationMenu, - k_EButton_Knuckles_JoyStick = k_EButton_Axis3, + k_EButton_IndexController_A = k_EButton_Grip, + k_EButton_IndexController_B = k_EButton_ApplicationMenu, + k_EButton_IndexController_JoyStick = k_EButton_Axis3, k_EButton_Max = 64 }; @@ -1099,7 +1107,7 @@ enum EShowUIType { ShowUI_ControllerBinding = 0, ShowUI_ManageTrackers = 1, - ShowUI_QuickStart = 2, + // ShowUI_QuickStart = 2, // Deprecated ShowUI_Pairing = 3, ShowUI_Settings = 4, }; @@ -1428,7 +1436,7 @@ enum EVRSkeletalTrackingLevel // body part location can be measured directly but with fewer degrees of freedom than the actual body // part. Certain body part positions may be unmeasured by the device and estimated from other input data. - // E.g. Knuckles, gloves that only measure finger curl + // E.g. Index Controllers, gloves that only measure finger curl VRSkeletalTracking_Partial, // Body part location can be measured directly throughout the entire range of motion of the body part. @@ -1505,6 +1513,7 @@ enum EVRInitError VRInitError_Init_VRWebHelperStartupFailed = 141, VRInitError_Init_TrackerManagerInitFailed = 142, VRInitError_Init_AlreadyRunning = 143, + VRInitError_Init_FailedForVrMonitor = 144, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1519,6 +1528,7 @@ enum EVRInitError // VRInitError_Driver_HmdDisplayNotFoundAfterFix = 210, // not needed: here for historic reasons VRInitError_Driver_HmdDriverIdOutOfBounds = 211, VRInitError_Driver_HmdDisplayMirrored = 212, + VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, VRInitError_IPC_ServerInitFailed = 300, VRInitError_IPC_ConnectFailed = 301, @@ -2106,6 +2116,7 @@ namespace vr static const char * const k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; static const char * const k_pch_SteamVR_DebugInput = "debugInput"; static const char * const k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; + static const char * const k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; static const char * const k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * const k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -2134,6 +2145,7 @@ namespace vr static const char * const k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; + static const char * const k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; static const char * const k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; static const char * const k_pch_Lighthouse_NewPairing_Bool = "newPairing"; @@ -2183,7 +2195,7 @@ namespace vr static const char * const k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * const k_pch_Perf_TestData_Float = "perfTestData"; - static const char * const k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + static const char * const k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; //----------------------------------------------------------------------------- // collision bounds keys diff --git a/lib/linux32/libopenvr_api.so b/lib/linux32/libopenvr_api.so Binary files differindex 4e0e720..79b4e11 100755 --- a/lib/linux32/libopenvr_api.so +++ b/lib/linux32/libopenvr_api.so diff --git a/lib/linux64/libopenvr_api.so b/lib/linux64/libopenvr_api.so Binary files differindex e4676c9..fea27b3 100755 --- a/lib/linux64/libopenvr_api.so +++ b/lib/linux64/libopenvr_api.so diff --git a/lib/win32/openvr_api.lib b/lib/win32/openvr_api.lib Binary files differindex 9c1fdc9..7463e0f 100644 --- a/lib/win32/openvr_api.lib +++ b/lib/win32/openvr_api.lib diff --git a/lib/win64/openvr_api.lib b/lib/win64/openvr_api.lib Binary files differindex a7bf95d..ff58a77 100644 --- a/lib/win64/openvr_api.lib +++ b/lib/win64/openvr_api.lib diff --git a/samples/bin/hellovr_actions.json b/samples/bin/hellovr_actions.json index d410c86..dab1e9a 100644 --- a/samples/bin/hellovr_actions.json +++ b/samples/bin/hellovr_actions.json @@ -3,6 +3,10 @@ { "controller_type" : "vive_controller", "binding_url" : "hellovr_bindings_vive_controller.json" + }, + { + "controller_type" : "generic", + "binding_url" : "hellovr_bindings_generic.json" } ], "actions": [ diff --git a/samples/bin/hellovr_bindings_generic.json b/samples/bin/hellovr_bindings_generic.json new file mode 100644 index 0000000..ae5fb46 --- /dev/null +++ b/samples/bin/hellovr_bindings_generic.json @@ -0,0 +1,94 @@ +{ + "bindings" : { + "/actions/demo" : { + "poses" : [ + { + "output" : "/actions/demo/in/hand_left", + "path" : "/user/hand/left/pose/raw" + }, + { + "output" : "/actions/demo/in/hand_right", + "path" : "/user/hand/right/pose/raw" + } + ], + "haptics" : [ + { + "output" : "/actions/demo/out/haptic_right", + "path" : "/user/hand/right/output/haptic" + }, + { + "output" : "/actions/demo/out/haptic_left", + "path" : "/user/hand/left/output/haptic" + } + ], + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/demo/in/hidecubes" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/demo/in/analoginput" + } + }, + "mode" : "trackpad", + "path" : "/user/hand/right/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/demo/in/triggerhaptic" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/grip" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/demo/in/hidecubes" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/demo/in/triggerhaptic" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/grip" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/demo/in/hidethiscontroller" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/application_menu" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/demo/in/hidethiscontroller" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/application_menu" + } + ] + } + }, + "controller_type" : "generic", + "description" : "Bindings for the OpenVR SDK \"hellovr_opengl\" demo for a generic controller", + "name" : "HelloVR bindings for a generic controller" +} diff --git a/samples/bin/linux64/libopenvr_api.so b/samples/bin/linux64/libopenvr_api.so Binary files differindex 35da755..b5db2f0 100644 --- a/samples/bin/linux64/libopenvr_api.so +++ b/samples/bin/linux64/libopenvr_api.so diff --git a/samples/bin/osx32/libopenvr_api.dylib b/samples/bin/osx32/libopenvr_api.dylib Binary files differindex b3c2569..8a2df47 100644 --- a/samples/bin/osx32/libopenvr_api.dylib +++ b/samples/bin/osx32/libopenvr_api.dylib diff --git a/samples/bin/win32/openvr_api.dll b/samples/bin/win32/openvr_api.dll Binary files differindex 66d492b..4f5bdf1 100644 --- a/samples/bin/win32/openvr_api.dll +++ b/samples/bin/win32/openvr_api.dll diff --git a/samples/bin/win64/openvr_api.dll b/samples/bin/win64/openvr_api.dll Binary files differindex 7c9a0b1..3b05986 100644 --- a/samples/bin/win64/openvr_api.dll +++ b/samples/bin/win64/openvr_api.dll diff --git a/samples/driver_sample/driver_sample.vcxproj b/samples/driver_sample/driver_sample.vcxproj index 94cb030..cd4beac 100644 --- a/samples/driver_sample/driver_sample.vcxproj +++ b/samples/driver_sample/driver_sample.vcxproj @@ -22,31 +22,32 @@ <ProjectGuid>{A47C788B-1BDA-4057-87A9-FC35ED711B44}</ProjectGuid> <Keyword>Win32Proj</Keyword> <RootNamespace>driver_sample</RootNamespace> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> + <PlatformToolset>v140</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v120</PlatformToolset> + <PlatformToolset>v140</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v120</PlatformToolset> + <PlatformToolset>v140</PlatformToolset> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v120</PlatformToolset> + <PlatformToolset>v140</PlatformToolset> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> diff --git a/samples/hellovr_dx12/hellovr_dx12.vcxproj b/samples/hellovr_dx12/hellovr_dx12.vcxproj index ca9661c..6b72322 100644 --- a/samples/hellovr_dx12/hellovr_dx12.vcxproj +++ b/samples/hellovr_dx12/hellovr_dx12.vcxproj @@ -11,10 +11,10 @@ </ProjectConfiguration> </ItemGroup> <PropertyGroup Label="Globals"> - <ProjectGuid>{FF19F6AE-67E0-4585-9D4A-038CB6E8DD09}</ProjectGuid> + <ProjectGuid>{407B75DC-C7A4-444B-B628-63BCAB83C981}</ProjectGuid> <Keyword>Win32Proj</Keyword> <RootNamespace>hellovr_dx12</RootNamespace> - <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion> + <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> diff --git a/samples/hellovr_opengl/hellovr_opengl.vcxproj b/samples/hellovr_opengl/hellovr_opengl.vcxproj index 42e59bf..e6512d1 100644 --- a/samples/hellovr_opengl/hellovr_opengl.vcxproj +++ b/samples/hellovr_opengl/hellovr_opengl.vcxproj @@ -21,14 +21,14 @@ <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries> <CharacterSet>Unicode</CharacterSet> - <PlatformToolset>v141</PlatformToolset> + <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> - <PlatformToolset>v141</PlatformToolset> + <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> diff --git a/samples/hellovr_opengl/hellovr_opengl_main.cpp b/samples/hellovr_opengl/hellovr_opengl_main.cpp index 14e6348..3e276ba 100644 --- a/samples/hellovr_opengl/hellovr_opengl_main.cpp +++ b/samples/hellovr_opengl/hellovr_opengl_main.cpp @@ -773,7 +773,7 @@ bool CMainApplication::HandleInput() for ( EHand eHand = Left; eHand <= Right; ((int&)eHand)++ ) { vr::InputPoseActionData_t poseData; - if ( vr::VRInput()->GetPoseActionData( m_rHand[eHand].m_actionPose, vr::TrackingUniverseStanding, 0, &poseData, sizeof( poseData ), vr::k_ulInvalidInputValueHandle ) != vr::VRInputError_None + if ( vr::VRInput()->GetPoseActionDataForNextFrame( m_rHand[eHand].m_actionPose, vr::TrackingUniverseStanding, &poseData, sizeof( poseData ), vr::k_ulInvalidInputValueHandle ) != vr::VRInputError_None || !poseData.bActive || !poseData.pose.bPoseIsValid ) { m_rHand[eHand].m_bShowController = false; diff --git a/samples/samples_vs2017.sln b/samples/samples_vs2017.sln index e6505e1..c6c3450 100644 --- a/samples/samples_vs2017.sln +++ b/samples/samples_vs2017.sln @@ -7,6 +7,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hellovr_opengl", "hellovr_o EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "driver_sample", "driver_sample\driver_sample.vcxproj", "{A47C788B-1BDA-4057-87A9-FC35ED711B44}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hellovr_dx12", "hellovr_dx12\hellovr_dx12.vcxproj", "{407B75DC-C7A4-444B-B628-63BCAB83C981}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -29,6 +31,12 @@ Global {A47C788B-1BDA-4057-87A9-FC35ED711B44}.Release|Win32.Build.0 = Release|Win32 {A47C788B-1BDA-4057-87A9-FC35ED711B44}.Release|x64.ActiveCfg = Release|x64 {A47C788B-1BDA-4057-87A9-FC35ED711B44}.Release|x64.Build.0 = Release|x64 + {407B75DC-C7A4-444B-B628-63BCAB83C981}.Debug|Win32.ActiveCfg = Debug|Win32 + {407B75DC-C7A4-444B-B628-63BCAB83C981}.Debug|Win32.Build.0 = Debug|Win32 + {407B75DC-C7A4-444B-B628-63BCAB83C981}.Debug|x64.ActiveCfg = Debug|Win32 + {407B75DC-C7A4-444B-B628-63BCAB83C981}.Release|Win32.ActiveCfg = Release|Win32 + {407B75DC-C7A4-444B-B628-63BCAB83C981}.Release|Win32.Build.0 = Release|Win32 + {407B75DC-C7A4-444B-B628-63BCAB83C981}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/openvr_api_public.cpp b/src/openvr_api_public.cpp index c63bf2a..f92007d 100644 --- a/src/openvr_api_public.cpp +++ b/src/openvr_api_public.cpp @@ -6,6 +6,7 @@ #include "sharedlibtools_public.h" #include "envvartools_public.h" #include "hmderrors_public.h" +#include "strtools_public.h" #include "vrpathregistry_public.h" #include <mutex> @@ -14,6 +15,23 @@ using vr::IVRSystem; using vr::IVRClientCore; using vr::VRInitError_None; +// figure out how to import from the VR API dll +#if defined(_WIN32) + +#if !defined(OPENVR_BUILD_STATIC) +#define VR_EXPORT_INTERFACE extern "C" __declspec( dllexport ) +#else +#define VR_EXPORT_INTERFACE extern "C" +#endif + +#elif defined(__GNUC__) || defined(COMPILER_GCC) || defined(__APPLE__) + +#define VR_EXPORT_INTERFACE extern "C" __attribute__((visibility("default"))) + +#else +#error "Unsupported Platform." +#endif + namespace vr { @@ -238,27 +256,63 @@ bool VR_IsRuntimeInstalled() } +// ------------------------------------------------------------------------------- +// Purpose: This is the old Runtime Path interface that is no longer exported in the +// latest header. We still want to export it from the DLL, though, so updating +// to a new DLL doesn't break old compiled code. This version was not thread +// safe and could change the buffer pointer to by a previous result on a +// subsequent call +// ------------------------------------------------------------------------------- +VR_EXPORT_INTERFACE const char *VR_CALLTYPE VR_RuntimePath(); + /** Returns where OpenVR runtime is installed. */ const char *VR_RuntimePath() { + static char rchBuffer[1024]; + uint32_t unRequiredSize; + if ( VR_GetRuntimePath( rchBuffer, sizeof( rchBuffer ), &unRequiredSize ) && unRequiredSize < sizeof( rchBuffer ) ) + { + return rchBuffer; + } + else + { + return nullptr; + } +} + + +/** Returns where OpenVR runtime is installed. */ +bool VR_GetRuntimePath( char *pchPathBuffer, uint32_t unBufferSize, uint32_t *punRequiredBufferSize ) +{ // otherwise we need to do a bit more work - static std::string sRuntimePath; - std::string sConfigPath, sLogPath; + std::string sRuntimePath; - bool bReadPathRegistry = CVRPathRegistry_Public::GetPaths( &sRuntimePath, &sConfigPath, &sLogPath, NULL, NULL ); + *punRequiredBufferSize = 0; + + bool bReadPathRegistry = CVRPathRegistry_Public::GetPaths( &sRuntimePath, nullptr, nullptr, nullptr, nullptr ); if ( !bReadPathRegistry ) { - return nullptr; + return false; } // figure out where we're going to look for vrclient.dll // see if the specified path actually exists. if ( !Path_IsDirectory( sRuntimePath ) ) { - return nullptr; + return false; + } + + *punRequiredBufferSize = (uint32_t)sRuntimePath.size() + 1; + if ( sRuntimePath.size() >= unBufferSize ) + { + *pchPathBuffer = '\0'; + } + else + { + strcpy_safe( pchPathBuffer, unBufferSize, sRuntimePath.c_str() ); } - return sRuntimePath.c_str(); + return true; } diff --git a/src/vrcommon/hmderrors_public.cpp b/src/vrcommon/hmderrors_public.cpp index 14d4b8b..5b0ec64 100644 --- a/src/vrcommon/hmderrors_public.cpp +++ b/src/vrcommon/hmderrors_public.cpp @@ -70,6 +70,7 @@ const char *GetEnglishStringForHmdError( vr::EVRInitError eError ) // case VRInitError_Driver_HmdDisplayNotFoundAfterFix: return "HMD detected over USB, but Monitor not found after attempt to fix (210)"; // taken out upon Ben's request: He thinks that there is no need to separate that error from 208 case VRInitError_Driver_HmdDriverIdOutOfBounds: return "Hmd DriverId is our of bounds (211)"; case VRInitError_Driver_HmdDisplayMirrored: return "HMD detected over USB, but Monitor may be mirrored instead of extended (212)"; + case VRInitError_Driver_HmdDisplayNotFoundLaptop: return "On laptop, HMD detected over USB, but Monitor not found (213)"; case VRInitError_IPC_ServerInitFailed: return "VR Server Init Failed (300)"; case VRInitError_IPC_ConnectFailed: return "Connect to VR Server Failed (301)"; @@ -166,6 +167,7 @@ const char *GetIDForVRInitError( vr::EVRInitError eError ) RETURN_ENUM_AS_STRING( VRInitError_Init_VRWebHelperStartupFailed ); RETURN_ENUM_AS_STRING( VRInitError_Init_TrackerManagerInitFailed ); RETURN_ENUM_AS_STRING( VRInitError_Init_AlreadyRunning ); + RETURN_ENUM_AS_STRING( VRInitError_Init_FailedForVrMonitor); RETURN_ENUM_AS_STRING( VRInitError_Driver_Failed ); RETURN_ENUM_AS_STRING( VRInitError_Driver_Unknown ); @@ -180,6 +182,7 @@ const char *GetIDForVRInitError( vr::EVRInitError eError ) // RETURN_ENUM_AS_STRING( VRInitError_Driver_HmdDisplayNotFoundAfterFix ); RETURN_ENUM_AS_STRING( VRInitError_Driver_HmdDriverIdOutOfBounds ); RETURN_ENUM_AS_STRING( VRInitError_Driver_HmdDisplayMirrored ); + RETURN_ENUM_AS_STRING( VRInitError_Driver_HmdDisplayNotFoundLaptop ); RETURN_ENUM_AS_STRING( VRInitError_IPC_ServerInitFailed); RETURN_ENUM_AS_STRING( VRInitError_IPC_ConnectFailed); diff --git a/src/vrcommon/pathtools_public.cpp b/src/vrcommon/pathtools_public.cpp index 3426c77..0f8573e 100644 --- a/src/vrcommon/pathtools_public.cpp +++ b/src/vrcommon/pathtools_public.cpp @@ -409,6 +409,20 @@ std::string Path_Compact( const std::string & sRawPath, char slash ) } +/** Returns true if these two paths are the same without respect for internal . or .. +* sequences, slash type, or case (on case-insensitive platforms). */ +bool Path_IsSamePath( const std::string & sPath1, const std::string & sPath2 ) +{ + std::string sCompact1 = Path_Compact( sPath1 ); + std::string sCompact2 = Path_Compact( sPath2 ); +#if defined(WIN32) + return !stricmp( sCompact1.c_str(), sCompact2.c_str() ); +#else + return !strcmp( sCompact1.c_str(), sCompact2.c_str() ); +#endif +} + + /** Returns the path to the current DLL or exe */ std::string Path_GetThisModulePath() { diff --git a/src/vrcommon/pathtools_public.h b/src/vrcommon/pathtools_public.h index 9bf9ce1..3250e32 100644 --- a/src/vrcommon/pathtools_public.h +++ b/src/vrcommon/pathtools_public.h @@ -67,6 +67,10 @@ std::string Path_Join( * will be used. */ std::string Path_Compact( const std::string & sRawPath, char slash = 0 ); +/** Returns true if these two paths are the same without respect for internal . or .. +* sequences, slash type, or case (on case-insensitive platforms). */ +bool Path_IsSamePath( const std::string & sPath1, const std::string & sPath2 ); + //** Removed trailing slashes */ std::string Path_RemoveTrailingSlash( const std::string & sRawPath, char slash = 0 ); |