From e12576cf2295cf9fd6c10835b2573a1ee5d23260 Mon Sep 17 00:00:00 2001
From: foreman
Date: Sun, 9 Apr 2017 02:37:43 -0400
Subject: [PATCH] P4 to Git Change 1396011 by todli@todli-win-opencl-kv1 on
2017/04/09 02:28:44
SWDEV-96241 - Unlike in ORCA, in PAL the actual memory allocated for BusAddressable memory is sometimes larger than "Pow2Align(size, pageSize) + pageSize".
So virtual address of marker should be calculated in another way for WaitMarker command.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#47 edit
---
rocclr/runtime/device/pal/palvirtual.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/rocclr/runtime/device/pal/palvirtual.cpp b/rocclr/runtime/device/pal/palvirtual.cpp
index efbe955678..0775016867 100644
--- a/rocclr/runtime/device/pal/palvirtual.cpp
+++ b/rocclr/runtime/device/pal/palvirtual.cpp
@@ -2794,9 +2794,11 @@ VirtualGPU::submitSignal(amd::SignalCommand & vcmd)
uint32_t size = vcmd.memory().getSize();
addVmMemory(pGpuMemory);
+
+ uint32_t offset = pGpuMemory->iMem()->Desc().markerBusAddr - pGpuMemory->iMem()->Desc().surfaceBusAddr;
if (vcmd.type() == CL_COMMAND_WAIT_SIGNAL_AMD) {
- iCmd()->CmdWaitMemoryValue(*(pGpuMemory->iMem()), size, value, 0xFFFFFFFF, Pal::CompareFunc::GreaterEqual);
+ iCmd()->CmdWaitMemoryValue(*(pGpuMemory->iMem()), offset, value, 0xFFFFFFFF, Pal::CompareFunc::GreaterEqual);
}
else if (vcmd.type() == CL_COMMAND_WRITE_SIGNAL_AMD) {
iCmd()->CmdUpdateMemory(*(pGpuMemory->iMem()), size, 4, &value);