From f3a24ccf8b3f3805475334de2fd92fd2f99ca98b Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 13 Jun 2016 15:58:22 -0400
Subject: [PATCH] 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: c2aa3ca6f8206480dc91183e1f1ef94efda153a1]
---
.../rocclr/runtime/device/pal/palsettings.cpp | 8 ++--
.../rocclr/runtime/device/pal/palvirtual.cpp | 39 ++++++++++++++++---
.../rocclr/runtime/device/pal/palvirtual.hpp | 1 +
3 files changed, 39 insertions(+), 9 deletions(-)
diff --git a/projects/clr/rocclr/runtime/device/pal/palsettings.cpp b/projects/clr/rocclr/runtime/device/pal/palsettings.cpp
index e29b86741d..eb4e4dc907 100644
--- a/projects/clr/rocclr/runtime/device/pal/palsettings.cpp
+++ b/projects/clr/rocclr/runtime/device/pal/palsettings.cpp
@@ -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)
diff --git a/projects/clr/rocclr/runtime/device/pal/palvirtual.cpp b/projects/clr/rocclr/runtime/device/pal/palvirtual.cpp
index 5954396bed..a0972dcd0c 100644
--- a/projects/clr/rocclr/runtime/device/pal/palvirtual.cpp
+++ b/projects/clr/rocclr/runtime/device/pal/palvirtual.cpp
@@ -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(dev().gslCtx()->getPrivateApertureBase()>>addressShift);
- queue->group_segment_aperture_base_hi =
- static_cast(dev().gslCtx()->getSharedApertureBase()>>addressShift);
+/* queue->private_segment_aperture_base_hi = static_cast(
+ dev().properties().gpuMemoryProperties.privateApertureBase >> addressShift);
+ queue->group_segment_aperture_base_hi = static_cast(
+ 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
diff --git a/projects/clr/rocclr/runtime/device/pal/palvirtual.hpp b/projects/clr/rocclr/runtime/device/pal/palvirtual.hpp
index 98c23c79d4..c566a3f646 100644
--- a/projects/clr/rocclr/runtime/device/pal/palvirtual.hpp
+++ b/projects/clr/rocclr/runtime/device/pal/palvirtual.hpp
@@ -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);