vrclient: Remove upper version limit for IVRCompositor_WaitGetPoses manual override.

CW-Bug-Id: #23412
This commit is contained in:
Paul Gofman 2024-02-14 14:25:32 -06:00 committed by Arkadiusz Hiler
parent 0efcd7d787
commit 5ec8d4dcfb
3 changed files with 37 additions and 15 deletions

View File

@ -235,7 +235,7 @@ MANUAL_METHODS = {
"IVRCompositor_Submit": lambda ver, abi: ver > 8,
"IVRCompositor_SetSkyboxOverride": lambda ver, abi: ver > 8,
"IVRCompositor_PostPresentHandoff": lambda ver, abi: abi == 'w',
"IVRCompositor_WaitGetPoses": lambda ver, abi: abi == 'w' and ver > 15 and ver < 27,
"IVRCompositor_WaitGetPoses": lambda ver, abi: abi == 'w' and ver > 15,
"IVRCompositor_GetVulkanDeviceExtensionsRequired": lambda ver, abi: abi == 'u',
"IVRRenderModels_LoadTextureD3D11_Async": lambda ver, abi: abi == 'w',
"IVRRenderModels_FreeTextureD3D11": lambda ver, abi: abi == 'w',

View File

@ -1295,6 +1295,41 @@ uint32_t __thiscall winIVRCompositor_IVRCompositor_026_SetSkyboxOverride( struct
return params._ret;
}
uint32_t __thiscall winIVRCompositor_IVRCompositor_027_WaitGetPoses( struct w_steam_iface *_this,
TrackedDevicePose_t *pRenderPoseArray, uint32_t unRenderPoseArrayCount,
TrackedDevicePose_t *pGamePoseArray, uint32_t unGamePoseArrayCount )
{
struct IVRCompositor_IVRCompositor_027_WaitGetPoses_params params =
{
.linux_side = _this->u_iface,
.pRenderPoseArray = pRenderPoseArray,
.unRenderPoseArrayCount = unRenderPoseArrayCount,
.pGamePoseArray = pGamePoseArray,
.unGamePoseArrayCount = unGamePoseArrayCount,
};
TRACE( "%p\n", _this );
wait_get_poses_init( _this->u_iface );
if (compositor_data.dxvk_device && compositor_data.d3d11_explicit_handoff && !compositor_data.handoff_called)
{
struct IVRCompositor_IVRCompositor_027_PostPresentHandoff_params params = {.linux_side = _this->u_iface};
/* Calling handoff after submit is optional for d3d11 but mandatory for Vulkan
* if explicit timing mode is set. */
VRCLIENT_CALL( IVRCompositor_IVRCompositor_027_PostPresentHandoff, &params );
}
VRCLIENT_CALL( IVRCompositor_IVRCompositor_027_WaitGetPoses, &params );
if (compositor_data.dxvk_device && compositor_data.d3d11_explicit_handoff)
{
struct IVRCompositor_IVRCompositor_027_SubmitExplicitTimingData_params params = {.linux_side = _this->u_iface};
VRCLIENT_CALL( IVRCompositor_IVRCompositor_027_SubmitExplicitTimingData, &params );
}
wait_get_poses_done( _this->u_iface );
return params._ret;
}
uint32_t __thiscall winIVRCompositor_IVRCompositor_027_Submit( struct w_steam_iface *_this,
uint32_t eEye, const w_Texture_t *pTexture,
const VRTextureBounds_t *pBounds, uint32_t nSubmitFlags )

View File

@ -10097,20 +10097,7 @@ uint32_t __thiscall winIVRCompositor_IVRCompositor_027_GetTrackingSpace(struct w
return params._ret;
}
uint32_t __thiscall winIVRCompositor_IVRCompositor_027_WaitGetPoses(struct w_steam_iface *_this, TrackedDevicePose_t *pRenderPoseArray, uint32_t unRenderPoseArrayCount, TrackedDevicePose_t *pGamePoseArray, uint32_t unGamePoseArrayCount)
{
struct IVRCompositor_IVRCompositor_027_WaitGetPoses_params params =
{
.linux_side = _this->u_iface,
.pRenderPoseArray = pRenderPoseArray,
.unRenderPoseArrayCount = unRenderPoseArrayCount,
.pGamePoseArray = pGamePoseArray,
.unGamePoseArrayCount = unGamePoseArrayCount,
};
TRACE("%p\n", _this);
VRCLIENT_CALL( IVRCompositor_IVRCompositor_027_WaitGetPoses, &params );
return params._ret;
}
extern uint32_t __thiscall winIVRCompositor_IVRCompositor_027_WaitGetPoses(struct w_steam_iface *_this, TrackedDevicePose_t *pRenderPoseArray, uint32_t unRenderPoseArrayCount, TrackedDevicePose_t *pGamePoseArray, uint32_t unGamePoseArrayCount);
uint32_t __thiscall winIVRCompositor_IVRCompositor_027_GetLastPoses(struct w_steam_iface *_this, TrackedDevicePose_t *pRenderPoseArray, uint32_t unRenderPoseArrayCount, TrackedDevicePose_t *pGamePoseArray, uint32_t unGamePoseArrayCount)
{