P4 to Git Change 1279201 by gandryey@gera-w8 on 2016/06/13 15:49:49

SWDEV-95914 - OpenCL on PAL - Liquid Flash
	- Add liquid flash extension

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#5 edit


[ROCm/clr commit: c2aa3ca6f8]
This commit is contained in:
foreman
2016-06-13 15:58:22 -04:00
parent afa976ec52
commit f3a24ccf8b
3 changed files with 39 additions and 9 deletions
@@ -281,6 +281,10 @@ Settings::create(
enableExtension(ClAmdVec3);
enableExtension(ClAmdPrintf);
enableExtension(ClKhrImage2dFromBuffer);
// Enable some platform extensions
enableExtension(ClAmdDeviceAttributeQuery);
enableExtension(ClKhrSpir);
enableExtension(ClAMDLiquidFlash);
hwLDSSize_ = 32 * Ki;
@@ -324,10 +328,6 @@ Settings::create(
svmAtomics_ = (calAttr.svmAtomics || calAttr.isSVMFineGrainSystem) ? true : false;
*/
// Enable some platform extensions
enableExtension(ClAmdDeviceAttributeQuery);
enableExtension(ClKhrSpir);
// SVM is not currently supported for DX Interop
#if defined(_WIN32)
@@ -833,11 +833,10 @@ VirtualGPU::allocHsaQueueMem()
// Provide private and local heap addresses
const static uint addressShift = LP64_SWITCH(0, 32);
LogWarning("Private/Shared aperture isn't set");
/* queue->private_segment_aperture_base_hi =
static_cast<uint32>(dev().gslCtx()->getPrivateApertureBase()>>addressShift);
queue->group_segment_aperture_base_hi =
static_cast<uint32>(dev().gslCtx()->getSharedApertureBase()>>addressShift);
/* queue->private_segment_aperture_base_hi = static_cast<uint32_t>(
dev().properties().gpuMemoryProperties.privateApertureBase >> addressShift);
queue->group_segment_aperture_base_hi = static_cast<uint32_t>(
dev().properties().gpuMemoryProperties.sharedApertureBase >> addressShift);
*/
hsaQueueMem_->unmap(nullptr);
return true;
@@ -3438,4 +3437,34 @@ VirtualGPU::validateSdmaOverlap(const Resource& src, const Resource& dst)
return false;
}
void
VirtualGPU::submitTransferBufferFromFile(amd::TransferBufferFileCommand& cmd)
{
size_t copySize = cmd.size()[0];
size_t fileOffset = cmd.fileOffset();
size_t srcDstOffset = cmd.origin()[0];
Memory* mem = dev().getGpuMemory(&cmd.memory());
uint idx = 0;
assert((cmd.type() == CL_COMMAND_WRITE_BUFFER_FROM_FILE_AMD) ||
(cmd.type() == CL_COMMAND_READ_BUFFER_FROM_FILE_AMD));
bool writeBuffer(cmd.type() == CL_COMMAND_WRITE_BUFFER_FROM_FILE_AMD);
while (copySize > 0) {
Memory* staging = dev().getGpuMemory(&cmd.staging(idx));
size_t srcDstSize = amd::TransferBufferFileCommand::StagingBufferSize;
srcDstSize = std::min(srcDstSize, copySize);
void* srcDstBuffer = staging->cpuMap(*this);
if (!cmd.file()->transferBlock(writeBuffer, srcDstBuffer, fileOffset, 0, srcDstSize)) {
return;
}
staging->cpuUnmap(*this);
bool result = blitMgr().copyBuffer(*staging, *mem,
fileOffset, srcDstOffset, srcDstSize, false);
flushDMA(getGpuEvent(staging->iMem())->engineId_);
srcDstOffset += srcDstSize;
copySize -= srcDstSize;
}
}
} // namespace pal
@@ -253,6 +253,7 @@ public:
virtual void submitSvmFillMemory(amd::SvmFillMemoryCommand& cmd);
virtual void submitSvmMapMemory(amd::SvmMapMemoryCommand& cmd);
virtual void submitSvmUnmapMemory(amd::SvmUnmapMemoryCommand& cmd);
virtual void submitTransferBufferFromFile(amd::TransferBufferFileCommand& cmd);
void releaseMemory(Pal::IGpuMemory* iMem, bool wait = true);