From 08a43a240bccca81d7f2076d52245fa46d2e777a Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 6 Feb 2017 18:22:59 -0500
Subject: [PATCH] P4 to Git Change 1369850 by gandryey@gera-w8 on 2017/02/06
18:15:17
SWDEV-112661 - [ROCm CQE][OCLonLC][QR][G] 80 failures observed with Images(Samplerless and Samplerless pitch) tests
- Make sure the pitch for image buffer is properly aligned to the reported device info
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.cpp#10 edit
[ROCm/clr commit: c9cbcbf0f5d6ac324cbaa3b52fc5c6eefc60b7e8]
---
.../rocclr/runtime/device/rocm/rocmemory.cpp | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp b/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp
index 8d350cd8e4..8964e21d0c 100644
--- a/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp
+++ b/projects/clr/rocclr/runtime/device/rocm/rocmemory.cpp
@@ -731,9 +731,24 @@ Image::createView(const Memory &parent)
amdImageDesc_, deviceMemory_, permission_, &hsaImageObject_);
}
else if (oldestParent->asBuffer()) {
+ size_t rowPitch;
+ amd::Image& ownerImage = *owner()->asImage();
+ size_t elementSize = ownerImage.getImageFormat().getElementSize();
+ // First get the row pitch in pixels
+ if (ownerImage.getRowPitch() != 0) {
+ rowPitch = ownerImage.getRowPitch() / elementSize;
+ }
+ else {
+ rowPitch = ownerImage.getWidth();
+ }
+
+ // Make sure the row pitch is aligned to pixels
+ rowPitch = elementSize *
+ amd::alignUp(rowPitch, dev_.info().imagePitchAlignment_);
+
status = hsa_ext_image_create_with_layout(dev_.getBackendDevice(),
&imageDescriptor_, deviceMemory_, permission_,
- HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, owner()->asImage()->getRowPitch(), 0,
+ HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, rowPitch, 0,
&hsaImageObject_);
}
else {