P4 to Git Change 1211165 by gandryey@gera-ubuntu14 on 2015/11/13 14:36:37
SWDEV-78467 - OpenCL LiquidFlash feature
- Add staging transfer support for invisible memory
- Don't fallback to USWC memory if persistent allocation failed
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#262 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#231 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#390 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.hpp#137 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.cpp#73 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#80 edit
[ROCm/clr commit: 8a7bac7048]
This commit is contained in:
@@ -3491,4 +3491,30 @@ VirtualGPU::assignDebugTrapHandler(const DebugToolInfo& dbgSetting,
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
VirtualGPU::submitWriteBufferFromFile(amd::WriteBufferFromFileCommand& cmd)
|
||||
{
|
||||
size_t copySize = cmd.size()[0];
|
||||
size_t fileOffset = cmd.fileOffset();
|
||||
size_t dstOffset = cmd.origin()[0];
|
||||
Memory* mem = dev().getGpuMemory(&cmd.memory());
|
||||
uint idx = 0;
|
||||
while (copySize > 0) {
|
||||
Memory* staging = dev().getGpuMemory(&cmd.staging(idx));
|
||||
size_t dstSize = amd::WriteBufferFromFileCommand::StagingBufferSize;
|
||||
dstSize = std::min(dstSize, copySize);
|
||||
void* dstBuffer = staging->cpuMap(*this);
|
||||
if (!cmd.file()->readBlock(dstBuffer, fileOffset, 0, dstSize)) {
|
||||
return;
|
||||
}
|
||||
staging->cpuUnmap(*this);
|
||||
|
||||
bool result = blitMgr().copyBuffer(*staging, *mem,
|
||||
fileOffset, dstOffset, dstSize, false);
|
||||
flushDMA(getGpuEvent(staging->gslResource())->engineId_);
|
||||
dstOffset += dstSize;
|
||||
copySize -= dstSize;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace gpu
|
||||
|
||||
Reference in New Issue
Block a user