SWDEV-341316 - Copy image SRD only if it's valid

Change-Id: I971a21fe99fd07b21cfd3dbe4e7ed33c0ea322f4
This commit is contained in:
German Andryeyev
2022-06-14 20:27:03 -04:00
bovenliggende 3a78a1edcd
commit 73ec7bada6
+5 -1
Bestand weergeven
@@ -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<char*>(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<hsa_amd_image_descriptor_t*>(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;