Cleanup host ptr manager

Change-Id: I0fc9df41a08255eef8072666c1c5c16806e0f7cf
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2018-10-24 08:46:54 +02:00
committed by sys_ocldev
parent e128cb7a7c
commit 129380c1a6
21 changed files with 271 additions and 183 deletions

View File

@ -23,6 +23,7 @@
#include "unit_tests/mocks/mock_event.h"
#include "unit_tests/mocks/mock_kernel.h"
#include "unit_tests/mocks/mock_mdi.h"
#include "unit_tests/mocks/mock_memory_manager.h"
#include "unit_tests/mocks/mock_program.h"
#include "unit_tests/os_interface/mock_performance_counters.h"
#include <memory>
@ -382,22 +383,41 @@ TEST_F(EventTest, Event_Wait_NonBlocking) {
EXPECT_FALSE(result);
}
TEST_F(EventTest, givenEventContainingCommandQueueWhenItsStatusIsUpdatedToCompletedThenTemporaryAllocationsAreDeleted) {
struct UpdateEventTest : public ::testing::Test {
auto memoryManager = pCmdQ->getDevice().getMemoryManager();
void SetUp() override {
executionEnvironment = new ExecutionEnvironment;
memoryManager = new MockMemoryManager(*executionEnvironment);
hostPtrManager = static_cast<MockHostPtrManager *>(memoryManager->getHostPtrManager());
executionEnvironment->memoryManager.reset(memoryManager);
device.reset(Device::create<Device>(*platformDevices, executionEnvironment, 0u));
context = std::make_unique<MockContext>(device.get());
cl_int retVal = CL_OUT_OF_RESOURCES;
commandQueue.reset(CommandQueue::create(context.get(), device.get(), nullptr, retVal));
EXPECT_EQ(CL_SUCCESS, retVal);
}
ExecutionEnvironment *executionEnvironment;
MockMemoryManager *memoryManager;
MockHostPtrManager *hostPtrManager;
std::unique_ptr<Device> device;
std::unique_ptr<Context> context;
std::unique_ptr<CommandQueue> commandQueue;
};
TEST_F(UpdateEventTest, givenEventContainingCommandQueueWhenItsStatusIsUpdatedToCompletedThenTemporaryAllocationsAreDeleted) {
void *ptr = (void *)0x1000;
size_t size = 4096;
auto temporary = memoryManager->allocateGraphicsMemory(size, ptr);
temporary->taskCount = 3;
memoryManager->storeAllocation(std::unique_ptr<GraphicsAllocation>(temporary), TEMPORARY_ALLOCATION);
Event event(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, 3, 3);
Event event(commandQueue.get(), CL_COMMAND_NDRANGE_KERNEL, 3, 3);
EXPECT_EQ(1u, memoryManager->hostPtrManager.getFragmentCount());
EXPECT_EQ(1u, hostPtrManager->getFragmentCount());
event.updateExecutionStatus();
EXPECT_EQ(0u, memoryManager->hostPtrManager.getFragmentCount());
EXPECT_EQ(0u, hostPtrManager->getFragmentCount());
}
class SurfaceMock : public Surface {