From feed6a4b457fff0803d17e2f631f8b9244eb7917 Mon Sep 17 00:00:00 2001 From: German Andryeyev Date: Tue, 16 Feb 2021 16:19:28 -0500 Subject: [PATCH] SWDEV-273071 - add mipmaps detection for FillImage If mipmap was detected, then create a view with single mip level Change-Id: I4519b35bd0365c108c42fdb37bfaad729dbc684e [ROCm/clr commit: 4dc90dae109a881e95dd19945dbe6c3f1de0aa88] --- projects/clr/opencl/amdocl/cl_memobj.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/projects/clr/opencl/amdocl/cl_memobj.cpp b/projects/clr/opencl/amdocl/cl_memobj.cpp index 9a0a139fe4..e24dbc489b 100644 --- a/projects/clr/opencl/amdocl/cl_memobj.cpp +++ b/projects/clr/opencl/amdocl/cl_memobj.cpp @@ -4387,6 +4387,22 @@ RUNTIME_ENTRY(cl_int, clEnqueueFillImage, amd::Coord3D fillOrigin(origin[0], origin[1], origin[2]); amd::Coord3D fillRegion(region[0], region[1], region[2]); + + ImageViewRef mip; + if (fillImage->getMipLevels() > 1) { + // Create a view for the specified mip level + mip = fillImage->createView(fillImage->getContext(), fillImage->getImageFormat(), nullptr, + origin[fillImage->getDims()]); + if (mip() == nullptr) { + return CL_OUT_OF_HOST_MEMORY; + } + // Reset the mip level value to 0, since a view was created + if (fillImage->getDims() < 3) { + fillOrigin.c[fillImage->getDims()] = 0; + } + fillImage = mip(); + } + if (!fillImage->validateRegion(fillOrigin, fillRegion)) { return CL_INVALID_VALUE; }