7#define WIN32_LEAN_AND_MEAN
56 CUresult (*
cuInit)(
unsigned int Flags) =
nullptr;
59 CUresult (*
cuDeviceGet)(CUdevice *device,
int ordinal) =
nullptr;
64 CUresult (*
cuCtxCreate)(CUcontext *pctx,
unsigned int flags, CUdevice dev) =
nullptr;
73 CUresult (*
cuMemAlloc)(CUdeviceptr *dptr,
size_t bytesize) =
nullptr;
74 CUresult (*
cuMemAllocPitch)(CUdeviceptr *dptr,
size_t *pPitch,
size_t WidthInBytes,
size_t Height,
unsigned int ElementSizeBytes) =
nullptr;
76 CUresult (*
cuMemcpy2D)(
const CUDA_MEMCPY2D *pCopy) =
nullptr;
77 CUresult (*
cuMemcpy2DAsync)(
const CUDA_MEMCPY2D *pCopy, CUstream hStream) =
nullptr;
80 CUresult (*
cuStreamCreate)(CUstream *phStream,
unsigned int Flags) =
nullptr;
106 template<
typename FuncPtr>
109 funcPtr =
reinterpret_cast<FuncPtr
>(GetProcAddress(
libHandle, symbolName));
111 funcPtr =
reinterpret_cast<FuncPtr
>(dlsym(
libHandle, symbolName));
Singleton class that dynamically loads libcuda.so (Linux) or nvcuda.dll (Windows) at runtime.
Definition CudaDriverLoader.h:39
CUresult(* cuMemcpy2D)(const CUDA_MEMCPY2D *pCopy)
Definition CudaDriverLoader.h:76
CUresult(* cuCtxSynchronize)(void)
Definition CudaDriverLoader.h:68
CUresult(* cuGraphicsEGLRegisterImage)(CUgraphicsResource *pCudaResource, EGLImageKHR image, unsigned int flags)
Definition CudaDriverLoader.h:86
const std::string & getErrorMessage() const
Definition CudaDriverLoader.h:52
~CudaDriverLoader()
Definition CudaDriverLoader.cpp:114
CUresult(* cuGraphicsUnregisterResource)(CUgraphicsResource resource)
Definition CudaDriverLoader.h:88
CUresult(* cuStreamDestroy)(CUstream hStream)
Definition CudaDriverLoader.h:81
CUresult(* cuGetErrorName)(CUresult error, const char **pStr)
Definition CudaDriverLoader.h:92
CUresult(* cuCtxDestroy)(CUcontext ctx)
Definition CudaDriverLoader.h:65
CudaDriverLoader()
Definition CudaDriverLoader.cpp:27
void * libHandle
Definition CudaDriverLoader.h:102
std::string errorMessage
Definition CudaDriverLoader.h:104
CUresult(* cuCtxPushCurrent)(CUcontext ctx)
Definition CudaDriverLoader.h:66
CUresult(* cuMemFree)(CUdeviceptr dptr)
Definition CudaDriverLoader.h:75
CUresult(* cuGetErrorString)(CUresult error, const char **pStr)
Definition CudaDriverLoader.h:93
void loadSymbol(FuncPtr &funcPtr, const char *symbolName)
Definition CudaDriverLoader.h:107
CUresult(* cuMemcpy2DAsync)(const CUDA_MEMCPY2D *pCopy, CUstream hStream)
Definition CudaDriverLoader.h:77
CUresult(* cuStreamCreate)(CUstream *phStream, unsigned int Flags)
Definition CudaDriverLoader.h:80
CUresult(* cuCtxPopCurrent)(CUcontext *pctx)
Definition CudaDriverLoader.h:67
CUresult(* cuGraphicsResourceGetMappedEglFrame)(CUeglFrame *eglFrame, CUgraphicsResource resource, unsigned int index, unsigned int mipLevel)
Definition CudaDriverLoader.h:87
CUresult(* cuInit)(unsigned int Flags)
Definition CudaDriverLoader.h:56
CUresult(* cuStreamSynchronize)(CUstream hStream)
Definition CudaDriverLoader.h:82
CudaDriverLoader & operator=(const CudaDriverLoader &)=delete
bool isAvailable() const
Definition CudaDriverLoader.h:50
CUresult(* cuMemAlloc)(CUdeviceptr *dptr, size_t bytesize)
Definition CudaDriverLoader.h:73
static CudaDriverLoader & getInstance()
Definition CudaDriverLoader.h:41
CudaDriverLoader(const CudaDriverLoader &)=delete
CUresult(* cuDeviceGet)(CUdevice *device, int ordinal)
Definition CudaDriverLoader.h:59
CUresult(* cuCtxCreate)(CUcontext *pctx, unsigned int flags, CUdevice dev)
Definition CudaDriverLoader.h:64
CUresult(* cuDevicePrimaryCtxRelease)(CUdevice dev)
Definition CudaDriverLoader.h:70
CUresult(* cuDeviceGetCount)(int *count)
Definition CudaDriverLoader.h:60
CUresult(* cuDevicePrimaryCtxRetain)(CUcontext *pctx, CUdevice dev)
Definition CudaDriverLoader.h:69
CUresult(* cuMemAllocPitch)(CUdeviceptr *dptr, size_t *pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes)
Definition CudaDriverLoader.h:74
CUresult(* cuDeviceGetName)(char *name, int len, CUdevice dev)
Definition CudaDriverLoader.h:61