10 #ifndef __CUDA_DATA_COPY_H__ 11 #define __CUDA_DATA_COPY_H__ 13 #include <cuda_gl_interop.h> 18 if (err != cudaSuccess) {
19 printf(
"%s in %s at line %d\n", cudaGetErrorString(err), file, line);
24 #define CUDA_ERROR_CHECK(err) (handleCUDAError(err, __FILE__, __LINE__ )) 32 cudaGraphicsResource *cudaPBOResource;
33 CUDA_ERROR_CHECK(cudaGraphicsGLRegisterBuffer(&cudaPBOResource, out.
pbo(), cudaGraphicsMapFlagsWriteDiscard));
36 T* pboDevicePtr = NULL;
39 CUDA_ERROR_CHECK(cudaGraphicsResourceGetMappedPointer((
void **)&pboDevicePtr, &num_bytes, cudaPBOResource));
40 CUDA_ERROR_CHECK(cudaMemcpy(pboDevicePtr, devicePtr, num_bytes, cudaMemcpyDeviceToDevice));
54 template<
class Renderable,
typename T>
55 void copy(Renderable& out,
const T * devicePtr)
57 cudaGraphicsResource *cudaVBOResource;
58 CUDA_ERROR_CHECK(cudaGraphicsGLRegisterBuffer(&cudaVBOResource, out.vbo(), cudaGraphicsMapFlagsWriteDiscard));
61 T* vboDevicePtr = NULL;
64 CUDA_ERROR_CHECK(cudaGraphicsResourceGetMappedPointer((
void **)&vboDevicePtr, &num_bytes, cudaVBOResource));
65 CUDA_ERROR_CHECK(cudaMemcpy(vboDevicePtr, devicePtr, num_bytes, cudaMemcpyDeviceToDevice));
72 #endif //__CUDA_DATA_COPY_H__ Definition: CPUCopy.hpp:13
void copy(fg::Image &out, const T *dataPtr)
Definition: CPUCopy.hpp:17
static void handleCUDAError(cudaError_t err, const char *file, int line)
Definition: CUDACopy.hpp:16
FGAPI unsigned pbo() const
Get the OpenGL Pixel Buffer Object identifier.
#define CUDA_ERROR_CHECK(err)
Definition: CUDACopy.hpp:24