P4 to Git Change 1584936 by vsytchen@vsytchen-win10 on 2018/07/24 18:57:28
SWDEV-79445 - OCL generic changes and code clean-up
1. In SvmCopyMemoryCommand handle the case when both src and dst pointer don't belong to the SVM space.
ReviewBoardURL = http://ocltc.amd.com/reviews/r/15481/diff/
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#424 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#117 edit
[ROCm/clr commit: ebe91eeace]
このコミットが含まれているのは:
@@ -964,7 +964,10 @@ void VirtualGPU::submitSvmCopyMemory(amd::SvmCopyMemoryCommand& vcmd) {
|
||||
}
|
||||
}
|
||||
|
||||
if (nullptr == srcMem && nullptr != dstMem) { // src not in svm space
|
||||
if (nullptr == srcMem && nullptr == dstMem) { // both not in svm space
|
||||
amd::Os::fastMemcpy(vcmd.dst(), vcmd.src(), vcmd.srcSize());
|
||||
result = true;
|
||||
} else if (nullptr == srcMem && nullptr != dstMem) { // src not in svm space
|
||||
Memory* memory = dev().getGpuMemory(dstMem);
|
||||
// Synchronize source and destination memory
|
||||
syncFlags.skipEntire_ = dstMem->isEntirelyCovered(dstOrigin, size);
|
||||
@@ -981,7 +984,7 @@ void VirtualGPU::submitSvmCopyMemory(amd::SvmCopyMemoryCommand& vcmd) {
|
||||
|
||||
result = blitMgr().readBuffer(*memory, vcmd.dst(), srcOrigin, size,
|
||||
srcMem->isEntirelyCovered(srcOrigin, size));
|
||||
} else if (nullptr != srcMem && nullptr != dstMem) { // both not in svm space
|
||||
} else if (nullptr != srcMem && nullptr != dstMem) { // both in svm space
|
||||
bool entire =
|
||||
srcMem->isEntirelyCovered(srcOrigin, size) && dstMem->isEntirelyCovered(dstOrigin, size);
|
||||
result =
|
||||
|
||||
@@ -1388,7 +1388,10 @@ void VirtualGPU::submitSvmCopyMemory(amd::SvmCopyMemoryCommand& vcmd) {
|
||||
}
|
||||
}
|
||||
|
||||
if (nullptr == srcMem && nullptr != dstMem) { // src not in svm space
|
||||
if (nullptr == srcMem && nullptr == dstMem) { // both not in svm space
|
||||
amd::Os::fastMemcpy(vcmd.dst(), vcmd.src(), vcmd.srcSize());
|
||||
result = true;
|
||||
} else if (nullptr == srcMem && nullptr != dstMem) { // src not in svm space
|
||||
Memory* memory = dev().getGpuMemory(dstMem);
|
||||
// Synchronize source and destination memory
|
||||
syncFlags.skipEntire_ = dstMem->isEntirelyCovered(dstOrigin, size);
|
||||
@@ -1405,7 +1408,7 @@ void VirtualGPU::submitSvmCopyMemory(amd::SvmCopyMemoryCommand& vcmd) {
|
||||
|
||||
result = blitMgr().readBuffer(*memory, vcmd.dst(), srcOrigin, size,
|
||||
srcMem->isEntirelyCovered(srcOrigin, size));
|
||||
} else if (nullptr != srcMem && nullptr != dstMem) { // both not in svm space
|
||||
} else if (nullptr != srcMem && nullptr != dstMem) { // both in svm space
|
||||
bool entire =
|
||||
srcMem->isEntirelyCovered(srcOrigin, size) && dstMem->isEntirelyCovered(dstOrigin, size);
|
||||
result =
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする