From 73ec7bada69373d238e963a9b28c6b5bd68023a0 Mon Sep 17 00:00:00 2001 From: German Andryeyev Date: Tue, 14 Jun 2022 20:27:03 -0400 Subject: [PATCH] SWDEV-341316 - Copy image SRD only if it's valid Change-Id: I971a21fe99fd07b21cfd3dbe4e7ed33c0ea322f4 --- rocclr/device/rocm/rocmemory.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rocclr/device/rocm/rocmemory.cpp b/rocclr/device/rocm/rocmemory.cpp index e978e835d3..04f449c93a 100644 --- a/rocclr/device/rocm/rocmemory.cpp +++ b/rocclr/device/rocm/rocmemory.cpp @@ -206,6 +206,7 @@ void Memory::cpuUnmap(device::VirtualDevice& vDev) { decIndMapCount(); } +// ================================================================================================ hsa_status_t Memory::interopMapBuffer(int fd) { hsa_agent_t agent = dev().getBackendDevice(); size_t size; @@ -219,7 +220,9 @@ hsa_status_t Memory::interopMapBuffer(int fd) { deviceMemory_ = static_cast(interop_deviceMemory_);// + out.buf_offset; if (status != HSA_STATUS_SUCCESS) return status; // if map_buffer wrote a legitimate SRD, copy it to amdImageDesc_ - if ((metadata_size != 0) && + // Note: Check if amdImageDesc_ is valid, because VA library maps linear planes of YUV image + // as buffers for processing in HIP later + if ((amdImageDesc_ != nullptr) && (metadata_size != 0) && (reinterpret_cast(metadata)->deviceID == amdImageDesc_->deviceID)) { memcpy(amdImageDesc_, metadata, metadata_size); @@ -230,6 +233,7 @@ hsa_status_t Memory::interopMapBuffer(int fd) { } // Setup an interop buffer (dmabuf handle) as an OpenCL buffer +// ================================================================================================ bool Memory::createInteropBuffer(GLenum targetType, int miplevel) { #if defined(_WIN32) return false;