From 5d092074551b543e6dfdcc295ec702b2fe8ed546 Mon Sep 17 00:00:00 2001 From: foreman Date: Mon, 30 Jan 2017 13:13:28 -0500 Subject: [PATCH] P4 to Git Change 1367147 by cpaquot@hog-ocl on 2017/01/30 13:05:47 SWDEV-106178 - Implemented image from buffer ReviewBoardURL = http://ocltc.amd.com/reviews/r/12236/diff/ Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.cpp#8 edit --- rocclr/runtime/device/rocm/rocmemory.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/rocclr/runtime/device/rocm/rocmemory.cpp b/rocclr/runtime/device/rocm/rocmemory.cpp index 4913a8c768..b86f292f18 100644 --- a/rocclr/runtime/device/rocm/rocmemory.cpp +++ b/rocclr/runtime/device/rocm/rocmemory.cpp @@ -714,13 +714,23 @@ Image::createView(const Memory &parent) ? deviceMemory_ : static_cast(parent).originalDeviceMemory_; + amd::Memory* oldestParent = parent.owner(); + while (oldestParent->parent() != nullptr) { + oldestParent = oldestParent->parent(); + } + kind_=parent.getKind(); hsa_status_t status; if(kind_==MEMORY_KIND_INTEROP) status = hsa_amd_image_create(dev_.getBackendDevice(), &imageDescriptor_, amdImageDesc_, deviceMemory_, permission_, &hsaImageObject_); - else + else if (oldestParent->asBuffer()) { + status = hsa_ext_image_create_with_layout(dev_.getBackendDevice(), &imageDescriptor_, deviceMemory_, permission_, + HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, owner()->asImage()->getRowPitch(), 0, + &hsaImageObject_); + } else { status= hsa_ext_image_create(dev_.getBackendDevice(), &imageDescriptor_, deviceMemory_, permission_, &hsaImageObject_); + } if (status != HSA_STATUS_SUCCESS) { LogError("[OCL] Fail to allocate image memory");