13 CUDADeviceGraphicsInterop::CUDADeviceGraphicsInterop(CUDADeviceQueue *
queue)
14 : queue_(
queue), device_(static_cast<CUDADevice *>(
queue->device))
18 CUDADeviceGraphicsInterop::~CUDADeviceGraphicsInterop()
20 CUDAContextScope scope(device_);
22 if (cu_graphics_resource_) {
23 cuda_device_assert(device_, cuGraphicsUnregisterResource(cu_graphics_resource_));
27 void CUDADeviceGraphicsInterop::set_display_interop(
36 if (opengl_pbo_id_ == display_interop.
opengl_pbo_id && buffer_area_ == new_buffer_area) {
41 CUDAContextScope scope(device_);
43 if (cu_graphics_resource_) {
44 cuda_device_assert(device_, cuGraphicsUnregisterResource(cu_graphics_resource_));
47 const CUresult
result = cuGraphicsGLRegisterBuffer(
48 &cu_graphics_resource_, display_interop.
opengl_pbo_id, CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE);
49 if (
result != CUDA_SUCCESS) {
50 LOG(ERROR) <<
"Error registering OpenGL buffer: " << cuewErrorString(
result);
54 buffer_area_ = new_buffer_area;
59 if (!cu_graphics_resource_) {
63 CUDAContextScope scope(device_);
65 CUdeviceptr cu_buffer;
68 cuda_device_assert(device_, cuGraphicsMapResources(1, &cu_graphics_resource_, queue_->stream()));
70 device_, cuGraphicsResourceGetMappedPointer(&cu_buffer, &bytes, cu_graphics_resource_));
74 device_, cuMemsetD8Async(
static_cast<CUdeviceptr
>(cu_buffer), 0, bytes, queue_->stream()));
82 void CUDADeviceGraphicsInterop::unmap()
84 CUDAContextScope scope(device_);
86 cuda_device_assert(device_,
87 cuGraphicsUnmapResources(1, &cu_graphics_resource_, queue_->stream()));
#define CCL_NAMESPACE_END
SocketIndexByIdentifierMap * map