From 3964e773c8feba01e802c0043a3ee6090d8beb4b Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 22 Jun 2015 18:35:54 -0400
Subject: [PATCH] P4 to Git Change 1163938 by gandryey@gera-w8 on 2015/06/22
18:23:52
ECR #304775 - Mipmaps support. Fix falures after CL#1163104
- don't allocate extra view if level/layer was created already
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#124 edit
[ROCm/clr commit: 6f88046a9affc84b9e564adac2cf4c969c5c32ec]
---
.../runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp
index 581b0cb3e8..463fa3a10e 100644
--- a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp
+++ b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp
@@ -926,15 +926,14 @@ CALGSLDevice::resAllocView(gslMemObject res, gslResource3D size, CALdomain offse
gslMemObject mo = NULL, levelobject = res;
+ bool levelLayer = false;
if (flags & CAL_RESALLOCSLICEVIEW_LEVEL)
{
const gsSubImageParam levelParam(level);
levelobject = m_cs->createSubMemObject(res, GSL_LEVEL, levelParam);
attribs.bytePitch = static_cast(levelobject->getPitch()) *
(levelobject->getBitsPerElement() / 8);
- // GSL doesn't detect that the base surface is mipmaped
- // and doesn't apply the height alignment
- size.height = levelobject->getHeight();
+ levelLayer = true;
}
if (flags & CAL_RESALLOCSLICEVIEW_LAYER)
{
@@ -945,6 +944,12 @@ CALGSLDevice::resAllocView(gslMemObject res, gslResource3D size, CALdomain offse
m_cs->destroyMemObject(levelobject);
}
levelobject = mo;
+ levelLayer = true;
+ }
+
+ if (levelLayer) {
+ // If level/layer object was created, then don't need an extra view
+ return levelobject;
}
attribs.type = resType;