1/*
2 * Copyright (C) 2021 Intel Corporation
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 */
7
8#include "shared/source/os_interface/hw_info_config.h"
9#include "shared/test/common/helpers/debug_manager_state_restore.h"
10#include "shared/test/common/mocks/mock_memory_manager.h"
11#include "shared/test/common/test_macros/test.h"
12
13#include "opencl/test/unit_test/fixtures/cl_device_fixture.h"
14#include "opencl/test/unit_test/mocks/mock_cl_device.h"
15
16using namespace NEO;
17
18using XeHPUsDeviceIdTest = Test<ClDeviceFixture>;
19
20HWTEST_EXCLUDE_PRODUCT(SubDeviceTests, givenCCSEngineWhenCallingGetDefaultEngineWithWaThenTheSameEngineIsReturned, IGFX_XE_HP_SDV);
21
22XEHPTEST_F(XeHPUsDeviceIdTest, givenRevisionAWhenCreatingEngineWithSubdevicesThenEngineTypeIsSetToCCS) {
23    DebugManagerStateRestore restorer;
24    DebugManager.flags.CreateMultipleSubDevices.set(2);
25
26    auto executionEnvironment = new MockExecutionEnvironment;
27    MockDevice device(executionEnvironment, 0);
28    EXPECT_EQ(0u, device.allEngines.size());
29    device.createSubDevices();
30    device.createEngines();
31    EXPECT_EQ(2u, device.getNumGenericSubDevices());
32
33    auto hwInfo = device.getRootDeviceEnvironment().getMutableHardwareInfo();
34    const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo->platform.eProductFamily);
35    hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_A0, *hwInfo);
36    device.createEngines();
37    auto engines = device.getAllEngines();
38    for (auto engine : engines) {
39        EXPECT_EQ(aub_stream::ENGINE_CCS, engine.osContext->getEngineType());
40    }
41}
42
43XEHPTEST_F(XeHPUsDeviceIdTest, givenRevisionBWhenCreatingEngineWithSubdevicesThenEngineTypeIsSetToCCS) {
44    DebugManagerStateRestore restorer;
45    DebugManager.flags.CreateMultipleSubDevices.set(2);
46
47    auto executionEnvironment = new MockExecutionEnvironment;
48    MockDevice device(executionEnvironment, 0);
49    EXPECT_EQ(0u, device.allEngines.size());
50    device.createSubDevices();
51    device.createEngines();
52    EXPECT_EQ(2u, device.getNumGenericSubDevices());
53
54    auto hwInfo = device.getRootDeviceEnvironment().getMutableHardwareInfo();
55    const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo->platform.eProductFamily);
56    hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, *hwInfo);
57    device.createEngines();
58    auto engines = device.getAllEngines();
59    for (auto engine : engines) {
60        EXPECT_EQ(aub_stream::ENGINE_CCS, engine.osContext->getEngineType());
61    }
62}
63