From 003f476024e3dc8bdd0d3ca2c9a07378b3b91057 Mon Sep 17 00:00:00 2001 From: Brian Sumner Date: Mon, 22 May 2017 11:00:28 -0700 Subject: [PATCH] Proposed fix for bug 11537 --- .../images/clFillImage/test_fill_2D_array.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test_conformance/images/clFillImage/test_fill_2D_array.cpp b/test_conformance/images/clFillImage/test_fill_2D_array.cpp index b952bdcb..26b27e1b 100644 --- a/test_conformance/images/clFillImage/test_fill_2D_array.cpp +++ b/test_conformance/images/clFillImage/test_fill_2D_array.cpp @@ -149,7 +149,26 @@ int test_fill_image_set_2D_array( cl_device_id device, cl_context context, cl_co } imageInfo.slicePitch = imageInfo.rowPitch * (imageInfo.height + slicePadding); + cl_ulong size = (cl_ulong)imageInfo.slicePitch * (cl_ulong)imageInfo.arraySize * 4 * 4; + // Loop until we get a size that a) will fit in the max alloc size and b) that an allocation of that + // image, the result array, plus offset arrays, will fit in the global ram space + while( size > maxAllocSize || ( size * 3 ) > memSize ) + { + if(imageInfo.arraySize == 1) + { + // ArraySize cannot be 0. + break; + } + imageInfo.arraySize--; + size = (cl_ulong)imageInfo.slicePitch * (cl_ulong)imageInfo.arraySize * 4 * 4; + } + while( size > maxAllocSize || ( size * 3 ) > memSize ) + { + imageInfo.height--; + imageInfo.slicePitch = imageInfo.height * imageInfo.rowPitch; + size = (cl_ulong)imageInfo.slicePitch * (cl_ulong)imageInfo.arraySize * 4 * 4; + } log_info( "Testing %d x %d x %d\n", (int)sizes[ idx ][ 0 ], (int)sizes[ idx ][ 1 ], (int)sizes[ idx ][ 2 ] ); if ( gDebugTrace ) log_info( " at max size %d,%d,%d\n", (int)sizes[ idx ][ 0 ], (int)sizes[ idx ][ 1 ], (int)sizes[ idx ][ 2 ] );