diff --git a/runtime/memory_manager/surface.h b/runtime/memory_manager/surface.h index 46f9039d7f..6a3d46baf7 100644 --- a/runtime/memory_manager/surface.h +++ b/runtime/memory_manager/surface.h @@ -83,10 +83,10 @@ class HostPtrSurface : public Surface { class MemObjSurface : public Surface { public: MemObjSurface(MemObj *memObj) : Surface(memObj->getGraphicsAllocation()->isCoherent()), memObj(memObj) { - memObj->retain(); + memObj->incRefInternal(); } ~MemObjSurface() override { - memObj->release(); + memObj->decRefInternal(); memObj = nullptr; }; diff --git a/unit_tests/event/event_tests.cpp b/unit_tests/event/event_tests.cpp index 7f7e439a7f..c58c4d6e8e 100644 --- a/unit_tests/event/event_tests.cpp +++ b/unit_tests/event/event_tests.cpp @@ -477,7 +477,14 @@ TEST_F(InternalsEventTest, processBlockedCommandsKernelOperation) { std::vector v; MockBuffer buffer; buffer.retain(); + auto initialRefCount = buffer.getRefApiCount(); + auto initialInternalCount = buffer.getRefInternalCount(); + auto bufferSurf = new MemObjSurface(&buffer); + + EXPECT_EQ(initialInternalCount + 1, buffer.getRefInternalCount()); + EXPECT_EQ(initialRefCount, buffer.getRefApiCount()); + PreemptionMode preemptionMode = pDevice->getPreemptionMode(); v.push_back(bufferSurf); auto cmd = new CommandComputeKernel(cmdQ, std::unique_ptr(blockedCommandsData), v, false, false, false, nullptr, preemptionMode, pKernel, 1); @@ -490,7 +497,7 @@ TEST_F(InternalsEventTest, processBlockedCommandsKernelOperation) { event.submitCommand(false); - EXPECT_EQ(refCount - 1, buffer.getRefApiCount()); + EXPECT_EQ(refCount, buffer.getRefApiCount()); EXPECT_EQ(refInternal - 1, buffer.getRefInternalCount()); auto taskLevelAfter = csr.peekTaskLevel();