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");