From 80ab916a5b79acfdabca97a218c2c858629391e4 Mon Sep 17 00:00:00 2001 From: foreman Date: Wed, 27 Jan 2016 11:36:07 -0500 Subject: [PATCH] P4 to Git Change 1231549 by wchau@wchau_WIN_OCL_HSA on 2016/01/27 11:23:48 SWDEV-79308 - Use 64-bit to calculate the scratch buffer size for OCL. We observed that the computed scratch buffer size could be > 4G when compilier optimization option is not used. Cross branch change - requires CL1231547. Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#157 edit --- rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp index 5edfdea48c..026be11da7 100644 --- a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp +++ b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp @@ -1220,7 +1220,7 @@ CALGSLDevice::calcScratchBufferSize(uint32 regNum) const // Determine the scratch size we need to allocate cmScratchSpaceNeededPerShaderStage scratchSpacePerShaderStage; memset(&scratchSpacePerShaderStage, 0, sizeof(scratchSpacePerShaderStage)); - uint32 scratchBufferSizes[gslProgramTarget_COUNT]; + uint64 scratchBufferSizes[gslProgramTarget_COUNT]; memset(scratchBufferSizes, 0, sizeof(scratchBufferSizes)); uint32 enabledShadersFlag = 0; @@ -1244,6 +1244,8 @@ CALGSLDevice::calcScratchBufferSize(uint32 regNum) const if (scratchBufferSizes[target] == 0) { // assign minimum scratch buffer size of 64K scratchBufferSizes[target] = 0x10000; } + + assert(scratchBufferSizes[target] <= 0xFFFFFFFF); // scratch buffer size < 4GB } return scratchBufferSizes[target];