14HIPDeviceGraphicsInterop::HIPDeviceGraphicsInterop(HIPDeviceQueue *queue)
15 : queue_(queue), device_(static_cast<HIPDevice *>(queue->device))
19HIPDeviceGraphicsInterop::~HIPDeviceGraphicsInterop()
21 HIPContextScope scope(device_);
23 if (hip_graphics_resource_) {
24 hip_device_assert(device_, hipGraphicsUnregisterResource(hip_graphics_resource_));
28void HIPDeviceGraphicsInterop::set_display_interop(
36 if (opengl_pbo_id_ == display_interop.
opengl_pbo_id && buffer_area_ == new_buffer_area) {
40 HIPContextScope scope(device_);
42 if (hip_graphics_resource_) {
43 hip_device_assert(device_, hipGraphicsUnregisterResource(hip_graphics_resource_));
46 const hipError_t result = hipGraphicsGLRegisterBuffer(
47 &hip_graphics_resource_, display_interop.
opengl_pbo_id, hipGraphicsRegisterFlagsNone);
48 if (result != hipSuccess) {
49 LOG(ERROR) <<
"Error registering OpenGL buffer: " << hipewErrorString(result);
53 buffer_area_ = new_buffer_area;
58 if (!hip_graphics_resource_) {
62 HIPContextScope scope(device_);
64 hipDeviceptr_t hip_buffer;
67 hip_device_assert(device_,
68 hipGraphicsMapResources(1, &hip_graphics_resource_, queue_->stream()));
70 device_, hipGraphicsResourceGetMappedPointer(&hip_buffer, &bytes, hip_graphics_resource_));
75 hipMemsetD8Async(
static_cast<hipDeviceptr_t
>(hip_buffer), 0, bytes, queue_->stream()));
83void HIPDeviceGraphicsInterop::unmap()
85 HIPContextScope scope(device_);
87 hip_device_assert(device_,
88 hipGraphicsUnmapResources(1, &hip_graphics_resource_, queue_->stream()));
#define CCL_NAMESPACE_END