14HIPDeviceGraphicsInterop::HIPDeviceGraphicsInterop(HIPDeviceQueue *queue)
15 : queue_(queue), device_(static_cast<HIPDevice *>(queue->device))
19HIPDeviceGraphicsInterop::~HIPDeviceGraphicsInterop()
21 HIPContextScope scope(device_);
27 HIPContextScope scope(device_);
44 const hipError_t
result = hipGraphicsGLRegisterBuffer(
45 &hip_graphics_resource_, interop_buffer.
take_handle(), hipGraphicsRegisterFlagsNone);
47 if (
result != hipSuccess) {
48 LOG_ERROR <<
"Error registering OpenGL buffer: " << hipewErrorString(
result);
52 buffer_size_ = interop_buffer.
get_size();
66 hipDeviceptr_t hip_buffer = 0;
68 if (hip_graphics_resource_) {
69 HIPContextScope scope(device_);
72 hip_device_assert(device_,
73 hipGraphicsMapResources(1, &hip_graphics_resource_, queue_->stream()));
75 device_, hipGraphicsResourceGetMappedPointer(&hip_buffer, &bytes, hip_graphics_resource_));
79 hip_buffer = hip_external_memory_ptr_;
82 if (hip_buffer && need_zero_) {
83 hip_device_assert(device_, hipMemsetD8Async(hip_buffer, 0, buffer_size_, queue_->stream()));
91void HIPDeviceGraphicsInterop::unmap()
93 if (hip_graphics_resource_) {
94 HIPContextScope scope(device_);
96 hip_device_assert(device_,
97 hipGraphicsUnmapResources(1, &hip_graphics_resource_, queue_->stream()));
101void HIPDeviceGraphicsInterop::free()
103 if (hip_graphics_resource_) {
104 hip_device_assert(device_, hipGraphicsUnregisterResource(hip_graphics_resource_));
105 hip_graphics_resource_ =
nullptr;
108 if (hip_external_memory_ptr_) {
109 hip_device_assert(device_, hipFree(hip_external_memory_ptr_));
110 hip_external_memory_ptr_ = 0;
void BLI_kdtree_nd_ free(KDTree *tree)
bool has_new_handle() const
GraphicsInteropDevice::Type get_type() const
#define CCL_NAMESPACE_END