vrclient: Don't build DXVK support on 32-bit Mac

MoltenVK is 64-bit only, so DXVK will not be supported on 32-bit.
This commit is contained in:
Andrew Eikum 2018-05-23 14:29:19 -05:00
parent d8225e6a80
commit 565041c0e7
2 changed files with 19 additions and 1 deletions

View File

@ -15,7 +15,12 @@
#include "vrclient_private.h" #include "vrclient_private.h"
#include "initguid.h" #include "initguid.h"
#if !defined(__APPLE__) || defined(__x86_64__)
/* 32-bit Mac doesn't support Vulkan and thus DXVK */
#include "dxvk-interop.h" #include "dxvk-interop.h"
#endif
#include "wined3d-interop.h" #include "wined3d-interop.h"
#include "cppIVRCompositor_IVRCompositor_021.h" #include "cppIVRCompositor_IVRCompositor_021.h"
@ -478,9 +483,10 @@ EVRCompositorError ivrcompositor_submit(
IUnknown *texture_iface, *depth_texture = NULL; IUnknown *texture_iface, *depth_texture = NULL;
ID3D11Device *device; ID3D11Device *device;
HRESULT hr; HRESULT hr;
#if !defined(__APPLE__) || defined(__x86_64__)
IDXGIVkInteropSurface *dxvk_surface; IDXGIVkInteropSurface *dxvk_surface;
IDXGIVkInteropDevice *dxvk_device; IDXGIVkInteropDevice *dxvk_device;
#endif
TRACE("%p, %#x, %p, %p, %#x\n", linux_side, eye, texture, bounds, flags); TRACE("%p, %#x, %p, %p, %#x\n", linux_side, eye, texture, bounds, flags);
@ -563,6 +569,7 @@ EVRCompositorError ivrcompositor_submit(
return 0; return 0;
} }
#if !defined(__APPLE__) || defined(__x86_64__)
hr = texture_iface->lpVtbl->QueryInterface(texture_iface, hr = texture_iface->lpVtbl->QueryInterface(texture_iface,
&IID_IDXGIVkInteropSurface, (void **)&dxvk_surface); &IID_IDXGIVkInteropSurface, (void **)&dxvk_surface);
@ -640,6 +647,7 @@ EVRCompositorError ivrcompositor_submit(
dxvk_surface->lpVtbl->Release(dxvk_surface); dxvk_surface->lpVtbl->Release(dxvk_surface);
return err; return err;
} }
#endif
ERR("Invalid D3D11 texture %p.\n", texture); ERR("Invalid D3D11 texture %p.\n", texture);
return cpp_func(linux_side, eye, texture, bounds, flags); return cpp_func(linux_side, eye, texture, bounds, flags);
@ -755,13 +763,17 @@ void ivrcompositor_post_present_handoff(void (*cpp_func)(void *),
return; return;
} }
#if !defined(__APPLE__) || defined(__x86_64__)
if (user_data->dxvk_device) if (user_data->dxvk_device)
user_data->dxvk_device->lpVtbl->LockSubmissionQueue(user_data->dxvk_device); user_data->dxvk_device->lpVtbl->LockSubmissionQueue(user_data->dxvk_device);
#endif
cpp_func(linux_side); cpp_func(linux_side);
#if !defined(__APPLE__) || defined(__x86_64__)
if (user_data->dxvk_device) if (user_data->dxvk_device)
user_data->dxvk_device->lpVtbl->ReleaseSubmissionQueue(user_data->dxvk_device); user_data->dxvk_device->lpVtbl->ReleaseSubmissionQueue(user_data->dxvk_device);
#endif
} }
struct explicit_timing_data struct explicit_timing_data
@ -805,13 +817,17 @@ EVRCompositorError ivrcompositor_wait_get_poses(
TRACE("%p, %p, %u, %p, %u\n", linux_side, render_poses, render_pose_count, game_poses, game_pose_count); TRACE("%p, %p, %u, %p, %u\n", linux_side, render_poses, render_pose_count, game_poses, game_pose_count);
#if !defined(__APPLE__) || defined(__x86_64__)
if (user_data->dxvk_device) if (user_data->dxvk_device)
user_data->dxvk_device->lpVtbl->LockSubmissionQueue(user_data->dxvk_device); user_data->dxvk_device->lpVtbl->LockSubmissionQueue(user_data->dxvk_device);
#endif
r = cpp_func(linux_side, render_poses, render_pose_count, game_poses, game_pose_count); r = cpp_func(linux_side, render_poses, render_pose_count, game_poses, game_pose_count);
#if !defined(__APPLE__) || defined(__x86_64__)
if (user_data->dxvk_device) if (user_data->dxvk_device)
user_data->dxvk_device->lpVtbl->ReleaseSubmissionQueue(user_data->dxvk_device); user_data->dxvk_device->lpVtbl->ReleaseSubmissionQueue(user_data->dxvk_device);
#endif
if ((wined3d_device = user_data->wined3d_device)) if ((wined3d_device = user_data->wined3d_device))
{ {

View File

@ -57,7 +57,9 @@ struct compositor_data
{ {
ID3D11Device *d3d11_device; ID3D11Device *d3d11_device;
IWineD3D11Device *wined3d_device; IWineD3D11Device *wined3d_device;
#if !defined(__APPLE__) || defined(__x86_64__)
IDXGIVkInteropDevice *dxvk_device; IDXGIVkInteropDevice *dxvk_device;
#endif
}; };
void destroy_compositor_data(struct compositor_data *data); void destroy_compositor_data(struct compositor_data *data);