From 8981438983b53a45a1620dea95b0b531ba304505 Mon Sep 17 00:00:00 2001 From: Rahul Garg Date: Mon, 1 Oct 2018 15:28:34 +0530 Subject: [PATCH 1/2] Fixed image width for linear resource type texture [ROCm/clr commit: 167265c2792280f550ff4005b20898a6da40adfc] --- projects/clr/hipamd/src/hip_texture.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/clr/hipamd/src/hip_texture.cpp b/projects/clr/hipamd/src/hip_texture.cpp index 82bc5b5d8a..85fb006d43 100644 --- a/projects/clr/hipamd/src/hip_texture.cpp +++ b/projects/clr/hipamd/src/hip_texture.cpp @@ -198,6 +198,7 @@ bool getHipTextureObject(hipTextureObject_t* pTexObject, hsa_ext_image_t& image, return true; } +size_t channelFormatKindSize[] = {sizeof(unsigned),sizeof(signed),sizeof(float),sizeof(unsigned)}; // Texture Object APIs hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResourceDesc* pResDesc, const hipTextureDesc* pTexDesc, @@ -263,7 +264,7 @@ hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResou break; case hipResourceTypeLinear: devPtr = pResDesc->res.linear.devPtr; - imageDescriptor.width = pResDesc->res.linear.sizeInBytes; + imageDescriptor.width = pResDesc->res.linear.sizeInBytes/channelFormatKindSize[pResDesc->res.linear.desc.f]; imageDescriptor.height = 1; imageDescriptor.depth = 0; imageDescriptor.array_size = 0; From ed5c4bca1d856853c975672d53a4244800cb44b8 Mon Sep 17 00:00:00 2001 From: Rahul Garg Date: Wed, 3 Oct 2018 12:07:38 +0530 Subject: [PATCH 2/2] Corrected the width calculation logic to accomodate multi channels [ROCm/clr commit: a78d68d63900fa38953a9cd4ab3e8cc1b4c6a358] --- projects/clr/hipamd/src/hip_texture.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/clr/hipamd/src/hip_texture.cpp b/projects/clr/hipamd/src/hip_texture.cpp index 85fb006d43..521e0e24de 100644 --- a/projects/clr/hipamd/src/hip_texture.cpp +++ b/projects/clr/hipamd/src/hip_texture.cpp @@ -198,7 +198,6 @@ bool getHipTextureObject(hipTextureObject_t* pTexObject, hsa_ext_image_t& image, return true; } -size_t channelFormatKindSize[] = {sizeof(unsigned),sizeof(signed),sizeof(float),sizeof(unsigned)}; // Texture Object APIs hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResourceDesc* pResDesc, const hipTextureDesc* pTexDesc, @@ -264,7 +263,7 @@ hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResou break; case hipResourceTypeLinear: devPtr = pResDesc->res.linear.devPtr; - imageDescriptor.width = pResDesc->res.linear.sizeInBytes/channelFormatKindSize[pResDesc->res.linear.desc.f]; + imageDescriptor.width = pResDesc->res.linear.sizeInBytes/((pResDesc->res.linear.desc.x + pResDesc->res.linear.desc.y + pResDesc->res.linear.desc.z + pResDesc->res.linear.desc.w)/8); imageDescriptor.height = 1; imageDescriptor.depth = 0; imageDescriptor.array_size = 0;