diff options
Diffstat (limited to 'tools/gfx/cuda/cuda-texture.cpp')
| -rw-r--r-- | tools/gfx/cuda/cuda-texture.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/gfx/cuda/cuda-texture.cpp b/tools/gfx/cuda/cuda-texture.cpp new file mode 100644 index 000000000..6e6e42db5 --- /dev/null +++ b/tools/gfx/cuda/cuda-texture.cpp @@ -0,0 +1,48 @@ +// cuda-texture.cpp +#include "cuda-texture.h" + +#include "cuda-helper-functions.h" + +namespace gfx +{ +#ifdef GFX_ENABLE_CUDA +using namespace Slang; + +namespace cuda +{ + +TextureResourceImpl::~TextureResourceImpl() +{ + if (m_cudaSurfObj) + { + SLANG_CUDA_ASSERT_ON_FAIL(cuSurfObjectDestroy(m_cudaSurfObj)); + } + if (m_cudaTexObj) + { + SLANG_CUDA_ASSERT_ON_FAIL(cuTexObjectDestroy(m_cudaTexObj)); + } + if (m_cudaArray) + { + SLANG_CUDA_ASSERT_ON_FAIL(cuArrayDestroy(m_cudaArray)); + } + if (m_cudaMipMappedArray) + { + SLANG_CUDA_ASSERT_ON_FAIL(cuMipmappedArrayDestroy(m_cudaMipMappedArray)); + } +} + +uint64_t TextureResourceImpl::getBindlessHandle() +{ + return (uint64_t)m_cudaTexObj; +} + +Result TextureResourceImpl::getNativeResourceHandle(InteropHandle* outHandle) +{ + outHandle->handleValue = getBindlessHandle(); + outHandle->api = InteropHandleAPI::CUDA; + return SLANG_OK; +} + +} // namespace cuda +#endif +} // namespace gfx |
