Updating SteamVR SDK From 2.12.1 to 2.12.14
Major notes include:
* Add struct VREyeTrackingData_t, used with CreateEyeTrackingComponent, and UpdateEyeTrackingComponent for drivers to provide eye tracking input to SteamVR.
* Synchronize props to upstream SteamVR.
* Testing with GetSubmitTexture - Do not use - this feature will likely be removed.
* NewSharedVulkanSemaphore signature is now different, allowing for a counting semaphore.
merged vr_steamvr_rel_to_sdk_release
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 9982682]
diff --git a/bin/androidarm64/libopenvr_api.so b/bin/androidarm64/libopenvr_api.so
index 4fa7a5a..104fd37 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 403f222..b04a4c2 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 47db669..56debc9 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 cf8e38b..198da62 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 612d7ca..350f2f9 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 f214cfa..74b9301 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 7ea65da..ebf869f 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 87a8a3e..d62754c 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 061f325..90cfd40 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 b2144c0..b17a514 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 8c686d7..b6b10c0 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 ef37e3d..eff94a2 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 2cad051..ab53dc6 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 9226bd7..651ebfe 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 5defa00..e576a0c 100644
--- a/bin/win64/openvr_api.pdb
+++ b/bin/win64/openvr_api.pdb
Binary files differ
diff --git a/headers/openvr.h b/headers/openvr.h
index 8c9e3fd..efa452a 100644
--- a/headers/openvr.h
+++ b/headers/openvr.h
@@ -17,7 +17,7 @@
{
static const uint32_t k_nSteamVRVersionMajor = 2;
static const uint32_t k_nSteamVRVersionMinor = 12;
- static const uint32_t k_nSteamVRVersionBuild = 1;
+ static const uint32_t k_nSteamVRVersionBuild = 14;
} // namespace vr
// public_vrtypes.h
@@ -104,6 +104,16 @@
HmdQuaternionf_t orientation;
};
+struct VREyeTrackingData_t
+{
+ bool bActive;
+ bool bValid;
+ bool bTracked;
+
+ vr::HmdVector3_t vGazeOrigin; // Ray origin
+ vr::HmdVector3_t vGazeTarget; // Gaze target (fixation point)
+};
+
/** Used to return the post-distortion UVs for each color channel.
* UVs range from 0 to 1 with 0,0 in the upper left corner of the
* source render target. The 0,0 to 1,1 range covers a single eye. */
@@ -463,6 +473,9 @@
Prop_IgnoreMotionForStandby_Bool = 1053,
Prop_ActualTrackingSystemName_String = 1054, // the literal local driver name in case someone is playing games with prop 1000
Prop_AllowCameraToggle_Bool = 1055, // Shows the Enable/Disable camera option. Hide this for certain headsets if they have the camera tracking (since it's always on)
+ Prop_AllowLightSourceFrequency_Bool = 1056, // Shows the Anti-Flicker option in camera settings.
+ Prop_SteamRemoteClientID_Uint64 = 1057, // For vrlink
+ Prop_Reserved_1058 = 1058,
// Properties that are unique to TrackedDeviceClass_HMD
Prop_ReportsTimeSinceVSync_Bool = 2000,
@@ -769,7 +782,7 @@
Submit_Reserved2 = 0x08000,
Submit_Reserved3 = 0x10000,
Submit_Reserved4 = 0x20000,
-
+ Submit_Reserved5 = 0x40000,
};
/** Data required for passing Vulkan textures to IVRCompositor::Submit.
@@ -936,6 +949,7 @@
VREvent_TrackingRecordingStarted = 541,
VREvent_TrackingRecordingStopped = 542,
+ VREvent_SetTrackingRecordingPath = 543,
VREvent_Reserved_0560 = 560, // No data
VREvent_Reserved_0561 = 561, // No data
@@ -1005,8 +1019,8 @@
VREvent_FirmwareUpdateFinished = 1101,
VREvent_KeyboardClosed = 1200, // DEPRECATED: Sent only to the overlay it closed for, or globally if it was closed for a scene app
- VREvent_KeyboardCharInput = 1201,
- VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard
+ VREvent_KeyboardCharInput = 1201, // Sent on keyboard input. Warning: event type appears as both global event and overlay event
+ VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard. Warning: event type appears as both global event and overlay event
VREvent_KeyboardOpened_Global = 1203, // Sent globally when the keyboard is opened. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid)
VREvent_KeyboardClosed_Global = 1204, // Sent globally when the keyboard is closed. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid)
@@ -3215,6 +3229,8 @@
static const char* const k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer";
static const char *const k_pch_LastKnown_HMDModel_String = "HMDModel";
static const char* const k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver";
+ static const char* const k_pch_LastKnown_HMDSerialNumber_String = "HMDSerialNumber";
+ static const char* const k_pch_LastKnown_HMDRemoteClientID_String = "RemoteClientID"; // uint64 in string
//-----------------------------------------------------------------------------
// Dismissed warnings
@@ -3448,6 +3464,14 @@
VRCompositorError_AlreadySet = 110,
};
+/** Usage types for retreiving shared textures */
+enum EVRCompositorTextureUsage
+{
+ VRCompositorTextureUsage_Left = Eye_Left,
+ VRCompositorTextureUsage_Right = Eye_Right,
+ VRCompositorTextureUsage_Both,
+};
+
/** Timing mode passed to SetExplicitTimingMode(); see that function for documentation */
enum EVRCompositorTimingMode
{
@@ -3574,6 +3598,10 @@
* It is okay to pass NULL for either pose if you only want one of the values. */
virtual EVRCompositorError GetLastPoseForTrackedDeviceIndex( TrackedDeviceIndex_t unDeviceIndex, TrackedDevicePose_t *pOutputPose, TrackedDevicePose_t *pOutputGamePose ) = 0;
+ /** Get the shared texture to copy into for submitting frames. */
+ virtual EVRCompositorError GetSubmitTexture( Texture_t *pOutTexture, bool *pNeedsFlush, EVRCompositorTextureUsage eUsage,
+ const Texture_t *pTexture, const VRTextureBounds_t *pBounds = 0, EVRSubmitFlags nSubmitFlags = Submit_Default ) = 0;
+
/** Updated scene texture to display. If pBounds is NULL the entire texture will be used. If called from an OpenGL app, consider adding a glFlush after
* Submitting both frames to signal the driver to start processing, otherwise it may wait until the command buffer fills up, causing the app to miss frames.
*
@@ -3771,7 +3799,7 @@
virtual EVRCompositorError GetPosesForFrame( uint32_t unPosePredictionID, VR_ARRAY_COUNT( unPoseArrayCount ) TrackedDevicePose_t* pPoseArray, uint32_t unPoseArrayCount ) = 0;
};
-static const char * const IVRCompositor_Version = "IVRCompositor_028";
+static const char * const IVRCompositor_Version = "IVRCompositor_029";
} // namespace vr
@@ -5539,7 +5567,7 @@
virtual bool NewSharedVulkanBuffer( uint32_t nSize, uint32_t nUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0;
/** Create a new tracked Vulkan Semaphore */
- virtual bool NewSharedVulkanSemaphore( vr::SharedTextureHandle_t *pSharedHandle ) = 0;
+ virtual bool NewSharedVulkanSemaphore( bool bCounting, vr::SharedTextureHandle_t *pSharedHandle ) = 0;
/** Grab a reference to hSharedHandle, and optionally generate a new IPC handle if pNewIpcHandle is not nullptr */
virtual bool RefResource( vr::SharedTextureHandle_t hSharedHandle, uint64_t *pNewIpcHandle ) = 0;
@@ -5591,7 +5619,7 @@
virtual ~IVRIPCResourceManagerClient() {};
};
-static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_001";
+static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002";
}
// End
diff --git a/headers/openvr_api.cs b/headers/openvr_api.cs
index fcca437..bfaec40 100644
--- a/headers/openvr_api.cs
+++ b/headers/openvr_api.cs
@@ -725,6 +725,11 @@
internal _GetLastPoseForTrackedDeviceIndex GetLastPoseForTrackedDeviceIndex;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRCompositorError _GetSubmitTexture(ref Texture_t pOutTexture, [MarshalAs(UnmanagedType.I1)] ref bool pNeedsFlush, EVRCompositorTextureUsage eUsage, ref Texture_t pTexture, ref VRTextureBounds_t pBounds, EVRSubmitFlags nSubmitFlags);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetSubmitTexture GetSubmitTexture;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
internal delegate EVRCompositorError _Submit(EVREye eEye, ref Texture_t pTexture, ref VRTextureBounds_t pBounds, EVRSubmitFlags nSubmitFlags);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _Submit Submit;
@@ -1998,7 +2003,7 @@
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.I1)]
- internal delegate bool _NewSharedVulkanSemaphore(ref ulong pSharedHandle);
+ internal delegate bool _NewSharedVulkanSemaphore([MarshalAs(UnmanagedType.I1)] bool bCounting, ref ulong pSharedHandle);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _NewSharedVulkanSemaphore NewSharedVulkanSemaphore;
@@ -3043,6 +3048,12 @@
EVRCompositorError result = FnTable.GetLastPoseForTrackedDeviceIndex(unDeviceIndex,ref pOutputPose,ref pOutputGamePose);
return result;
}
+ public EVRCompositorError GetSubmitTexture(ref Texture_t pOutTexture,ref bool pNeedsFlush,EVRCompositorTextureUsage eUsage,ref Texture_t pTexture,ref VRTextureBounds_t pBounds,EVRSubmitFlags nSubmitFlags)
+ {
+ pNeedsFlush = false;
+ EVRCompositorError result = FnTable.GetSubmitTexture(ref pOutTexture,ref pNeedsFlush,eUsage,ref pTexture,ref pBounds,nSubmitFlags);
+ return result;
+ }
public EVRCompositorError Submit(EVREye eEye,ref Texture_t pTexture,ref VRTextureBounds_t pBounds,EVRSubmitFlags nSubmitFlags)
{
EVRCompositorError result = FnTable.Submit(eEye,ref pTexture,ref pBounds,nSubmitFlags);
@@ -4578,10 +4589,10 @@
bool result = FnTable.NewSharedVulkanBuffer(nSize,nUsageFlags,ref pSharedHandle);
return result;
}
- public bool NewSharedVulkanSemaphore(ref ulong pSharedHandle)
+ public bool NewSharedVulkanSemaphore(bool bCounting,ref ulong pSharedHandle)
{
pSharedHandle = 0;
- bool result = FnTable.NewSharedVulkanSemaphore(ref pSharedHandle);
+ bool result = FnTable.NewSharedVulkanSemaphore(bCounting,ref pSharedHandle);
return result;
}
public bool RefResource(ulong hSharedHandle,ref ulong pNewIpcHandle)
@@ -4909,6 +4920,9 @@
Prop_IgnoreMotionForStandby_Bool = 1053,
Prop_ActualTrackingSystemName_String = 1054,
Prop_AllowCameraToggle_Bool = 1055,
+ Prop_AllowLightSourceFrequency_Bool = 1056,
+ Prop_SteamRemoteClientID_Uint64 = 1057,
+ Prop_Reserved_1058 = 1058,
Prop_ReportsTimeSinceVSync_Bool = 2000,
Prop_SecondsFromVsyncToPhotons_Float = 2001,
Prop_DisplayFrequency_Float = 2002,
@@ -5136,6 +5150,7 @@
Submit_Reserved2 = 32768,
Submit_Reserved3 = 65536,
Submit_Reserved4 = 131072,
+ Submit_Reserved5 = 262144,
}
public enum EVRState
{
@@ -5235,6 +5250,7 @@
VREvent_OverlayDestroyed = 540,
VREvent_TrackingRecordingStarted = 541,
VREvent_TrackingRecordingStopped = 542,
+ VREvent_SetTrackingRecordingPath = 543,
VREvent_Reserved_0560 = 560,
VREvent_Reserved_0561 = 561,
VREvent_Reserved_0562 = 562,
@@ -5944,6 +5960,12 @@
InvalidBounds = 109,
AlreadySet = 110,
}
+public enum EVRCompositorTextureUsage
+{
+ Left = 0,
+ Right = 1,
+ Both = 2,
+}
public enum EVRCompositorTimingMode
{
Implicit = 0,
@@ -6382,6 +6404,17 @@
public HmdVector4_t position;
public HmdQuaternionf_t orientation;
}
+[StructLayout(LayoutKind.Sequential)] public struct VREyeTrackingData_t
+{
+ [MarshalAs(UnmanagedType.I1)]
+ public bool bActive;
+ [MarshalAs(UnmanagedType.I1)]
+ public bool bValid;
+ [MarshalAs(UnmanagedType.I1)]
+ public bool bTracked;
+ public HmdVector3_t vGazeOrigin;
+ public HmdVector3_t vGazeTarget;
+}
[StructLayout(LayoutKind.Sequential)] public struct DistortionCoordinates_t
{
public float rfRed0; //float[2]
@@ -8006,7 +8039,7 @@
public const string IVRApplications_Version = "IVRApplications_007";
public const string IVRChaperone_Version = "IVRChaperone_004";
public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_006";
- public const string IVRCompositor_Version = "IVRCompositor_028";
+ public const string IVRCompositor_Version = "IVRCompositor_029";
public const uint k_unVROverlayMaxKeyLength = 128;
public const uint k_unVROverlayMaxNameLength = 128;
public const uint k_unMaxOverlayCount = 128;
@@ -8257,6 +8290,8 @@
public const string k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer";
public const string k_pch_LastKnown_HMDModel_String = "HMDModel";
public const string k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver";
+ public const string k_pch_LastKnown_HMDSerialNumber_String = "HMDSerialNumber";
+ public const string k_pch_LastKnown_HMDRemoteClientID_String = "RemoteClientID";
public const string k_pch_DismissedWarnings_Section = "DismissedWarnings";
public const string k_pch_Input_Section = "input";
public const string k_pch_Input_LeftThumbstickRotation_Float = "leftThumbstickRotation";
@@ -8280,7 +8315,7 @@
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_001";
+ public const string IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002";
public const ulong k_ulDisplayRedirectContainer = 25769803779;
public const string IVRProperties_Version = "IVRProperties_001";
public const string k_pchPathUserHandRight = "/user/hand/right";
diff --git a/headers/openvr_api.json b/headers/openvr_api.json
index f101802..382e051 100644
--- a/headers/openvr_api.json
+++ b/headers/openvr_api.json
@@ -162,6 +162,9 @@
,{"name": "Prop_IgnoreMotionForStandby_Bool","value": "1053"}
,{"name": "Prop_ActualTrackingSystemName_String","value": "1054"}
,{"name": "Prop_AllowCameraToggle_Bool","value": "1055"}
+ ,{"name": "Prop_AllowLightSourceFrequency_Bool","value": "1056"}
+ ,{"name": "Prop_SteamRemoteClientID_Uint64","value": "1057"}
+ ,{"name": "Prop_Reserved_1058","value": "1058"}
,{"name": "Prop_ReportsTimeSinceVSync_Bool","value": "2000"}
,{"name": "Prop_SecondsFromVsyncToPhotons_Float","value": "2001"}
,{"name": "Prop_DisplayFrequency_Float","value": "2002"}
@@ -386,6 +389,7 @@
,{"name": "Submit_Reserved2","value": "32768"}
,{"name": "Submit_Reserved3","value": "65536"}
,{"name": "Submit_Reserved4","value": "131072"}
+ ,{"name": "Submit_Reserved5","value": "262144"}
]}
, {"enumname": "vr::EVRState","values": [
{"name": "VRState_Undefined","value": "-1"}
@@ -483,6 +487,7 @@
,{"name": "VREvent_OverlayDestroyed","value": "540"}
,{"name": "VREvent_TrackingRecordingStarted","value": "541"}
,{"name": "VREvent_TrackingRecordingStopped","value": "542"}
+ ,{"name": "VREvent_SetTrackingRecordingPath","value": "543"}
,{"name": "VREvent_Reserved_0560","value": "560"}
,{"name": "VREvent_Reserved_0561","value": "561"}
,{"name": "VREvent_Reserved_0562","value": "562"}
@@ -1157,6 +1162,11 @@
,{"name": "VRCompositorError_InvalidBounds","value": "109"}
,{"name": "VRCompositorError_AlreadySet","value": "110"}
]}
+, {"enumname": "vr::EVRCompositorTextureUsage","values": [
+ {"name": "VRCompositorTextureUsage_Left","value": "0"}
+ ,{"name": "VRCompositorTextureUsage_Right","value": "1"}
+ ,{"name": "VRCompositorTextureUsage_Both","value": "2"}
+]}
, {"enumname": "vr::EVRCompositorTimingMode","values": [
{"name": "VRCompositorTimingMode_Implicit","value": "0"}
,{"name": "VRCompositorTimingMode_Explicit_RuntimePerformsPostPresentHandoff","value": "1"}
@@ -1485,7 +1495,7 @@
,{
"constname": "IVRChaperoneSetup_Version","consttype": "const char *const", "constval": "IVRChaperoneSetup_006"}
,{
- "constname": "IVRCompositor_Version","consttype": "const char *const", "constval": "IVRCompositor_028"}
+ "constname": "IVRCompositor_Version","consttype": "const char *const", "constval": "IVRCompositor_029"}
,{
"constname": "k_unVROverlayMaxKeyLength","consttype": "const uint32_t", "constval": "128"}
,{
@@ -1987,6 +1997,10 @@
,{
"constname": "k_pch_LastKnown_ActualHMDDriver_String","consttype": "const char *const", "constval": "ActualHMDDriver"}
,{
+ "constname": "k_pch_LastKnown_HMDSerialNumber_String","consttype": "const char *const", "constval": "HMDSerialNumber"}
+,{
+ "constname": "k_pch_LastKnown_HMDRemoteClientID_String","consttype": "const char *const", "constval": "RemoteClientID"}
+,{
"constname": "k_pch_DismissedWarnings_Section","consttype": "const char *const", "constval": "DismissedWarnings"}
,{
"constname": "k_pch_Input_Section","consttype": "const char *const", "constval": "input"}
@@ -2033,7 +2047,7 @@
,{
"constname": "IVRDebug_Version","consttype": "const char *const", "constval": "IVRDebug_001"}
,{
- "constname": "IVRIPCResourceManagerClient_Version","consttype": "const char *", "constval": "IVRIPCResourceManagerClient_001"}
+ "constname": "IVRIPCResourceManagerClient_Version","consttype": "const char *", "constval": "IVRIPCResourceManagerClient_002"}
,{
"constname": "k_ulDisplayRedirectContainer","consttype": "const PropertyContainerHandle_t", "constval": "25769803779"}
,{
@@ -2166,6 +2180,12 @@
,{"struct": "vr::VRBoneTransform_t","fields": [
{ "fieldname": "position", "fieldtype": "struct vr::HmdVector4_t"},
{ "fieldname": "orientation", "fieldtype": "struct vr::HmdQuaternionf_t"}]}
+,{"struct": "vr::VREyeTrackingData_t","fields": [
+{ "fieldname": "bActive", "fieldtype": "_Bool"},
+{ "fieldname": "bValid", "fieldtype": "_Bool"},
+{ "fieldname": "bTracked", "fieldtype": "_Bool"},
+{ "fieldname": "vGazeOrigin", "fieldtype": "vr::HmdVector3_t"},
+{ "fieldname": "vGazeTarget", "fieldtype": "vr::HmdVector3_t"}]}
,{"struct": "vr::DistortionCoordinates_t","fields": [
{ "fieldname": "rfRed", "fieldtype": "float [2]"},
{ "fieldname": "rfGreen", "fieldtype": "float [2]"},
@@ -3754,6 +3774,19 @@
}
,{
"classname": "vr::IVRCompositor",
+ "methodname": "GetSubmitTexture",
+ "returntype": "vr::EVRCompositorError",
+ "params": [
+{ "paramname": "pOutTexture" ,"paramtype": "struct vr::Texture_t *"},
+{ "paramname": "pNeedsFlush" ,"paramtype": "bool *"},
+{ "paramname": "eUsage" ,"paramtype": "vr::EVRCompositorTextureUsage"},
+{ "paramname": "pTexture" ,"paramtype": "const struct vr::Texture_t *"},
+{ "paramname": "pBounds" ,"paramtype": "const struct vr::VRTextureBounds_t *"},
+{ "paramname": "nSubmitFlags" ,"paramtype": "vr::EVRSubmitFlags"}
+ ]
+}
+,{
+ "classname": "vr::IVRCompositor",
"methodname": "Submit",
"returntype": "vr::EVRCompositorError",
"params": [
@@ -5898,6 +5931,7 @@
"methodname": "NewSharedVulkanSemaphore",
"returntype": "bool",
"params": [
+{ "paramname": "bCounting" ,"paramtype": "bool"},
{ "paramname": "pSharedHandle" ,"paramtype": "vr::SharedTextureHandle_t *"}
]
}
diff --git a/headers/openvr_capi.h b/headers/openvr_capi.h
index 5af3e5e..c4b6877 100644
--- a/headers/openvr_capi.h
+++ b/headers/openvr_capi.h
@@ -127,7 +127,7 @@
static const char * IVRApplications_Version = "IVRApplications_007";
static const char * IVRChaperone_Version = "IVRChaperone_004";
static const char * IVRChaperoneSetup_Version = "IVRChaperoneSetup_006";
-static const char * IVRCompositor_Version = "IVRCompositor_028";
+static const char * IVRCompositor_Version = "IVRCompositor_029";
static const unsigned long k_unVROverlayMaxKeyLength = 128;
static const unsigned long k_unVROverlayMaxNameLength = 128;
static const unsigned long k_unMaxOverlayCount = 128;
@@ -378,6 +378,8 @@
static const char * k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer";
static const char * k_pch_LastKnown_HMDModel_String = "HMDModel";
static const char * k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver";
+static const char * k_pch_LastKnown_HMDSerialNumber_String = "HMDSerialNumber";
+static const char * k_pch_LastKnown_HMDRemoteClientID_String = "RemoteClientID";
static const char * k_pch_DismissedWarnings_Section = "DismissedWarnings";
static const char * k_pch_Input_Section = "input";
static const char * k_pch_Input_LeftThumbstickRotation_Float = "leftThumbstickRotation";
@@ -401,7 +403,7 @@
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_001";
+static const char * IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002";
static const unsigned long long k_ulDisplayRedirectContainer = 25769803779;
static const char * IVRProperties_Version = "IVRProperties_001";
static const char * k_pchPathUserHandRight = "/user/hand/right";
@@ -585,6 +587,9 @@
ETrackedDeviceProperty_Prop_IgnoreMotionForStandby_Bool = 1053,
ETrackedDeviceProperty_Prop_ActualTrackingSystemName_String = 1054,
ETrackedDeviceProperty_Prop_AllowCameraToggle_Bool = 1055,
+ ETrackedDeviceProperty_Prop_AllowLightSourceFrequency_Bool = 1056,
+ ETrackedDeviceProperty_Prop_SteamRemoteClientID_Uint64 = 1057,
+ ETrackedDeviceProperty_Prop_Reserved_1058 = 1058,
ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool = 2000,
ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float = 2001,
ETrackedDeviceProperty_Prop_DisplayFrequency_Float = 2002,
@@ -815,6 +820,7 @@
EVRSubmitFlags_Submit_Reserved2 = 32768,
EVRSubmitFlags_Submit_Reserved3 = 65536,
EVRSubmitFlags_Submit_Reserved4 = 131072,
+ EVRSubmitFlags_Submit_Reserved5 = 262144,
} EVRSubmitFlags;
typedef enum EVRState
@@ -916,6 +922,7 @@
EVREventType_VREvent_OverlayDestroyed = 540,
EVREventType_VREvent_TrackingRecordingStarted = 541,
EVREventType_VREvent_TrackingRecordingStopped = 542,
+ EVREventType_VREvent_SetTrackingRecordingPath = 543,
EVREventType_VREvent_Reserved_0560 = 560,
EVREventType_VREvent_Reserved_0561 = 561,
EVREventType_VREvent_Reserved_0562 = 562,
@@ -1661,6 +1668,13 @@
EVRCompositorError_VRCompositorError_AlreadySet = 110,
} EVRCompositorError;
+typedef enum EVRCompositorTextureUsage
+{
+ EVRCompositorTextureUsage_VRCompositorTextureUsage_Left = 0,
+ EVRCompositorTextureUsage_VRCompositorTextureUsage_Right = 1,
+ EVRCompositorTextureUsage_VRCompositorTextureUsage_Both = 2,
+} EVRCompositorTextureUsage;
+
typedef enum EVRCompositorTimingMode
{
EVRCompositorTimingMode_VRCompositorTimingMode_Implicit = 0,
@@ -2070,6 +2084,15 @@
struct HmdQuaternionf_t orientation;
} VRBoneTransform_t;
+typedef struct VREyeTrackingData_t
+{
+ bool bActive;
+ bool bValid;
+ bool bTracked;
+ HmdVector3_t vGazeOrigin;
+ HmdVector3_t vGazeTarget;
+} VREyeTrackingData_t;
+
typedef struct DistortionCoordinates_t
{
float rfRed[2]; //float[2]
@@ -3006,6 +3029,7 @@
EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *WaitGetPoses)(struct TrackedDevicePose_t * pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t * pGamePoseArray, uint32_t unGamePoseArrayCount);
EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPoses)(struct TrackedDevicePose_t * pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t * pGamePoseArray, uint32_t unGamePoseArrayCount);
EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPoseForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex, struct TrackedDevicePose_t * pOutputPose, struct TrackedDevicePose_t * pOutputGamePose);
+ EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetSubmitTexture)(struct Texture_t * pOutTexture, bool * pNeedsFlush, EVRCompositorTextureUsage eUsage, struct Texture_t * pTexture, struct VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags);
EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *Submit)(EVREye eEye, struct Texture_t * pTexture, struct VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags);
EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SubmitWithArrayIndex)(EVREye eEye, struct Texture_t * pTexture, uint32_t unTextureArrayIndex, struct VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags);
void (OPENVR_FNTABLE_CALLTYPE *ClearLastSubmittedFrame)();
@@ -3297,7 +3321,7 @@
{
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 *NewSharedVulkanBuffer)(uint32_t nSize, uint32_t nUsageFlags, SharedTextureHandle_t * pSharedHandle);
- bool (OPENVR_FNTABLE_CALLTYPE *NewSharedVulkanSemaphore)(SharedTextureHandle_t * pSharedHandle);
+ bool (OPENVR_FNTABLE_CALLTYPE *NewSharedVulkanSemaphore)(bool bCounting, SharedTextureHandle_t * pSharedHandle);
bool (OPENVR_FNTABLE_CALLTYPE *RefResource)(SharedTextureHandle_t hSharedHandle, uint64_t * pNewIpcHandle);
bool (OPENVR_FNTABLE_CALLTYPE *UnrefResource)(SharedTextureHandle_t hSharedHandle);
bool (OPENVR_FNTABLE_CALLTYPE *GetDmabufFormats)(uint32_t * pOutFormatCount, uint32_t * pOutFormats);
diff --git a/headers/openvr_driver.h b/headers/openvr_driver.h
index f265582..c967c94 100644
--- a/headers/openvr_driver.h
+++ b/headers/openvr_driver.h
@@ -17,7 +17,7 @@
{
static const uint32_t k_nSteamVRVersionMajor = 2;
static const uint32_t k_nSteamVRVersionMinor = 12;
- static const uint32_t k_nSteamVRVersionBuild = 1;
+ static const uint32_t k_nSteamVRVersionBuild = 14;
} // namespace vr
// public_vrtypes.h
@@ -104,6 +104,16 @@
HmdQuaternionf_t orientation;
};
+struct VREyeTrackingData_t
+{
+ bool bActive;
+ bool bValid;
+ bool bTracked;
+
+ vr::HmdVector3_t vGazeOrigin; // Ray origin
+ vr::HmdVector3_t vGazeTarget; // Gaze target (fixation point)
+};
+
/** Used to return the post-distortion UVs for each color channel.
* UVs range from 0 to 1 with 0,0 in the upper left corner of the
* source render target. The 0,0 to 1,1 range covers a single eye. */
@@ -463,6 +473,9 @@
Prop_IgnoreMotionForStandby_Bool = 1053,
Prop_ActualTrackingSystemName_String = 1054, // the literal local driver name in case someone is playing games with prop 1000
Prop_AllowCameraToggle_Bool = 1055, // Shows the Enable/Disable camera option. Hide this for certain headsets if they have the camera tracking (since it's always on)
+ Prop_AllowLightSourceFrequency_Bool = 1056, // Shows the Anti-Flicker option in camera settings.
+ Prop_SteamRemoteClientID_Uint64 = 1057, // For vrlink
+ Prop_Reserved_1058 = 1058,
// Properties that are unique to TrackedDeviceClass_HMD
Prop_ReportsTimeSinceVSync_Bool = 2000,
@@ -769,7 +782,7 @@
Submit_Reserved2 = 0x08000,
Submit_Reserved3 = 0x10000,
Submit_Reserved4 = 0x20000,
-
+ Submit_Reserved5 = 0x40000,
};
/** Data required for passing Vulkan textures to IVRCompositor::Submit.
@@ -936,6 +949,7 @@
VREvent_TrackingRecordingStarted = 541,
VREvent_TrackingRecordingStopped = 542,
+ VREvent_SetTrackingRecordingPath = 543,
VREvent_Reserved_0560 = 560, // No data
VREvent_Reserved_0561 = 561, // No data
@@ -1005,8 +1019,8 @@
VREvent_FirmwareUpdateFinished = 1101,
VREvent_KeyboardClosed = 1200, // DEPRECATED: Sent only to the overlay it closed for, or globally if it was closed for a scene app
- VREvent_KeyboardCharInput = 1201,
- VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard
+ VREvent_KeyboardCharInput = 1201, // Sent on keyboard input. Warning: event type appears as both global event and overlay event
+ VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard. Warning: event type appears as both global event and overlay event
VREvent_KeyboardOpened_Global = 1203, // Sent globally when the keyboard is opened. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid)
VREvent_KeyboardClosed_Global = 1204, // Sent globally when the keyboard is closed. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid)
@@ -2797,6 +2811,8 @@
static const char* const k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer";
static const char *const k_pch_LastKnown_HMDModel_String = "HMDModel";
static const char* const k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver";
+ static const char* const k_pch_LastKnown_HMDSerialNumber_String = "HMDSerialNumber";
+ static const char* const k_pch_LastKnown_HMDRemoteClientID_String = "RemoteClientID"; // uint64 in string
//-----------------------------------------------------------------------------
// Dismissed warnings
@@ -3802,6 +3818,12 @@
/** Updates a pose component. */
virtual EVRInputError UpdatePoseComponent( VRInputComponentHandle_t ulComponent, const HmdMatrix34_t *pMatPoseOffset, double fTimeOffset ) = 0;
+
+ /** Creates an eye tracking component **/
+ virtual EVRInputError CreateEyeTrackingComponent( PropertyContainerHandle_t ulContainer, const char *pchName, VRInputComponentHandle_t *pHandle ) = 0;
+
+ /** Updates an eye tracking component. */
+ virtual EVRInputError UpdateEyeTrackingComponent( VRInputComponentHandle_t ulComponent, const VREyeTrackingData_t *pEyeTrackingData, double fTimeOffset ) = 0;
};
static const char * const IVRDriverInput_Version = "IVRDriverInput_004";
@@ -4240,7 +4262,7 @@
virtual bool NewSharedVulkanBuffer( uint32_t nSize, uint32_t nUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0;
/** Create a new tracked Vulkan Semaphore */
- virtual bool NewSharedVulkanSemaphore( vr::SharedTextureHandle_t *pSharedHandle ) = 0;
+ virtual bool NewSharedVulkanSemaphore( bool bCounting, vr::SharedTextureHandle_t *pSharedHandle ) = 0;
/** Grab a reference to hSharedHandle, and optionally generate a new IPC handle if pNewIpcHandle is not nullptr */
virtual bool RefResource( vr::SharedTextureHandle_t hSharedHandle, uint64_t *pNewIpcHandle ) = 0;
@@ -4292,7 +4314,7 @@
virtual ~IVRIPCResourceManagerClient() {};
};
-static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_001";
+static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_002";
}
diff --git a/lib/linuxarm64/libopenvr_api_unity.so b/lib/linuxarm64/libopenvr_api_unity.so
index 061f325..90cfd40 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 4fa7a5a..104fd37 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 403f222..b04a4c2 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 cf8e38b..198da62 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 f214cfa..74b9301 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 0538afd..47b8c6e 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 b2144c0..b17a514 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 a65f009..d4b0427 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 2cad051..ab53dc6 100644
--- a/samples/bin/win64/openvr_api.dll
+++ b/samples/bin/win64/openvr_api.dll
Binary files differ
diff --git a/samples/helloworldoverlay/openvroverlaycontroller.h b/samples/helloworldoverlay/openvroverlaycontroller.h
index e9698fb..8591616 100644
--- a/samples/helloworldoverlay/openvroverlaycontroller.h
+++ b/samples/helloworldoverlay/openvroverlaycontroller.h
@@ -67,6 +67,7 @@
private:
vr::HmdError m_eCompositorError;
vr::HmdError m_eOverlayError;
+ vr::Compositor_OverlaySettings m_overlaySettings;
vr::VROverlayHandle_t m_ulOverlayHandle;
vr::VROverlayHandle_t m_ulOverlayThumbnailHandle;
diff --git a/samples/unity_keyboard_sample/Assets/Plugins/openvr_api.cs b/samples/unity_keyboard_sample/Assets/Plugins/openvr_api.cs
index 1d715c1..b13cd3c 100644
--- a/samples/unity_keyboard_sample/Assets/Plugins/openvr_api.cs
+++ b/samples/unity_keyboard_sample/Assets/Plugins/openvr_api.cs
@@ -3242,6 +3242,25 @@
public VRControllerAxis_t rAxis3;
public VRControllerAxis_t rAxis4;
}
+[StructLayout(LayoutKind.Sequential)] public struct Compositor_OverlaySettings
+{
+ public uint size;
+ [MarshalAs(UnmanagedType.I1)]
+ public bool curved;
+ [MarshalAs(UnmanagedType.I1)]
+ public bool antialias;
+ public float scale;
+ public float distance;
+ public float alpha;
+ public float uOffset;
+ public float vOffset;
+ public float uScale;
+ public float vScale;
+ public float gridDivs;
+ public float gridWidth;
+ public float gridScale;
+ public HmdMatrix44_t transform;
+}
[StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t
{
public IntPtr pchKey; // const char *
diff --git a/samples/unity_teleport_sample/Assets/Plugins/openvr_api.cs b/samples/unity_teleport_sample/Assets/Plugins/openvr_api.cs
index 1d715c1..b13cd3c 100644
--- a/samples/unity_teleport_sample/Assets/Plugins/openvr_api.cs
+++ b/samples/unity_teleport_sample/Assets/Plugins/openvr_api.cs
@@ -3242,6 +3242,25 @@
public VRControllerAxis_t rAxis3;
public VRControllerAxis_t rAxis4;
}
+[StructLayout(LayoutKind.Sequential)] public struct Compositor_OverlaySettings
+{
+ public uint size;
+ [MarshalAs(UnmanagedType.I1)]
+ public bool curved;
+ [MarshalAs(UnmanagedType.I1)]
+ public bool antialias;
+ public float scale;
+ public float distance;
+ public float alpha;
+ public float uOffset;
+ public float vOffset;
+ public float uScale;
+ public float vScale;
+ public float gridDivs;
+ public float gridWidth;
+ public float gridScale;
+ public HmdMatrix44_t transform;
+}
[StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t
{
public IntPtr pchKey; // const char *