vrclient: Add support for Vulkan in IVROverlay::SetOverlayTexture
This commit is contained in:
parent
74b7f33e98
commit
1625ed00c7
1 changed files with 27 additions and 0 deletions
|
@ -866,6 +866,30 @@ static EVRCompositorError ivrcompositor_submit_dxvk(
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static EVROverlayError ivroverlay_set_overlay_texture_vulkan(
|
||||||
|
EVROverlayError (*cpp_func)(void *, VROverlayHandle_t, Texture_t *),
|
||||||
|
void *linux_side, VROverlayHandle_t overlay_handle, Texture_t *texture,
|
||||||
|
unsigned int version)
|
||||||
|
{
|
||||||
|
struct VRVulkanTextureData_t our_vkdata, *their_vkdata;
|
||||||
|
Texture_t our_texture;
|
||||||
|
|
||||||
|
load_vk_unwrappers();
|
||||||
|
|
||||||
|
their_vkdata = texture->handle;
|
||||||
|
|
||||||
|
our_vkdata = *their_vkdata;
|
||||||
|
our_vkdata.m_pDevice = get_native_VkDevice(our_vkdata.m_pDevice);
|
||||||
|
our_vkdata.m_pPhysicalDevice = get_native_VkPhysicalDevice(our_vkdata.m_pPhysicalDevice);
|
||||||
|
our_vkdata.m_pInstance = get_native_VkInstance(our_vkdata.m_pInstance);
|
||||||
|
our_vkdata.m_pQueue = get_native_VkQueue(our_vkdata.m_pQueue);
|
||||||
|
|
||||||
|
our_texture = *texture;
|
||||||
|
our_texture.handle = &our_vkdata;
|
||||||
|
|
||||||
|
return cpp_func(linux_side, overlay_handle, &our_texture);
|
||||||
|
}
|
||||||
|
|
||||||
static EVRCompositorError ivrcompositor_submit_vulkan(
|
static EVRCompositorError ivrcompositor_submit_vulkan(
|
||||||
EVRCompositorError (*cpp_func)(void *, EVREye, Texture_t *, VRTextureBounds_t *, EVRSubmitFlags),
|
EVRCompositorError (*cpp_func)(void *, EVREye, Texture_t *, VRTextureBounds_t *, EVRSubmitFlags),
|
||||||
void *linux_side, EVREye eye, Texture_t *texture, VRTextureBounds_t *bounds, EVRSubmitFlags flags,
|
void *linux_side, EVREye eye, Texture_t *texture, VRTextureBounds_t *bounds, EVRSubmitFlags flags,
|
||||||
|
@ -973,6 +997,9 @@ EVROverlayError ivroverlay_set_overlay_texture(
|
||||||
|
|
||||||
WARN("Invalid D3D11 texture %p.\n", texture);
|
WARN("Invalid D3D11 texture %p.\n", texture);
|
||||||
return cpp_func(linux_side, overlayHandle, texture);
|
return cpp_func(linux_side, overlayHandle, texture);
|
||||||
|
case TextureType_Vulkan:
|
||||||
|
TRACE("Vulkan\n");
|
||||||
|
return ivroverlay_set_overlay_texture_vulkan(cpp_func, linux_side, overlayHandle, texture, version);
|
||||||
default:
|
default:
|
||||||
return cpp_func(linux_side, overlayHandle, texture);
|
return cpp_func(linux_side, overlayHandle, texture);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue