From 74b7f33e984e5cec670bea1bc4bb7e9c94bf3873 Mon Sep 17 00:00:00 2001 From: Matt Coffin Date: Sun, 16 Aug 2020 14:31:33 -0600 Subject: [PATCH] vrclient: Add support for DXVK in IVROverlay::SetOverlayTexture --- vrclient_x64/gen_wrapper.py | 25 +++ vrclient_x64/vrclient_x64/vrclient_defs.h | 6 +- vrclient_x64/vrclient_x64/vrclient_main.c | 166 +++++++++++++++---- vrclient_x64/vrclient_x64/vrclient_private.h | 17 +- vrclient_x64/vrclient_x64/winIVROverlay.c | 40 ++--- 5 files changed, 203 insertions(+), 51 deletions(-) diff --git a/vrclient_x64/gen_wrapper.py b/vrclient_x64/gen_wrapper.py index c12ad580..9062fcb7 100755 --- a/vrclient_x64/gen_wrapper.py +++ b/vrclient_x64/gen_wrapper.py @@ -350,6 +350,30 @@ def ivrmailbox_undoc3(cppname, method): assert "001" in cppname return "ivrmailbox_undoc3" +def ivroverlay_set_overlay_texture(cppname, method): + if "001" in cppname: + return "ivroverlay_001_set_overlay_texture" + for version in ["002", "003", "004", "005"]: + if version in cppname: + return "ivroverlay_005_set_overlay_texture" + assert \ + "007" in cppname or \ + "008" in cppname or \ + "010" in cppname or \ + "011" in cppname or \ + "012" in cppname or \ + "013" in cppname or \ + "014" in cppname or \ + "016" in cppname or \ + "017" in cppname or \ + "018" in cppname or \ + "019" in cppname or \ + "020" in cppname or \ + "021" in cppname or \ + "022" in cppname or \ + "024" in cppname + return "ivroverlay_set_overlay_texture" + method_overrides = [ ("IVRClientCore", "Init", ivrclientcore_init), ("IVRClientCore", "GetGenericInterface", ivrclientcore_get_generic_interface), @@ -364,6 +388,7 @@ method_overrides = [ ("IVRRenderModels", "FreeTextureD3D11", ivrrendermodels_free_texture_d3d11), ("IVRRenderModels", "LoadIntoTextureD3D11_Async", ivrrendermodels_load_into_texture_d3d11_async), ("IVRMailbox", "undoc3", ivrmailbox_undoc3), + ("IVROverlay", "SetOverlayTexture", ivroverlay_set_overlay_texture), ] method_overrides_data = [ diff --git a/vrclient_x64/vrclient_x64/vrclient_defs.h b/vrclient_x64/vrclient_x64/vrclient_defs.h index e51646f6..9aeae065 100644 --- a/vrclient_x64/vrclient_x64/vrclient_defs.h +++ b/vrclient_x64/vrclient_x64/vrclient_defs.h @@ -29,7 +29,6 @@ typedef int EVRNotificationType, EVRNotificationError, EVRNotificationStyle, - EVROverlayError, EGamepadTextInputLineMode, EOverlayDirection, EColorSpace, @@ -312,4 +311,9 @@ typedef enum EVRRenderModelError VRRenderModelError_InvalidTexture = 400, } EVRRenderModelError; +typedef enum EVROverlayError +{ + VROverlayError_InvalidHandle = 11, +} EVROverlayError; + #endif diff --git a/vrclient_x64/vrclient_x64/vrclient_main.c b/vrclient_x64/vrclient_x64/vrclient_main.c index d3764384..5199bca0 100644 --- a/vrclient_x64/vrclient_x64/vrclient_main.c +++ b/vrclient_x64/vrclient_x64/vrclient_main.c @@ -744,6 +744,83 @@ static EVRCompositorError ivrcompositor_submit_wined3d( } #ifdef VRCLIENT_HAVE_DXVK +static Texture_t vrclient_translate_texture_dxvk(Texture_t *texture, struct VRVulkanTextureData_t *vkdata, + IDXGIVkInteropSurface *dxvk_surface, IDXGIVkInteropDevice **p_dxvk_device, VkImageLayout *image_layout, + VkImageCreateInfo *image_info) +{ + struct Texture_t vktexture; + VkImage image_handle; + + dxvk_surface->lpVtbl->GetDevice(dxvk_surface, p_dxvk_device); + + (*p_dxvk_device)->lpVtbl->GetVulkanHandles(*p_dxvk_device, &vkdata->m_pInstance, + &vkdata->m_pPhysicalDevice, &vkdata->m_pDevice); + + (*p_dxvk_device)->lpVtbl->GetSubmissionQueue(*p_dxvk_device, &vkdata->m_pQueue, &vkdata->m_nQueueFamilyIndex); + + image_info->sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + image_info->pNext = NULL; + + dxvk_surface->lpVtbl->GetVulkanImageInfo(dxvk_surface, &image_handle, image_layout, image_info); + + load_vk_unwrappers(); + + vkdata->m_nImage = (uint64_t)image_handle; + vkdata->m_pDevice = get_native_VkDevice(vkdata->m_pDevice); + vkdata->m_pPhysicalDevice = get_native_VkPhysicalDevice(vkdata->m_pPhysicalDevice); + vkdata->m_pInstance = get_native_VkInstance(vkdata->m_pInstance); + vkdata->m_pQueue = get_native_VkQueue(vkdata->m_pQueue); + vkdata->m_nWidth = image_info->extent.width; + vkdata->m_nHeight = image_info->extent.height; + vkdata->m_nFormat = image_info->format; + vkdata->m_nSampleCount = image_info->samples; + + vktexture = *texture; + vktexture.handle = vkdata; + vktexture.eType = TextureType_Vulkan; + + return vktexture; +} + +static EVROverlayError ivroverlay_set_overlay_texture_dxvk( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, Texture_t *), + void *linux_side, VROverlayHandle_t overlayHandle, Texture_t *texture, + unsigned int version, IDXGIVkInteropSurface *dxvk_surface) +{ + struct VRVulkanTextureData_t vkdata; + IDXGIVkInteropDevice *dxvk_device; + struct Texture_t vktexture; + + VkImageLayout image_layout; + VkImageCreateInfo image_info; + VkImageSubresourceRange subresources; + + EVRCompositorError err; + + vktexture = vrclient_translate_texture_dxvk(texture, &vkdata, dxvk_surface, &dxvk_device, &image_layout, &image_info); + + subresources.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + subresources.baseMipLevel = 0; + subresources.levelCount = image_info.mipLevels; + subresources.baseArrayLayer = 0; + subresources.layerCount = image_info.arrayLayers; + + dxvk_device->lpVtbl->TransitionSurfaceLayout(dxvk_device, dxvk_surface, &subresources, + image_layout, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); + dxvk_device->lpVtbl->FlushRenderingCommands(dxvk_device); + dxvk_device->lpVtbl->LockSubmissionQueue(dxvk_device); + + err = cpp_func(linux_side, overlayHandle, &vktexture); + + dxvk_device->lpVtbl->ReleaseSubmissionQueue(dxvk_device); + dxvk_device->lpVtbl->TransitionSurfaceLayout(dxvk_device, dxvk_surface, &subresources, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, image_layout); + + dxvk_device->lpVtbl->Release(dxvk_device); + dxvk_surface->lpVtbl->Release(dxvk_surface); + return err; +} + static EVRCompositorError ivrcompositor_submit_dxvk( EVRCompositorError (*cpp_func)(void *, EVREye, Texture_t *, VRTextureBounds_t *, EVRSubmitFlags), void *linux_side, EVREye eye, Texture_t *texture, VRTextureBounds_t *bounds, EVRSubmitFlags flags, @@ -753,47 +830,19 @@ static EVRCompositorError ivrcompositor_submit_dxvk( IDXGIVkInteropDevice *dxvk_device; struct Texture_t vktexture; - VkImage image_handle; VkImageLayout image_layout; VkImageCreateInfo image_info; VkImageSubresourceRange subresources; EVRCompositorError err; - dxvk_surface->lpVtbl->GetDevice(dxvk_surface, &dxvk_device); + vktexture = vrclient_translate_texture_dxvk(texture, &vkdata, dxvk_surface, &dxvk_device, &image_layout, &image_info); user_data->dxvk_device = dxvk_device; - dxvk_device->lpVtbl->GetVulkanHandles(dxvk_device, &vkdata.m_pInstance, - &vkdata.m_pPhysicalDevice, &vkdata.m_pDevice); - - dxvk_device->lpVtbl->GetSubmissionQueue(dxvk_device, &vkdata.m_pQueue, &vkdata.m_nQueueFamilyIndex); - - /* DXVK needs this to be initialized correctly */ - image_info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; - image_info.pNext = NULL; - - dxvk_surface->lpVtbl->GetVulkanImageInfo(dxvk_surface, &image_handle, &image_layout, &image_info); - - load_vk_unwrappers(); - - vkdata.m_nImage = (uint64_t)image_handle; - vkdata.m_pDevice = get_native_VkDevice(vkdata.m_pDevice); - vkdata.m_pPhysicalDevice = get_native_VkPhysicalDevice(vkdata.m_pPhysicalDevice); - vkdata.m_pInstance = get_native_VkInstance(vkdata.m_pInstance); - vkdata.m_pQueue = get_native_VkQueue(vkdata.m_pQueue); - vkdata.m_nWidth = image_info.extent.width; - vkdata.m_nHeight = image_info.extent.height; - vkdata.m_nFormat = image_info.format; - vkdata.m_nSampleCount = image_info.samples; - if (flags & (Submit_TextureWithPose | Submit_TextureWithDepth)) FIXME("Unhandled flags %#x.\n", flags & (Submit_TextureWithPose | Submit_TextureWithDepth)); - vktexture = *texture; - vktexture.handle = &vkdata; - vktexture.eType = TextureType_Vulkan; - subresources.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; subresources.baseMipLevel = 0; subresources.levelCount = image_info.mipLevels; @@ -891,6 +940,65 @@ static EVRCompositorError ivrcompositor_submit_vulkan( return cpp_func(linux_side, eye, tex, bounds, flags); } +EVROverlayError ivroverlay_set_overlay_texture( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, Texture_t *), + void *linux_side, VROverlayHandle_t overlayHandle, Texture_t *texture, + unsigned int version) +{ + IUnknown *texture_iface; + HRESULT hr; + + TRACE("%p, overlayHandle = %#x, texture = %p\n", linux_side, overlayHandle, texture); + + switch (texture->eType) + { + case TextureType_DirectX: + TRACE("D3D11\n"); + + if (!texture->handle) { + WARN("No D3D11 texture %p.\n", texture); + return cpp_func(linux_side, overlayHandle, texture); + } + + texture_iface = texture->handle; + +#ifdef VRCLIENT_HAVE_DXVK + { + IDXGIVkInteropSurface *dxvk_surface; + if (SUCCEEDED(hr = texture_iface->lpVtbl->QueryInterface(texture_iface, &IID_IDXGIVkInteropSurface, (void **)&dxvk_surface))) { + return ivroverlay_set_overlay_texture_dxvk(cpp_func, linux_side, overlayHandle, texture, version, dxvk_surface); + } + } +#endif + + WARN("Invalid D3D11 texture %p.\n", texture); + return cpp_func(linux_side, overlayHandle, texture); + default: + return cpp_func(linux_side, overlayHandle, texture); + } +} + +EVROverlayError ivroverlay_005_set_overlay_texture( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, GraphicsAPIConvention, void *), + void *linux_side, VROverlayHandle_t overlayHandle, GraphicsAPIConvention api, void *texture, + unsigned int version) +{ + /* hopefully no one actually uses this old interface... Vulkan support + * wasn't added until later; how can we pass in a DirectX texture? */ + FIXME("unimplemented!\n"); + return VROverlayError_InvalidHandle; +} + +EVROverlayError ivroverlay_001_set_overlay_texture( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, void *), + void *linux_side, VROverlayHandle_t overlayHandle, void *texture, + unsigned int version) +{ + /* probably no one actually uses this old interface... */ + FIXME("unimplemented!\n"); + return VROverlayError_InvalidHandle; +} + 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, diff --git a/vrclient_x64/vrclient_x64/vrclient_private.h b/vrclient_x64/vrclient_x64/vrclient_private.h index e8d82521..5d2f28c8 100644 --- a/vrclient_x64/vrclient_x64/vrclient_private.h +++ b/vrclient_x64/vrclient_x64/vrclient_private.h @@ -128,7 +128,7 @@ VRCompositorError ivrcompositor_008_submit( unsigned int version, struct compositor_data *user_data); 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, + void *linux_side, EVREye eye, Texture_t *texture, VRTextureBounds_t *bounds, EVRSubmitFlags flags, unsigned int version, struct compositor_data *user_data); void ivrcompositor_post_present_handoff(void (*cpp_func)(void *), @@ -155,6 +155,21 @@ void ivrrendermodels_free_texture_d3d11( void (*cpp_func)(void *, void *), void *linux_side, void *dst_texture, unsigned int version); +EVROverlayError ivroverlay_set_overlay_texture( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, Texture_t *), + void *linux_side, VROverlayHandle_t overlayHandle, Texture_t *texture, + unsigned int version); + +EVROverlayError ivroverlay_005_set_overlay_texture( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, GraphicsAPIConvention, void *), + void *linux_side, VROverlayHandle_t overlayHandle, GraphicsAPIConvention api, void *texture, + unsigned int version); + +EVROverlayError ivroverlay_001_set_overlay_texture( + EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, void *), + void *linux_side, VROverlayHandle_t overlayHandle, void *texture, + unsigned int version); + #endif /* __cplusplus */ #define TRACE WINE_TRACE diff --git a/vrclient_x64/vrclient_x64/winIVROverlay.c b/vrclient_x64/vrclient_x64/winIVROverlay.c index 167f42ac..7c180627 100644 --- a/vrclient_x64/vrclient_x64/winIVROverlay.c +++ b/vrclient_x64/vrclient_x64/winIVROverlay.c @@ -421,7 +421,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_024_SetOverlayTexture(winIVROverlay_IVROverlay_024 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_024_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_024_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 24); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ClearOverlayTexture, 12) @@ -1210,7 +1210,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_022_SetOverlayTexture(winIVROverlay_IVROverlay_022 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_022_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_022_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 22); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ClearOverlayTexture, 12) @@ -1951,7 +1951,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_021_SetOverlayTexture(winIVROverlay_IVROverlay_021 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_021_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_021_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 21); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ClearOverlayTexture, 12) @@ -2722,7 +2722,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_020_SetOverlayTexture(winIVROverlay_IVROverlay_020 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_020_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_020_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 20); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ClearOverlayTexture, 12) @@ -3515,7 +3515,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_019_SetOverlayTexture(winIVROverlay_IVROverlay_019 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_019_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_019_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 19); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ClearOverlayTexture, 12) @@ -4312,7 +4312,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_018_SetOverlayTexture(winIVROverlay_IVROverlay_018 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_018_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_018_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 18); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ClearOverlayTexture, 12) @@ -5116,7 +5116,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_017_SetOverlayTexture(winIVROverlay_IVROverlay_017 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_017_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_017_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 17); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ClearOverlayTexture, 12) @@ -5908,7 +5908,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_016_SetOverlayTexture(winIVROverlay_IVROverlay_016 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_016_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_016_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 16); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ClearOverlayTexture, 12) @@ -6661,7 +6661,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_014_SetOverlayTexture(winIVROverlay_IVROverlay_014 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_014_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_014_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 14); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ClearOverlayTexture, 12) @@ -7395,7 +7395,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_013_SetOverlayTexture(winIVROverlay_IVROverlay_013 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_013_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_013_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 13); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ClearOverlayTexture, 12) @@ -8083,7 +8083,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_012_SetOverlayTexture(winIVROverlay_IVROverlay_012 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_012_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_012_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 12); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ClearOverlayTexture, 12) @@ -8754,7 +8754,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_011_SetOverlayTexture(winIVROverlay_IVROverlay_011 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_011_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_011_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 11); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ClearOverlayTexture, 12) @@ -9402,7 +9402,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_010_SetOverlayTexture(winIVROverlay_IVROverlay_010 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_010_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_010_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 10); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ClearOverlayTexture, 12) @@ -10014,7 +10014,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_008_SetOverlayTexture(winIVROverlay_IVROverlay_008 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_008_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_008_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 8); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ClearOverlayTexture, 12) @@ -10606,7 +10606,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayTexture, 16) EVROverlayError __thiscall winIVROverlay_IVROverlay_007_SetOverlayTexture(winIVROverlay_IVROverlay_007 *_this, VROverlayHandle_t ulOverlayHandle, Texture_t * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_007_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_set_overlay_texture(cppIVROverlay_IVROverlay_007_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 7); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ClearOverlayTexture, 12) @@ -11150,7 +11150,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayTexture, 20) VROverlayError __thiscall winIVROverlay_IVROverlay_005_SetOverlayTexture(winIVROverlay_IVROverlay_005 *_this, VROverlayHandle_t ulOverlayHandle, GraphicsAPIConvention eTextureType, void * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_005_SetOverlayTexture(_this->linux_side, ulOverlayHandle, eTextureType, pTexture); + return ivroverlay_005_set_overlay_texture(cppIVROverlay_IVROverlay_005_SetOverlayTexture, _this->linux_side, ulOverlayHandle, eTextureType, pTexture, 5); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_ClearOverlayTexture, 12) @@ -11670,7 +11670,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayTexture, 20) VROverlayError __thiscall winIVROverlay_IVROverlay_004_SetOverlayTexture(winIVROverlay_IVROverlay_004 *_this, VROverlayHandle_t ulOverlayHandle, GraphicsAPIConvention eTextureType, void * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_004_SetOverlayTexture(_this->linux_side, ulOverlayHandle, eTextureType, pTexture); + return ivroverlay_005_set_overlay_texture(cppIVROverlay_IVROverlay_004_SetOverlayTexture, _this->linux_side, ulOverlayHandle, eTextureType, pTexture, 4); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_ClearOverlayTexture, 12) @@ -12147,7 +12147,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayTexture, 20) VROverlayError __thiscall winIVROverlay_IVROverlay_003_SetOverlayTexture(winIVROverlay_IVROverlay_003 *_this, VROverlayHandle_t ulOverlayHandle, GraphicsAPIConvention eTextureType, void * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_003_SetOverlayTexture(_this->linux_side, ulOverlayHandle, eTextureType, pTexture); + return ivroverlay_005_set_overlay_texture(cppIVROverlay_IVROverlay_003_SetOverlayTexture, _this->linux_side, ulOverlayHandle, eTextureType, pTexture, 3); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_ClearOverlayTexture, 12) @@ -12599,7 +12599,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayTexture, 20) VROverlayError __thiscall winIVROverlay_IVROverlay_002_SetOverlayTexture(winIVROverlay_IVROverlay_002 *_this, VROverlayHandle_t ulOverlayHandle, GraphicsAPIConvention eTextureType, void * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_002_SetOverlayTexture(_this->linux_side, ulOverlayHandle, eTextureType, pTexture); + return ivroverlay_005_set_overlay_texture(cppIVROverlay_IVROverlay_002_SetOverlayTexture, _this->linux_side, ulOverlayHandle, eTextureType, pTexture, 2); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_ClearOverlayTexture, 12) @@ -13036,7 +13036,7 @@ DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayTexture, 16) VROverlayError __thiscall winIVROverlay_IVROverlay_001_SetOverlayTexture(winIVROverlay_IVROverlay_001 *_this, VROverlayHandle_t ulOverlayHandle, void * pTexture) { TRACE("%p\n", _this); - return cppIVROverlay_IVROverlay_001_SetOverlayTexture(_this->linux_side, ulOverlayHandle, pTexture); + return ivroverlay_001_set_overlay_texture(cppIVROverlay_IVROverlay_001_SetOverlayTexture, _this->linux_side, ulOverlayHandle, pTexture, 1); } DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayRaw, 28)