diff --git a/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp b/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp index 1bc5240156..535880ef5f 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp @@ -177,8 +177,8 @@ bool Memory::createInteropBuffer(GLenum targetType, int miplevel) { #else assert(owner()->isInterop() && "Object is not an interop object."); - mesa_glinterop_export_in in; - mesa_glinterop_export_out out; + mesa_glinterop_export_in in = {0}; + mesa_glinterop_export_out out = {0}; in.size = sizeof(mesa_glinterop_export_in); out.size = sizeof(mesa_glinterop_export_out); @@ -218,6 +218,8 @@ bool Memory::createInteropBuffer(GLenum targetType, int miplevel) { 1, &agent, out.dmabuf_fd, 0, &size, &deviceMemory_, &metadata_size, (const void**)&metadata); close(out.dmabuf_fd); + deviceMemory_ = static_cast(deviceMemory_) + out.buf_offset; + if (status != HSA_STATUS_SUCCESS) return false; // if map_buffer wrote anything in metadata, copy it to amdImageDesc_