2017-12-21 07:45:38 +08:00
|
|
|
/*
|
2020-01-14 21:32:11 +08:00
|
|
|
* Copyright (C) 2017-2020 Intel Corporation
|
2017-12-21 07:45:38 +08:00
|
|
|
*
|
2018-09-18 15:11:08 +08:00
|
|
|
* SPDX-License-Identifier: MIT
|
2017-12-21 07:45:38 +08:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
2020-02-12 18:27:28 +08:00
|
|
|
#include "core/execution_environment/root_device_environment.h"
|
2020-02-18 21:39:59 +08:00
|
|
|
#include "core/unit_tests/helpers/debug_manager_state_restore.h"
|
2017-12-21 07:45:38 +08:00
|
|
|
#include "runtime/api/api.h"
|
2020-02-12 18:27:28 +08:00
|
|
|
#include "runtime/command_queue/command_queue.h"
|
2019-05-13 15:30:40 +08:00
|
|
|
#include "runtime/tracing/tracing_api.h"
|
2018-01-26 23:53:18 +08:00
|
|
|
#include "test.h"
|
2019-02-27 18:39:32 +08:00
|
|
|
#include "unit_tests/fixtures/platform_fixture.h"
|
2019-12-24 15:08:08 +08:00
|
|
|
#include "unit_tests/helpers/ult_limits.h"
|
2019-12-02 21:19:24 +08:00
|
|
|
#include "unit_tests/helpers/variable_backup.h"
|
2020-02-12 18:27:28 +08:00
|
|
|
#include "unit_tests/mocks/mock_kernel.h"
|
2019-02-27 18:39:32 +08:00
|
|
|
|
|
|
|
#include "gtest/gtest.h"
|
2018-01-26 23:53:18 +08:00
|
|
|
|
|
|
|
#include <memory>
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
namespace NEO {
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
class Context;
|
2020-01-14 21:32:11 +08:00
|
|
|
class MockClDevice;
|
2019-12-02 21:19:24 +08:00
|
|
|
struct RootDeviceEnvironment;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2020-02-12 18:27:28 +08:00
|
|
|
template <uint32_t rootDeviceIndex = 1u>
|
2019-12-24 15:08:08 +08:00
|
|
|
struct ApiFixture : PlatformFixture {
|
2020-02-12 18:27:28 +08:00
|
|
|
ApiFixture() = default;
|
|
|
|
~ApiFixture() = default;
|
2019-12-24 15:08:08 +08:00
|
|
|
|
2020-02-12 18:27:28 +08:00
|
|
|
virtual void SetUp() {
|
2020-02-18 21:39:59 +08:00
|
|
|
DebugManager.flags.CreateMultipleRootDevices.set(numRootDevices);
|
2020-02-12 18:27:28 +08:00
|
|
|
PlatformFixture::SetUp();
|
|
|
|
|
|
|
|
if (rootDeviceIndex != 0u) {
|
|
|
|
rootDeviceEnvironmentBackup.swap(pPlatform->peekExecutionEnvironment()->rootDeviceEnvironments[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
auto pDevice = pPlatform->getClDevice(testedRootDeviceIndex);
|
|
|
|
ASSERT_NE(nullptr, pDevice);
|
|
|
|
|
|
|
|
testedClDevice = pDevice;
|
|
|
|
pContext = Context::create<MockContext>(nullptr, ClDeviceVector(&testedClDevice, 1), nullptr, nullptr, retVal);
|
|
|
|
EXPECT_EQ(retVal, CL_SUCCESS);
|
|
|
|
|
|
|
|
pCommandQueue = new CommandQueue(pContext, pDevice, nullptr);
|
|
|
|
|
|
|
|
pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false);
|
|
|
|
|
|
|
|
pKernel = new MockKernel(pProgram, pProgram->mockKernelInfo, *pDevice);
|
|
|
|
ASSERT_NE(nullptr, pKernel);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void TearDown() {
|
|
|
|
pKernel->release();
|
|
|
|
pCommandQueue->release();
|
|
|
|
pContext->release();
|
|
|
|
pProgram->release();
|
|
|
|
|
|
|
|
if (rootDeviceIndex != 0u) {
|
|
|
|
rootDeviceEnvironmentBackup.swap(pPlatform->peekExecutionEnvironment()->rootDeviceEnvironments[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
PlatformFixture::TearDown();
|
|
|
|
}
|
2020-02-18 21:39:59 +08:00
|
|
|
DebugManagerStateRestore restorer;
|
2019-12-02 21:19:24 +08:00
|
|
|
cl_int retVal = CL_SUCCESS;
|
|
|
|
size_t retSize = 0;
|
|
|
|
|
|
|
|
CommandQueue *pCommandQueue = nullptr;
|
|
|
|
Context *pContext = nullptr;
|
|
|
|
MockKernel *pKernel = nullptr;
|
|
|
|
MockProgram *pProgram = nullptr;
|
2019-12-24 15:08:08 +08:00
|
|
|
constexpr static uint32_t numRootDevices = maxRootDeviceCount;
|
2020-02-12 18:27:28 +08:00
|
|
|
constexpr static uint32_t testedRootDeviceIndex = rootDeviceIndex;
|
2019-12-02 21:19:24 +08:00
|
|
|
cl_device_id testedClDevice = nullptr;
|
2019-12-24 15:08:08 +08:00
|
|
|
std::unique_ptr<RootDeviceEnvironment> rootDeviceEnvironmentBackup;
|
2017-12-21 07:45:38 +08:00
|
|
|
};
|
|
|
|
|
2020-02-12 18:27:28 +08:00
|
|
|
struct api_tests : public ApiFixture<>,
|
2017-12-21 07:45:38 +08:00
|
|
|
public ::testing::Test {
|
|
|
|
virtual void SetUp() override {
|
2019-12-02 21:19:24 +08:00
|
|
|
ApiFixture::SetUp();
|
2017-12-21 07:45:38 +08:00
|
|
|
}
|
|
|
|
virtual void TearDown() override {
|
2019-12-02 21:19:24 +08:00
|
|
|
ApiFixture::TearDown();
|
2017-12-21 07:45:38 +08:00
|
|
|
}
|
|
|
|
};
|
2018-01-26 23:53:18 +08:00
|
|
|
|
2018-04-17 03:54:19 +08:00
|
|
|
struct api_fixture_using_aligned_memory_manager {
|
2018-01-26 23:53:18 +08:00
|
|
|
public:
|
|
|
|
virtual void SetUp();
|
|
|
|
virtual void TearDown();
|
|
|
|
|
|
|
|
cl_int retVal;
|
|
|
|
size_t retSize;
|
|
|
|
|
|
|
|
CommandQueue *commandQueue;
|
|
|
|
Context *context;
|
|
|
|
MockKernel *kernel;
|
|
|
|
MockProgram *program;
|
2020-01-14 21:32:11 +08:00
|
|
|
MockClDevice *device;
|
2018-01-26 23:53:18 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
using api_test_using_aligned_memory_manager = Test<api_fixture_using_aligned_memory_manager>;
|
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|