P4 to Git Change 1319465 by lmoriche@lmoriche_opencl_dev on 2016/09/27 14:56:10
SWDEV-103418 - [ROCm CQE][OCLonLC][Fiji] OCLCreateBuffer results in Segmentation fault Fix KernelBlitManager::createProgram to report an error if one or more blit kernel could not be created. Re-enable the image blit kernels in the blit program. Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/blitcl.cpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.cpp#4 edit
This commit is contained in:
@@ -80,9 +80,6 @@ __kernel void fillBuffer(
|
|||||||
{
|
{
|
||||||
__amd_fillBuffer(bufUChar, bufUInt, pattern, patternSize, offset, size);
|
__amd_fillBuffer(bufUChar, bufUInt, pattern, patternSize, offset, size);
|
||||||
}
|
}
|
||||||
)
|
|
||||||
#if !defined(WITH_LIGHTNING_COMPILER)
|
|
||||||
BLIT_KERNELS(
|
|
||||||
extern void __amd_copyBufferToImage(
|
extern void __amd_copyBufferToImage(
|
||||||
__global uint*, __write_only image2d_array_t, ulong4,
|
__global uint*, __write_only image2d_array_t, ulong4,
|
||||||
int4, int4, uint4, ulong4);
|
int4, int4, uint4, ulong4);
|
||||||
@@ -164,7 +161,6 @@ __kernel void fillImage(
|
|||||||
origin, size, type);
|
origin, size, type);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#endif // !defined(WITH_LIGHTNING_COMPILER)
|
|
||||||
;
|
;
|
||||||
|
|
||||||
} // namespace device
|
} // namespace device
|
||||||
|
|||||||
@@ -1509,22 +1509,21 @@ KernelBlitManager::createProgram(Device& device)
|
|||||||
program_ = device.blitProgram()->program_;
|
program_ = device.blitProgram()->program_;
|
||||||
program_->retain();
|
program_->retain();
|
||||||
|
|
||||||
bool result = false;
|
bool result = true;
|
||||||
do {
|
|
||||||
// Create kernel objects for all blits
|
|
||||||
for (uint i = 0; i < BlitTotal; ++i) {
|
|
||||||
const amd::Symbol* symbol = program_->findSymbol(BlitName[i]);
|
|
||||||
if (symbol == NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
kernels_[i] = new amd::Kernel(*program_, *symbol, BlitName[i]);
|
|
||||||
if (kernels_[i] == NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result = true;
|
// Create kernel objects for all blits
|
||||||
} while(!result);
|
for (uint i = 0; i < BlitTotal; ++i) {
|
||||||
|
const amd::Symbol* symbol = program_->findSymbol(BlitName[i]);
|
||||||
|
if (symbol == NULL) {
|
||||||
|
result = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
kernels_[i] = new amd::Kernel(*program_, *symbol, BlitName[i]);
|
||||||
|
if (kernels_[i] == NULL) {
|
||||||
|
result = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user