From f22ceb0fd8855447d48f006c40179061f77f552b Mon Sep 17 00:00:00 2001 From: Julia Jiang Date: Mon, 5 Apr 2021 15:11:59 -0400 Subject: [PATCH] SWDEV-272268, SWDEV-268186 - OCL change for Rebar optimization:fix regressions in OCLMemInfo and Conformance basic test Change-Id: I3e709942b5f43ba52a4cb0824a2e6b3202d4b405 --- rocclr/device/pal/palmemory.cpp | 6 ++++++ rocclr/device/pal/palvirtual.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/rocclr/device/pal/palmemory.cpp b/rocclr/device/pal/palmemory.cpp index 16b996a331..9774d2501f 100644 --- a/rocclr/device/pal/palmemory.cpp +++ b/rocclr/device/pal/palmemory.cpp @@ -106,6 +106,12 @@ bool Memory::create(Resource::MemoryType memType, Resource::CreateParams* params } do { + // Assume that allocations will be placed into visible heap when ReBar is enabled + // Only enable this assumption for small size local buffers + constexpr size_t kLargeAlloc = (1ull << 27); + if ((memType == Local) && desc().buffer_ && (size() < kLargeAlloc) && dev().info().largeBar_) { + memType = Persistent; + } // Create a resource in PAL result = Resource::create(memType, params, forceLinear); if (!result) { diff --git a/rocclr/device/pal/palvirtual.cpp b/rocclr/device/pal/palvirtual.cpp index c54101b2c3..f3d3980ac3 100644 --- a/rocclr/device/pal/palvirtual.cpp +++ b/rocclr/device/pal/palvirtual.cpp @@ -1721,6 +1721,8 @@ void VirtualGPU::submitUnmapMemory(amd::UnmapMemoryCommand& vcmd) { // data check was added for persistent memory that failed to get aperture // and therefore are treated like a remote resource else if (memory->isPersistentDirectMap() && (memory->data() != nullptr)) { + // Map/unmap must be serialized + amd::ScopedLock lock(owner->lockMemoryOps()); memory->unmap(this); } else if (memory->mapMemory() != nullptr) { if (writeMapInfo->isUnmapWrite()) {