From d68c4e65dbf49a9590a4c17e3bc95d0f63ef635b Mon Sep 17 00:00:00 2001
From: foreman
Date: Tue, 24 Mar 2015 11:45:49 -0400
Subject: [PATCH] P4 to Git Change 1133818 by gandryey@gera-w8 on 2015/03/24
11:30:12
ECR #304775 - Mipmaps support in OCL
- Add support for clEnqueueMapImage/Unmap functionality
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_memobj.cpp#76 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#175 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#241 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#503 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#140 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#120 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#212 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#356 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsadevice.cpp#89 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsadevice.hpp#46 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.cpp#27 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.hpp#13 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.hpp#14 edit
[ROCm/clr commit: e008fb30e0cd791b908173aab3d22c2564148f91]
---
projects/clr/opencl/api/opencl/amdocl/cl_memobj.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/projects/clr/opencl/api/opencl/amdocl/cl_memobj.cpp b/projects/clr/opencl/api/opencl/amdocl/cl_memobj.cpp
index 495277f57e..3a780da247 100644
--- a/projects/clr/opencl/api/opencl/amdocl/cl_memobj.cpp
+++ b/projects/clr/opencl/api/opencl/amdocl/cl_memobj.cpp
@@ -3570,7 +3570,7 @@ RUNTIME_ENTRY_RET(void *, clEnqueueMapImage, (
if (srcImage->getMipLevels() > 1) {
// Create a view for the specified mip level
mip = srcImage->createView(srcImage->getContext(),
- srcImage->getImageFormat(), NULL, origin[srcImage->getDims()]);
+ srcImage->getImageFormat(), hostQueue.vdev(), origin[srcImage->getDims()]);
if (mip() == NULL) {
*not_null(errcode_ret) = CL_OUT_OF_HOST_MEMORY;
return NULL;
@@ -3579,7 +3579,10 @@ RUNTIME_ENTRY_RET(void *, clEnqueueMapImage, (
if (srcImage->getDims() < 3) {
srcOrigin.c[srcImage->getDims()] = 0;
}
+ srcImage->incMapCount();
srcImage = mip();
+ // Retain this view until unmap is done
+ srcImage->retain();
}
if (!srcImage->validateRegion(srcOrigin, srcRegion)) {