P4 to Git Change 2031605 by gandryey@gera-win10 on 2019/11/15 16:34:08
SWDEV-79445 - OCL generic changes and code clean-up - Make sure transfer doesn't exceed CP dma limit Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#81 edit
Этот коммит содержится в:
@@ -1471,7 +1471,22 @@ bool Resource::partialMemCopyTo(VirtualGPU& gpu, const amd::Coord3D& srcOrigin,
|
||||
copyRegion.srcOffset = srcOrigin[0] + offset();
|
||||
copyRegion.dstOffset = dstOrigin[0] + dstResource.offset();
|
||||
copyRegion.copySize = size[0];
|
||||
gpu.iCmd()->CmdCopyMemory(*iMem(), *dstResource.iMem(), 1, ©Region);
|
||||
constexpr size_t CpCopySizeLimit = (1 << 26) - sizeof(uint64_t);
|
||||
if (dev().settings().disableSdma_ && (size[0] > CpCopySizeLimit)) {
|
||||
size_t orgSize = size[0];
|
||||
copyRegion.copySize = CpCopySizeLimit;
|
||||
do {
|
||||
gpu.iCmd()->CmdCopyMemory(*iMem(), *dstResource.iMem(), 1, ©Region);
|
||||
copyRegion.srcOffset += CpCopySizeLimit;
|
||||
copyRegion.dstOffset += CpCopySizeLimit;
|
||||
orgSize -= (orgSize > CpCopySizeLimit) ? CpCopySizeLimit : orgSize;
|
||||
if (orgSize < CpCopySizeLimit) {
|
||||
copyRegion.copySize = orgSize;
|
||||
}
|
||||
} while (orgSize > 0);
|
||||
} else {
|
||||
gpu.iCmd()->CmdCopyMemory(*iMem(), *dstResource.iMem(), 1, ©Region);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user