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:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user