From 3e667fc98fc8674113fdfe911b4395ec803a8218 Mon Sep 17 00:00:00 2001 From: sdashmiz Date: Mon, 25 Apr 2022 12:52:35 -0400 Subject: [PATCH] 200~SWDEV-333583 : hipMallocArray bad channel format - channel format should be consistent accross parameters Signed-off-by: sdashmiz Change-Id: I1e7680ab9262a66e7bea4aaa21f061044b0f7956 [ROCm/clr commit: 8ed471f2100888f6c907e710b3bcfbf436836c3e] --- projects/clr/hipamd/src/hip_conversions.hpp | 18 ++++++++++++++++++ projects/clr/hipamd/src/hip_memory.cpp | 4 +++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/projects/clr/hipamd/src/hip_conversions.hpp b/projects/clr/hipamd/src/hip_conversions.hpp index ffe2511e40..528443222f 100644 --- a/projects/clr/hipamd/src/hip_conversions.hpp +++ b/projects/clr/hipamd/src/hip_conversions.hpp @@ -300,6 +300,24 @@ unsigned int getNumChannels(const hipChannelFormatDesc& desc) { return ((desc.x != 0) + (desc.y != 0) + (desc.z != 0) + (desc.w != 0)); } +inline +bool CheckArrayFormat(const hipChannelFormatDesc& desc) { + if(desc.x == 0) { + return false; + } else { + if(desc.y != 0 && desc.y != desc.x) { + return false; + } + if(desc.z !=0 && desc.z != desc.x) { + return false; + } + if(desc.w !=0 && desc.w != desc.x) { + return false; + } + } + return true; +} + inline hipArray_Format getArrayFormat(const hipChannelFormatDesc& desc) { switch (desc.f) { diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index f63938ab6f..68cb8a625b 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -954,7 +954,9 @@ hipError_t hipMallocArray(hipArray** array, hip::getArrayFormat(*desc), hip::getNumChannels(*desc), flags}; - + if(!hip::CheckArrayFormat(*desc)) { + return hipErrorInvalidValue; + } HIP_RETURN(ihipArrayCreate(array, &allocateArray, 0 /* numMipLevels */)); }