summaryrefslogtreecommitdiffstats
path: root/tools/gfx/cuda/render-cuda.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gfx/cuda/render-cuda.cpp')
-rw-r--r--tools/gfx/cuda/render-cuda.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/tools/gfx/cuda/render-cuda.cpp b/tools/gfx/cuda/render-cuda.cpp
index 2dc1bc1e1..9f52c4c62 100644
--- a/tools/gfx/cuda/render-cuda.cpp
+++ b/tools/gfx/cuda/render-cuda.cpp
@@ -1842,8 +1842,17 @@ public:
// memory association, we first need to fill in a descriptor struct.
cudaExternalMemoryHandleDesc externalMemoryHandleDesc;
memset(&externalMemoryHandleDesc, 0, sizeof(externalMemoryHandleDesc));
- // TODO: Change according to the type of handle being passed in
- externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeD3D12Resource;
+ switch (handle.api)
+ {
+ case InteropHandleAPI::D3D12:
+ externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeD3D12Resource;
+ break;
+ case InteropHandleAPI::Vulkan:
+ externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeOpaqueWin32;
+ break;
+ default:
+ return SLANG_FAIL;
+ }
externalMemoryHandleDesc.handle.win32.handle = (void*)handle.handleValue;
externalMemoryHandleDesc.size = desc.sizeInBytes;
externalMemoryHandleDesc.flags = cudaExternalMemoryDedicated;