diff --git a/vrclient_x64/gen_wrapper.py b/vrclient_x64/gen_wrapper.py index 95d46983..e2060b87 100755 --- a/vrclient_x64/gen_wrapper.py +++ b/vrclient_x64/gen_wrapper.py @@ -127,8 +127,20 @@ def ivrsystem_get_dxgi_output_info(cppname, method): 2: "get_dxgi_output_info2" }.get(param_count, "unhandled_get_dxgi_output_info_method") +def ivrcompositor_submit(cppname, method): + if "005" in cppname: + return "ivrcompositor_005_submit" + if "006" in cppname: + return "ivrcompositor_006_submit" + if "007" in cppname: + return "ivrcompositor_007_submit" + if "008" in cppname: + return "ivrcompositor_008_submit" + return "ivrcompositor_submit" + method_overrides = [ - ("IVRSystem", "GetDXGIOutputInfo", ivrsystem_get_dxgi_output_info) + ("IVRSystem", "GetDXGIOutputInfo", ivrsystem_get_dxgi_output_info), + ("IVRCompositor", "Submit", ivrcompositor_submit), ] def display_sdkver(s): diff --git a/vrclient_x64/vrclient_main.c b/vrclient_x64/vrclient_main.c index eb58fb61..e5ac73c7 100644 --- a/vrclient_x64/vrclient_main.c +++ b/vrclient_x64/vrclient_main.c @@ -11,6 +11,7 @@ #include "wine/debug.h" #include "wine/library.h" +#include "vrclient_defs.h" #include "vrclient_private.h" WINE_DEFAULT_DEBUG_CHANNEL(vrclient); @@ -146,3 +147,50 @@ void get_dxgi_output_info2(void *cpp_func, void *linux_side, int32_t *adapter_id *adapter_idx = 0; *output_idx = 0; } + +void ivrcompositor_005_submit( + void (*cpp_func)(void *, Hmd_Eye, void *, Compositor_TextureBounds *), + void *linux_side, Hmd_Eye eye, void *texture, Compositor_TextureBounds *bounds) +{ + TRACE("%p, %#x, %p, %p\n", linux_side, eye, texture, bounds); + + return cpp_func(linux_side, eye, texture, bounds); +} + +VRCompositorError ivrcompositor_006_submit( + VRCompositorError (*cpp_func)(void *, Hmd_Eye, void *, VRTextureBounds_t *), + void *linux_side, Hmd_Eye eye, void *texture, VRTextureBounds_t *bounds) +{ + TRACE("%p, %#x, %p, %p\n", linux_side, eye, texture, bounds); + + return cpp_func(linux_side, eye, texture, bounds); +} + +VRCompositorError ivrcompositor_007_submit( + VRCompositorError (*cpp_func)(void *, Hmd_Eye, GraphicsAPIConvention, void *, VRTextureBounds_t *), + void *linux_side, Hmd_Eye eye, GraphicsAPIConvention api, void *texture, VRTextureBounds_t *bounds) +{ + TRACE("%p, %#x, %#x, %p, %p\n", linux_side, eye, api, texture, bounds); + + return cpp_func(linux_side, eye, api, texture, bounds); +} + +VRCompositorError ivrcompositor_008_submit( + VRCompositorError (*cpp_func)(void *, Hmd_Eye, GraphicsAPIConvention, void *, + VRTextureBounds_t *, VRSubmitFlags_t), + void *linux_side, Hmd_Eye eye, GraphicsAPIConvention api, void *texture, + VRTextureBounds_t *bounds, VRSubmitFlags_t flags) +{ + TRACE("%p, %#x, %#x, %p, %p, %#x\n", linux_side, eye, api, texture, bounds, flags); + + return cpp_func(linux_side, eye, api, texture, bounds, flags); +} + +EVRCompositorError ivrcompositor_submit( + EVRCompositorError (*cpp_func)(void *, EVREye, Texture_t *, VRTextureBounds_t *, EVRSubmitFlags), + void *linux_side, EVREye eye, Texture_t *texture, VRTextureBounds_t *bounds, EVRSubmitFlags flags) +{ + TRACE("%p, %#x, %p, %p, %#x\n", linux_side, eye, texture, bounds, flags); + + return cpp_func(linux_side, eye, texture, bounds, flags); +} diff --git a/vrclient_x64/vrclient_private.h b/vrclient_x64/vrclient_private.h index 985f2282..821224ab 100644 --- a/vrclient_x64/vrclient_private.h +++ b/vrclient_x64/vrclient_private.h @@ -34,9 +34,29 @@ void *create_win_interface(const char *name, void *linux_side); unsigned int steamclient_unix_path_to_dos_path(unsigned int api_result, char *inout, unsigned int inout_bytes); void *create_LinuxMatchmakingServerListResponse(void *win); +#ifndef __cplusplus void get_dxgi_output_info(void *cpp_func, void *linux_side, int32_t *adapter_idx); void get_dxgi_output_info2(void *cpp_func, void *linux_side, int32_t *adapter_idx, int32_t *output_idx); +void ivrcompositor_005_submit( + void (*cpp_func)(void *, Hmd_Eye, void *, Compositor_TextureBounds *), + void *linux_side, Hmd_Eye eye, void *texture, Compositor_TextureBounds *bounds); +VRCompositorError ivrcompositor_006_submit( + VRCompositorError (*cpp_func)(void *, Hmd_Eye, void *, VRTextureBounds_t *), + void *linux_side, Hmd_Eye eye, void *texture, VRTextureBounds_t *bounds); +VRCompositorError ivrcompositor_007_submit( + VRCompositorError (*cpp_func)(void *, Hmd_Eye, GraphicsAPIConvention, void *, VRTextureBounds_t *), + void *linux_side, Hmd_Eye eye, GraphicsAPIConvention api, void *texture, VRTextureBounds_t *bounds); +VRCompositorError ivrcompositor_008_submit( + VRCompositorError (*cpp_func)(void *, Hmd_Eye, GraphicsAPIConvention, void *, + VRTextureBounds_t *, VRSubmitFlags_t), + void *linux_side, Hmd_Eye eye, GraphicsAPIConvention texture_type, void *texture, + VRTextureBounds_t *bounds, VRSubmitFlags_t submit_flags); +EVRCompositorError ivrcompositor_submit( + EVRCompositorError (*cpp_func)(void *, EVREye, Texture_t *, VRTextureBounds_t *, EVRSubmitFlags), + void *linux_side, EVREye eye, Texture_t *texture, VRTextureBounds_t *bounds, EVRSubmitFlags submit_flags); +#endif /* __cplusplus */ + #define TRACE WINE_TRACE #define ERR WINE_ERR #define WARN WINE_WARN diff --git a/vrclient_x64/winIVRCompositor.c b/vrclient_x64/winIVRCompositor.c index 5b83c94f..5874502d 100644 --- a/vrclient_x64/winIVRCompositor.c +++ b/vrclient_x64/winIVRCompositor.c @@ -62,7 +62,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_022_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_022_Submit(winIVRCompositor_IVRCompositor_022 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_022_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_022_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_022_ClearLastSubmittedFrame, 4) @@ -434,7 +434,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_021_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_021_Submit(winIVRCompositor_IVRCompositor_021 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_021_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_021_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_021_ClearLastSubmittedFrame, 4) @@ -806,7 +806,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_020_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_020_Submit(winIVRCompositor_IVRCompositor_020 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_020_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_020_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_020_ClearLastSubmittedFrame, 4) @@ -1162,7 +1162,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_019_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_019_Submit(winIVRCompositor_IVRCompositor_019 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_019_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_019_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_019_ClearLastSubmittedFrame, 4) @@ -1510,7 +1510,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_018_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_018_Submit(winIVRCompositor_IVRCompositor_018 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_018_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_018_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_018_ClearLastSubmittedFrame, 4) @@ -1842,7 +1842,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_016_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_016_Submit(winIVRCompositor_IVRCompositor_016 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_016_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_016_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_016_ClearLastSubmittedFrame, 4) @@ -2149,7 +2149,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_015_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_015_Submit(winIVRCompositor_IVRCompositor_015 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_015_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_015_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_015_ClearLastSubmittedFrame, 4) @@ -2472,7 +2472,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_014_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_014_Submit(winIVRCompositor_IVRCompositor_014 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_014_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_014_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_014_ClearLastSubmittedFrame, 4) @@ -2731,7 +2731,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_013_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_013_Submit(winIVRCompositor_IVRCompositor_013 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_013_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_013_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_013_ClearLastSubmittedFrame, 4) @@ -2974,7 +2974,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_012_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_012_Submit(winIVRCompositor_IVRCompositor_012 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_012_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_012_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_012_ClearLastSubmittedFrame, 4) @@ -3202,7 +3202,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_011_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_011_Submit(winIVRCompositor_IVRCompositor_011 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_011_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_011_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_011_ClearLastSubmittedFrame, 4) @@ -3421,7 +3421,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_010_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_010_Submit(winIVRCompositor_IVRCompositor_010 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_010_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_010_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_010_ClearLastSubmittedFrame, 4) @@ -3640,7 +3640,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_009_Submit, 28) EVRCompositorError __thiscall winIVRCompositor_IVRCompositor_009_Submit(winIVRCompositor_IVRCompositor_009 *_this, EVREye eEye, Texture_t * pTexture, VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_009_Submit(_this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_submit(cppIVRCompositor_IVRCompositor_009_Submit, _this->linux_side, eEye, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_009_ClearLastSubmittedFrame, 4) @@ -3873,7 +3873,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_008_Submit, 32) VRCompositorError __thiscall winIVRCompositor_IVRCompositor_008_Submit(winIVRCompositor_IVRCompositor_008 *_this, Hmd_Eye eEye, GraphicsAPIConvention eTextureType, void * pTexture, VRTextureBounds_t * pBounds, VRSubmitFlags_t nSubmitFlags) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_008_Submit(_this->linux_side, eEye, eTextureType, pTexture, pBounds, nSubmitFlags); + return ivrcompositor_008_submit(cppIVRCompositor_IVRCompositor_008_Submit, _this->linux_side, eEye, eTextureType, pTexture, pBounds, nSubmitFlags); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_008_ClearLastSubmittedFrame, 4) @@ -4108,7 +4108,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_007_Submit, 28) VRCompositorError __thiscall winIVRCompositor_IVRCompositor_007_Submit(winIVRCompositor_IVRCompositor_007 *_this, Hmd_Eye eEye, GraphicsAPIConvention eTextureType, void * pTexture, VRTextureBounds_t * pBounds) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_007_Submit(_this->linux_side, eEye, eTextureType, pTexture, pBounds); + return ivrcompositor_007_submit(cppIVRCompositor_IVRCompositor_007_Submit, _this->linux_side, eEye, eTextureType, pTexture, pBounds); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_007_ClearLastSubmittedFrame, 4) @@ -4294,7 +4294,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_006_Submit, 24) VRCompositorError __thiscall winIVRCompositor_IVRCompositor_006_Submit(winIVRCompositor_IVRCompositor_006 *_this, Hmd_Eye eEye, void * pTexture, VRTextureBounds_t * pBounds) { TRACE("%p\n", _this); - return cppIVRCompositor_IVRCompositor_006_Submit(_this->linux_side, eEye, pTexture, pBounds); + return ivrcompositor_006_submit(cppIVRCompositor_IVRCompositor_006_Submit, _this->linux_side, eEye, pTexture, pBounds); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_006_ClearLastSubmittedFrame, 4) @@ -4481,7 +4481,7 @@ DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_005_Submit, 24) void __thiscall winIVRCompositor_IVRCompositor_005_Submit(winIVRCompositor_IVRCompositor_005 *_this, Hmd_Eye eEye, void * pTexture, Compositor_TextureBounds * pBounds) { TRACE("%p\n", _this); - cppIVRCompositor_IVRCompositor_005_Submit(_this->linux_side, eEye, pTexture, pBounds); + ivrcompositor_005_submit(cppIVRCompositor_IVRCompositor_005_Submit, _this->linux_side, eEye, pTexture, pBounds); } DEFINE_THISCALL_WRAPPER(winIVRCompositor_IVRCompositor_005_ClearLastSubmittedFrame, 4)