/* * Copyright (C) 2017-2018 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "test.h" #include "runtime/helpers/task_information.h" #include "unit_tests/fixtures/device_fixture.h" #include "unit_tests/mocks/mock_buffer.h" #include "unit_tests/mocks/mock_command_queue.h" #include "unit_tests/mocks/mock_csr.h" #include using namespace OCLRT; TEST(CommandTest, mapUnmapSubmitWithoutTerminateFlagFlushesCsr) { std::unique_ptr device(MockDevice::createWithNewExecutionEnvironment(nullptr)); std::unique_ptr cmdQ(new MockCommandQueue(nullptr, device.get(), nullptr)); MockCommandStreamReceiver csr; csr.setMemoryManager(device->getMemoryManager()); MockBuffer buffer; auto initialTaskCount = csr.peekTaskCount(); MemObjSizeArray size = {{1, 1, 1}}; MemObjOffsetArray offset = {{0, 0, 0}}; std::unique_ptr command(new CommandMapUnmap(MapOperationType::MAP, buffer, size, offset, false, csr, *cmdQ.get())); CompletionStamp completionStamp = command->submit(20, false); auto expectedTaskCount = initialTaskCount + 1; EXPECT_EQ(expectedTaskCount, completionStamp.taskCount); } TEST(CommandTest, mapUnmapSubmitWithTerminateFlagAbortsFlush) { std::unique_ptr device(MockDevice::createWithNewExecutionEnvironment(nullptr)); std::unique_ptr cmdQ(new MockCommandQueue(nullptr, device.get(), nullptr)); MockCommandStreamReceiver csr; csr.setMemoryManager(device->getMemoryManager()); MockBuffer buffer; auto initialTaskCount = csr.peekTaskCount(); MemObjSizeArray size = {{1, 1, 1}}; MemObjOffsetArray offset = {{0, 0, 0}}; std::unique_ptr command(new CommandMapUnmap(MapOperationType::MAP, buffer, size, offset, false, csr, *cmdQ.get())); CompletionStamp completionStamp = command->submit(20, true); auto submitTaskCount = csr.peekTaskCount(); EXPECT_EQ(initialTaskCount, submitTaskCount); auto expectedTaskCount = 0u; EXPECT_EQ(expectedTaskCount, completionStamp.taskCount); } TEST(CommandTest, markerSubmitWithoutTerminateFlagFlushesCsr) { std::unique_ptr device(MockDevice::createWithNewExecutionEnvironment(nullptr)); std::unique_ptr cmdQ(new MockCommandQueue(nullptr, device.get(), nullptr)); MockCommandStreamReceiver csr; csr.setMemoryManager(device->getMemoryManager()); MockBuffer buffer; auto initialTaskCount = csr.peekTaskCount(); std::unique_ptr command(new CommandMarker(*cmdQ.get(), csr, CL_COMMAND_MARKER, 0)); CompletionStamp completionStamp = command->submit(20, false); auto expectedTaskCount = initialTaskCount + 1; EXPECT_EQ(expectedTaskCount, completionStamp.taskCount); } TEST(CommandTest, markerSubmitWithTerminateFlagAbortsFlush) { std::unique_ptr device(MockDevice::createWithNewExecutionEnvironment(nullptr)); std::unique_ptr cmdQ(new MockCommandQueue(nullptr, device.get(), nullptr)); MockCommandStreamReceiver csr; MockBuffer buffer; auto initialTaskCount = csr.peekTaskCount(); std::unique_ptr command(new CommandMarker(*cmdQ.get(), csr, CL_COMMAND_MARKER, 0)); CompletionStamp completionStamp = command->submit(20, true); auto submitTaskCount = csr.peekTaskCount(); EXPECT_EQ(initialTaskCount, submitTaskCount); auto expectedTaskCount = 0u; EXPECT_EQ(expectedTaskCount, completionStamp.taskCount); }