From 5c746131f1130b155f5332f8e24183c9609cd8f0 Mon Sep 17 00:00:00 2001 From: "Milczarek, Slawomir" Date: Wed, 14 Feb 2018 13:48:31 +0100 Subject: [PATCH] HW CSR with AUB dump to operate on real device (HW Info) This commit ensures AUB files to be dumped for real device in the configuration CSR HW + CSR AUB. Change-Id: I7b5f740440aae062d2f5ad7ad8b9c3b4f2207ddd --- Jenkinsfile | 2 +- .../create_command_stream_impl.cpp | 55 +++++++-- .../create_command_stream_impl.h | 1 + runtime/dll/create_command_stream.cpp | 30 +---- .../os_agnostic_memory_manager.cpp | 2 - .../os_agnostic_memory_manager.h | 1 - unit_tests/command_stream/CMakeLists.txt | 1 + .../command_stream_receiver_hw_tests.cpp | 5 +- .../create_command_stream_receiver_tests.cpp | 5 +- .../command_stream/get_devices_tests.cpp | 112 ++++++++++++++++++ unit_tests/device/device_tests.cpp | 1 + unit_tests/libult/CMakeLists.txt | 1 + unit_tests/libult/create_command_stream.cpp | 12 +- unit_tests/libult/create_command_stream.h | 31 +++++ .../os_interface/mock_performance_counters.h | 3 +- .../windows/driver_info_tests.cpp | 3 +- unit_tests/platform/platform_tests.cpp | 3 +- unit_tests/sharings/va/va_sharing_tests.cpp | 3 +- 18 files changed, 214 insertions(+), 57 deletions(-) create mode 100644 unit_tests/command_stream/get_devices_tests.cpp create mode 100644 unit_tests/libult/create_command_stream.h diff --git a/Jenkinsfile b/Jenkinsfile index 1b8bdbaaa4..f78a2d90e2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,4 +2,4 @@ neoDependenciesRev='735095-769' strategy='EQUAL' allowedF=43 -allowedCD=340 +allowedCD=339 diff --git a/runtime/command_stream/create_command_stream_impl.cpp b/runtime/command_stream/create_command_stream_impl.cpp index b24d3ca28f..76b2002087 100644 --- a/runtime/command_stream/create_command_stream_impl.cpp +++ b/runtime/command_stream/create_command_stream_impl.cpp @@ -23,6 +23,7 @@ #include "runtime/command_stream/aub_command_stream_receiver.h" #include "runtime/command_stream/tbx_command_stream_receiver.h" #include "runtime/command_stream/command_stream_receiver_with_aub_dump.h" +#include "runtime/os_interface/device_factory.h" #include "runtime/gmm_helper/gmm_helper.h" #include "runtime/helpers/options.h" @@ -38,26 +39,25 @@ CommandStreamReceiver *createCommandStreamImpl(const HardwareInfo *pHwInfo) { CommandStreamReceiver *commandStreamReceiver = nullptr; int32_t csr = DebugManager.flags.SetCommandStreamReceiver.get(); if (csr) { - if (csr >= CSR_TYPES_NUM) - return nullptr; - - Gmm::initContext(pHwInfo->pPlatform, - pHwInfo->pSkuTable, - pHwInfo->pWaTable, - pHwInfo->pSysInfo); - switch (csr) { case CSR_AUB: + Gmm::initContext(pHwInfo->pPlatform, + pHwInfo->pSkuTable, + pHwInfo->pWaTable, + pHwInfo->pSysInfo); commandStreamReceiver = AUBCommandStreamReceiver::create(*pHwInfo, "aubfile", true); initialHardwareTag = -1; break; case CSR_TBX: + Gmm::initContext(pHwInfo->pPlatform, + pHwInfo->pSkuTable, + pHwInfo->pWaTable, + pHwInfo->pSysInfo); commandStreamReceiver = TbxCommandStreamReceiver::create(*pHwInfo); break; - case CSR_HW_WITH_AUB: { + case CSR_HW_WITH_AUB: commandStreamReceiver = funcCreate(*pHwInfo, true); break; - } default: break; } @@ -67,4 +67,39 @@ CommandStreamReceiver *createCommandStreamImpl(const HardwareInfo *pHwInfo) { return commandStreamReceiver; } +bool getDevicesImpl(HardwareInfo **hwInfo, size_t &numDevicesReturned) { + bool result; + int32_t csr = DebugManager.flags.SetCommandStreamReceiver.get(); + if (csr) { + switch (csr) { + case CSR_AUB: + case CSR_TBX: { + auto productFamily = DebugManager.flags.ProductFamilyOverride.get(); + auto hwInfoConst = *platformDevices; + for (int j = 0; j < IGFX_MAX_PRODUCT; j++) { + if (hardwarePrefix[j] == nullptr) + continue; + if (strcmp(hardwarePrefix[j], productFamily.c_str()) == 0) { + hwInfoConst = hardwareInfoTable[j]; + break; + } + } + *hwInfo = const_cast(hwInfoConst); + hardwareInfoSetupGt[hwInfoConst->pPlatform->eProductFamily](const_cast(hwInfo[0]->pSysInfo)); + numDevicesReturned = 1; + return true; + } + case CSR_HW_WITH_AUB: + return DeviceFactory::getDevices(hwInfo, numDevicesReturned); + default: + return false; + } + } + result = DeviceFactory::getDevices(hwInfo, numDevicesReturned); + DEBUG_BREAK_IF(result && (hwInfo == nullptr)); + // For now only one device should be present + DEBUG_BREAK_IF(result && (numDevicesReturned != 1)); + return result; +} + } // namespace OCLRT diff --git a/runtime/command_stream/create_command_stream_impl.h b/runtime/command_stream/create_command_stream_impl.h index eab4319084..117c391efc 100644 --- a/runtime/command_stream/create_command_stream_impl.h +++ b/runtime/command_stream/create_command_stream_impl.h @@ -26,4 +26,5 @@ namespace OCLRT { extern CommandStreamReceiver *createCommandStreamImpl(const HardwareInfo *pHwInfo); +extern bool getDevicesImpl(HardwareInfo **hwInfo, size_t &numDevicesReturned); } diff --git a/runtime/dll/create_command_stream.cpp b/runtime/dll/create_command_stream.cpp index 5b4d58d0eb..6dc3d8427b 100644 --- a/runtime/dll/create_command_stream.cpp +++ b/runtime/dll/create_command_stream.cpp @@ -38,33 +38,7 @@ CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo) { } bool getDevices(HardwareInfo **hwInfo, size_t &numDevicesReturned) { - bool result; - int32_t csr = DebugManager.flags.SetCommandStreamReceiver.get(); - if (csr) { - auto productFamily = DebugManager.flags.ProductFamilyOverride.get(); - auto hwInfoConst = *platformDevices; - - for (int j = 0; j < IGFX_MAX_PRODUCT; j++) { - if (hardwarePrefix[j] == nullptr) - continue; - if (strcmp(hardwarePrefix[j], productFamily.c_str()) == 0) { - hwInfoConst = hardwareInfoTable[j]; - break; - } - } - - *hwInfo = const_cast(hwInfoConst); - hardwareInfoSetupGt[hwInfoConst->pPlatform->eProductFamily](const_cast(hwInfo[0]->pSysInfo)); - - numDevicesReturned = 1; - return true; - } - result = DeviceFactory::getDevices(hwInfo, numDevicesReturned); - if (result) { - DEBUG_BREAK_IF(hwInfo == nullptr); - // For now only one device should be present - DEBUG_BREAK_IF(numDevicesReturned != 1); - } - return result; + return getDevicesImpl(hwInfo, numDevicesReturned); } + } // namespace OCLRT diff --git a/runtime/memory_manager/os_agnostic_memory_manager.cpp b/runtime/memory_manager/os_agnostic_memory_manager.cpp index 702f343022..0203ae1296 100644 --- a/runtime/memory_manager/os_agnostic_memory_manager.cpp +++ b/runtime/memory_manager/os_agnostic_memory_manager.cpp @@ -31,8 +31,6 @@ namespace OCLRT { -bool overrideCommandStreamReceiverCreation = false; - OsAgnosticMemoryManager::~OsAgnosticMemoryManager() { applyCommonCleanup(); } diff --git a/runtime/memory_manager/os_agnostic_memory_manager.h b/runtime/memory_manager/os_agnostic_memory_manager.h index 80462f5046..f10f29eded 100644 --- a/runtime/memory_manager/os_agnostic_memory_manager.h +++ b/runtime/memory_manager/os_agnostic_memory_manager.h @@ -27,7 +27,6 @@ namespace OCLRT { -extern bool overrideCommandStreamReceiverCreation; constexpr size_t bigAllocation = 1 * MB; constexpr uintptr_t dummyAddress = 0xFFFFF000u; class MemoryAllocation : public GraphicsAllocation { diff --git a/unit_tests/command_stream/CMakeLists.txt b/unit_tests/command_stream/CMakeLists.txt index fea8c66bb3..76cfc6d184 100644 --- a/unit_tests/command_stream/CMakeLists.txt +++ b/unit_tests/command_stream/CMakeLists.txt @@ -27,6 +27,7 @@ set(IGDRCL_SRCS_tests_command_stream "${CMAKE_CURRENT_SOURCE_DIR}/command_stream_receiver_with_aub_dump_tests.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/create_command_stream_receiver_tests.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/cmd_parse_tests.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/get_devices_tests.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/linear_stream_fixture.h" "${CMAKE_CURRENT_SOURCE_DIR}/linear_stream_tests.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/submissions_aggregator_tests.cpp" diff --git a/unit_tests/command_stream/command_stream_receiver_hw_tests.cpp b/unit_tests/command_stream/command_stream_receiver_hw_tests.cpp index eb2f060625..e1b50d1b4d 100644 --- a/unit_tests/command_stream/command_stream_receiver_hw_tests.cpp +++ b/unit_tests/command_stream/command_stream_receiver_hw_tests.cpp @@ -48,6 +48,7 @@ #include "unit_tests/mocks/mock_event.h" #include "unit_tests/mocks/mock_kernel.h" #include "unit_tests/mocks/mock_submissions_aggregator.h" +#include "unit_tests/libult/create_command_stream.h" #include "test.h" #include "gtest/gtest.h" #include "runtime/utilities/linux/debug_env_reader.h" @@ -1542,10 +1543,6 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelWithSlmWhenPrevi EXPECT_EQ(L3Config, (uint32_t)cmdMILoad->getDataDword()); } -namespace OCLRT { -CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo); -} - HWTEST_F(CommandStreamReceiverFlushTaskTests, CreateCommandStreamReceiverHw) { const HardwareInfo hwInfo = *platformDevices[0]; auto csrHw = CommandStreamReceiverHw::create(hwInfo); diff --git a/unit_tests/command_stream/create_command_stream_receiver_tests.cpp b/unit_tests/command_stream/create_command_stream_receiver_tests.cpp index c66e6dcf21..5ecf8817f0 100644 --- a/unit_tests/command_stream/create_command_stream_receiver_tests.cpp +++ b/unit_tests/command_stream/create_command_stream_receiver_tests.cpp @@ -24,15 +24,12 @@ #include "runtime/command_stream/command_stream_receiver_with_aub_dump.h" #include "runtime/memory_manager/os_agnostic_memory_manager.h" #include "runtime/helpers/options.h" +#include "unit_tests/libult/create_command_stream.h" #include "unit_tests/helpers/debug_manager_state_restore.h" #include "test.h" using namespace OCLRT; -namespace OCLRT { -CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo); -} - struct CreateCommandStreamReceiverTest : public ::testing::TestWithParam { void SetUp() override { storeInitHWTag = initialHardwareTag; diff --git a/unit_tests/command_stream/get_devices_tests.cpp b/unit_tests/command_stream/get_devices_tests.cpp new file mode 100644 index 0000000000..0a32cd36a3 --- /dev/null +++ b/unit_tests/command_stream/get_devices_tests.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2018, Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "runtime/command_stream/command_stream_receiver.h" +#include "runtime/memory_manager/os_agnostic_memory_manager.h" +#include "runtime/os_interface/device_factory.h" +#include "runtime/helpers/options.h" +#include "unit_tests/libult/create_command_stream.h" +#include "unit_tests/helpers/debug_manager_state_restore.h" +#include "test.h" + +using namespace OCLRT; + +struct GetDevicesTest : ::testing::TestWithParam> { + void SetUp() override { + overrideDeviceWithNullHardwareInfo = false; + gtSystemInfo = *platformDevices[0]->pSysInfo; + } + void TearDown() override { + overrideDeviceWithNullHardwareInfo = true; + memcpy(const_cast(platformDevices[0]->pSysInfo), >SystemInfo, sizeof(GT_SYSTEM_INFO)); + } + GT_SYSTEM_INFO gtSystemInfo; +}; + +HWTEST_P(GetDevicesTest, givenGetDevicesWhenCsrIsSetToValidTypeThenTheFuntionReturnsTheExpectedValueOfHardwareInfo) { + DebugManagerStateRestore stateRestorer; + CommandStreamReceiverType csrType = std::get<0>(GetParam()); + const char *hwPrefix = std::get<1>(GetParam()); + std::string productFamily = "unk"; + if (hwPrefix != nullptr) { + productFamily = hwPrefix; + } + + DebugManager.flags.SetCommandStreamReceiver.set(csrType); + DebugManager.flags.ProductFamilyOverride.set(productFamily); + + int i = 0; + size_t numDevices = 0; + HardwareInfo *hwInfo = nullptr; + auto ret = getDevices(&hwInfo, numDevices); + + switch (csrType) { + case CSR_HW: + case CSR_HW_WITH_AUB: + EXPECT_TRUE(ret); + EXPECT_NE(nullptr, hwInfo); + EXPECT_EQ(1u, numDevices); + DeviceFactory::releaseDevices(); + break; + case CSR_AUB: + case CSR_TBX: + EXPECT_TRUE(ret); + EXPECT_NE(nullptr, hwInfo); + EXPECT_EQ(1u, numDevices); + for (i = 0; i < IGFX_MAX_PRODUCT; i++) { + auto hardwareInfo = hardwareInfoTable[i]; + if (hardwareInfo == nullptr) + continue; + if (hardwareInfoTable[i]->pPlatform->eProductFamily == hwInfo->pPlatform->eProductFamily) + break; + } + EXPECT_TRUE(i < IGFX_MAX_PRODUCT); + ASSERT_NE(nullptr, hardwarePrefix[i]); + if (hwPrefix != nullptr) { + EXPECT_EQ(hardwareInfoTable[i], hwInfo); + EXPECT_STREQ(hardwarePrefix[i], productFamily.c_str()); + } else { + auto defaultHwInfo = *platformDevices; + EXPECT_EQ(defaultHwInfo, hwInfo); + } + break; + default: + EXPECT_FALSE(ret); + EXPECT_EQ(nullptr, hwInfo); + EXPECT_EQ(0u, numDevices); + break; + } +} + +static CommandStreamReceiverType commandStreamReceiverTypes[] = { + CSR_HW, + CSR_AUB, + CSR_TBX, + CSR_HW_WITH_AUB, + CSR_TYPES_NUM}; + +INSTANTIATE_TEST_CASE_P( + GetDevicesTest_Create, + GetDevicesTest, + ::testing::Combine( + ::testing::ValuesIn(commandStreamReceiverTypes), + ::testing::ValuesIn(hardwarePrefix, &hardwarePrefix[IGFX_MAX_PRODUCT]))); diff --git a/unit_tests/device/device_tests.cpp b/unit_tests/device/device_tests.cpp index c294533a2e..2f78c29a7d 100644 --- a/unit_tests/device/device_tests.cpp +++ b/unit_tests/device/device_tests.cpp @@ -27,6 +27,7 @@ #include "unit_tests/fixtures/device_fixture.h" #include "unit_tests/fixtures/memory_management_fixture.h" #include "unit_tests/mocks/mock_context.h" +#include "unit_tests/libult/create_command_stream.h" #include "test.h" #include #include "runtime/device/device.h" diff --git a/unit_tests/libult/CMakeLists.txt b/unit_tests/libult/CMakeLists.txt index 8c8ba36a70..8cfa8c6552 100644 --- a/unit_tests/libult/CMakeLists.txt +++ b/unit_tests/libult/CMakeLists.txt @@ -66,6 +66,7 @@ add_library (igdrcl_libult OBJECT ) add_library (igdrcl_libult_cs OBJECT ${IGDRCL_SOURCE_DIR}/unit_tests/libult/create_command_stream.cpp + ${IGDRCL_SOURCE_DIR}/unit_tests/libult/create_command_stream.h ) if(MSVC) diff --git a/unit_tests/libult/create_command_stream.cpp b/unit_tests/libult/create_command_stream.cpp index 0dfe36e4d1..0f115e7400 100644 --- a/unit_tests/libult/create_command_stream.cpp +++ b/unit_tests/libult/create_command_stream.cpp @@ -33,6 +33,9 @@ namespace OCLRT { extern CommandStreamReceiverCreateFunc commandStreamReceiverFactory[2 * IGFX_MAX_CORE]; bool getDevicesResult = true; +bool overrideCommandStreamReceiverCreation = false; +bool overrideDeviceWithNullHardwareInfo = true; + CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo) { CommandStreamReceiver *commandStreamReceiver = nullptr; assert(nullptr != pHwInfo->pPlatform); @@ -50,8 +53,11 @@ CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo) { } bool getDevices(HardwareInfo **hwInfo, size_t &numDevicesReturned) { - *hwInfo = nullptr; - numDevicesReturned = 0; - return getDevicesResult; + if (overrideDeviceWithNullHardwareInfo) { + *hwInfo = nullptr; + numDevicesReturned = 0; + return getDevicesResult; + } + return getDevicesImpl(hwInfo, numDevicesReturned); } } diff --git a/unit_tests/libult/create_command_stream.h b/unit_tests/libult/create_command_stream.h new file mode 100644 index 0000000000..4773a8e028 --- /dev/null +++ b/unit_tests/libult/create_command_stream.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2018, Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "runtime/command_stream/command_stream_receiver.h" + +namespace OCLRT { +extern bool overrideCommandStreamReceiverCreation; +extern bool overrideDeviceWithNullHardwareInfo; + +extern CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo); +extern bool getDevices(HardwareInfo **hwInfo, size_t &numDevicesReturned); +} diff --git a/unit_tests/os_interface/mock_performance_counters.h b/unit_tests/os_interface/mock_performance_counters.h index 4024cd0c9f..ea97430e33 100644 --- a/unit_tests/os_interface/mock_performance_counters.h +++ b/unit_tests/os_interface/mock_performance_counters.h @@ -1,5 +1,5 @@ /* -* Copyright (c) 2017, Intel Corporation +* Copyright (c) 2017 - 2018, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ #pragma once #include "runtime/device/device.h" #include "runtime/memory_manager/os_agnostic_memory_manager.h" +#include "unit_tests/libult/create_command_stream.h" namespace OCLRT { class OSInterface; diff --git a/unit_tests/os_interface/windows/driver_info_tests.cpp b/unit_tests/os_interface/windows/driver_info_tests.cpp index 4272690d3a..b802a0b765 100644 --- a/unit_tests/os_interface/windows/driver_info_tests.cpp +++ b/unit_tests/os_interface/windows/driver_info_tests.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2017, Intel Corporation +* Copyright (c) 2017 - 2018, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -28,6 +28,7 @@ #include "runtime/helpers/options.h" #include "unit_tests/mocks/mock_device.h" #include "unit_tests/mocks/mock_csr.h" +#include "unit_tests/libult/create_command_stream.h" #include "gtest/gtest.h" namespace OCLRT { diff --git a/unit_tests/platform/platform_tests.cpp b/unit_tests/platform/platform_tests.cpp index 2f753677e7..ae2c2396fd 100644 --- a/unit_tests/platform/platform_tests.cpp +++ b/unit_tests/platform/platform_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Intel Corporation + * Copyright (c) 2017 - 2018, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -28,6 +28,7 @@ #include "unit_tests/fixtures/platform_fixture.h" #include "unit_tests/mocks/mock_async_event_handler.h" #include "unit_tests/mocks/mock_csr.h" +#include "unit_tests/libult/create_command_stream.h" #include "gtest/gtest.h" #include "gmock/gmock.h" diff --git a/unit_tests/sharings/va/va_sharing_tests.cpp b/unit_tests/sharings/va/va_sharing_tests.cpp index 392606b2cf..2a6a1e41b5 100644 --- a/unit_tests/sharings/va/va_sharing_tests.cpp +++ b/unit_tests/sharings/va/va_sharing_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Intel Corporation + * Copyright (c) 2017 - 2018, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -27,6 +27,7 @@ #include "unit_tests/mocks/mock_context.h" #include "unit_tests/sharings/va/mock_va_sharing.h" #include "unit_tests/fixtures/platform_fixture.h" +#include "unit_tests/libult/create_command_stream.h" #include "runtime/sharings/va/va_surface.h" #include "runtime/api/api.h" #include "gtest/gtest.h"