Add createAubManager function

- unit tests are using mocked version of createAubManager
- dynamic library, aub and tbx tests are using functional
version using aub_stream

Change-Id: I12d69d84d00645009b026df266b8b64adebb86d4
This commit is contained in:
Hoppe, Mateusz
2018-12-10 17:12:32 +01:00
committed by sys_ocldev
parent 23d72e40b0
commit 82078074bc
16 changed files with 75 additions and 8 deletions

View File

@@ -123,6 +123,7 @@ if(${GENERATE_EXECUTABLE})
add_library(${NEO_DYNAMIC_LIB_NAME} SHARED add_library(${NEO_DYNAMIC_LIB_NAME} SHARED
${NEO_DYNAMIC_LIB__TARGET_OBJECTS} ${NEO_DYNAMIC_LIB__TARGET_OBJECTS}
${IGDRCL_SOURCE_DIR}/runtime/aub/aub_stream_interface.cpp
) )
if(TARGET ${GMMUMD_LIB_NAME}) if(TARGET ${GMMUMD_LIB_NAME})
add_dependencies(${NEO_DYNAMIC_LIB_NAME} ${GMMUMD_LIB_NAME}) add_dependencies(${NEO_DYNAMIC_LIB_NAME} ${GMMUMD_LIB_NAME})

View File

@@ -12,9 +12,14 @@
namespace OCLRT { namespace OCLRT {
AubCenter::AubCenter(const HardwareInfo *pHwInfo, bool localMemoryEnabled, const std::string &aubFileName) { AubCenter::AubCenter(const HardwareInfo *pHwInfo, bool localMemoryEnabled, const std::string &aubFileName) {
if (DebugManager.flags.UseAubStream.get()) { if (DebugManager.flags.UseAubStream.get()) {
aubManager.reset(AubDump::AubManager::create(pHwInfo->pPlatform->eRenderCoreFamily, 1, 1, localMemoryEnabled, pHwInfo->capabilityTable.aubDeviceId, aubFileName)); aubManager.reset(createAubManager(pHwInfo->pPlatform->eRenderCoreFamily, 1, 1, localMemoryEnabled, pHwInfo->capabilityTable.aubDeviceId, aubFileName));
} }
addressMapper = std::make_unique<AddressMapper>(); addressMapper = std::make_unique<AddressMapper>();
streamProvider = std::make_unique<AubFileStreamProvider>(); streamProvider = std::make_unique<AubFileStreamProvider>();
} }
AubCenter::AubCenter() {
addressMapper = std::make_unique<AddressMapper>();
streamProvider = std::make_unique<AubFileStreamProvider>();
}
} // namespace OCLRT } // namespace OCLRT

View File

@@ -14,10 +14,12 @@
namespace OCLRT { namespace OCLRT {
struct HardwareInfo; struct HardwareInfo;
extern AubDump::AubManager *createAubManager(uint32_t gfxFamily, uint32_t devicesCount, size_t memoryBankSizeInGB, bool localMemorySupported, uint32_t deviceId, const std::string &aubFileName);
class AubCenter { class AubCenter {
public: public:
AubCenter(const HardwareInfo *pHwInfo, bool localMemoryEnabled, const std::string &aubFileName); AubCenter(const HardwareInfo *pHwInfo, bool localMemoryEnabled, const std::string &aubFileName);
AubCenter();
virtual ~AubCenter() = default; virtual ~AubCenter() = default;
void initPhysicalAddressAllocator(PhysicalAddressAllocator *pPhysicalAddressAllocator) { void initPhysicalAddressAllocator(PhysicalAddressAllocator *pPhysicalAddressAllocator) {

View File

@@ -0,0 +1,14 @@
/*
* Copyright (C) 2018 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "runtime/aub/aub_center.h"
using namespace AubDump;
namespace OCLRT {
AubManager *createAubManager(uint32_t gfxFamily, uint32_t devicesCount, size_t memoryBankSizeInGB, bool localMemorySupported, uint32_t deviceId, const std::string &aubFileName) {
return AubDump::AubManager::create(gfxFamily, devicesCount, memoryBankSizeInGB, localMemorySupported, deviceId, aubFileName);
}
} // namespace OCLRT

View File

@@ -76,7 +76,15 @@ set(NEO_IGDRCL_TESTS__TARGET_OBJECTS
) )
if(DEFINED AUB_STREAM_DIR) if(DEFINED AUB_STREAM_DIR)
list(APPEND NEO_IGDRCL_TESTS__TARGET_OBJECTS $<TARGET_OBJECTS:${AUB_STREAM_ENABLE_LIB_NAME}>) add_library (aub_stream_mock_lib OBJECT
${IGDRCL_SOURCE_DIR}/unit_tests/aub_stream_mocks/aub_stream_interface_mock.cpp
)
list(APPEND NEO_IGDRCL_TESTS__TARGET_OBJECTS
$<TARGET_OBJECTS:${AUB_STREAM_ENABLE_LIB_NAME}>
$<TARGET_OBJECTS:aub_stream_mock_lib>
)
else()
list(APPEND IGDRCL_SRCS_tests_local ${IGDRCL_SOURCE_DIR}/runtime/aub/aub_stream_interface.cpp)
endif() endif()
add_executable(igdrcl_tests add_executable(igdrcl_tests

View File

@@ -0,0 +1,14 @@
/*
* Copyright (C) 2018 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "unit_tests/mocks/mock_aub_manager.h"
namespace OCLRT {
AubManager *createAubManager(uint32_t gfxFamily, uint32_t devicesCount, size_t memoryBankSizeInGB, bool localMemorySupported, uint32_t deviceId, const std::string &aubFileName) {
return new MockAubManager();
}
} // namespace OCLRT

View File

@@ -10,6 +10,7 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/common.cmake)
list(APPEND IGDRCL_AUB_TESTS__TARGET_OBJECTS list(APPEND IGDRCL_AUB_TESTS__TARGET_OBJECTS
${CMAKE_CURRENT_SOURCE_DIR}/aub_tests_configuration.cpp ${CMAKE_CURRENT_SOURCE_DIR}/aub_tests_configuration.cpp
${IGDRCL_SOURCE_DIR}/runtime/aub/aub_stream_interface.cpp
$<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}> $<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}>
$<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}> $<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}>
$<TARGET_OBJECTS:igdrcl_libult> $<TARGET_OBJECTS:igdrcl_libult>

View File

@@ -269,6 +269,8 @@ HWTEST_F(AubCommandStreamReceiverTests, givenGraphicsAllocationWhenMakeResidentC
HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenMultipleInstancesInitializeTheirEnginesThenUniqueGlobalGttAdressesAreGenerated) { HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenMultipleInstancesInitializeTheirEnginesThenUniqueGlobalGttAdressesAreGenerated) {
ExecutionEnvironment executionEnvironment; ExecutionEnvironment executionEnvironment;
executionEnvironment.aubCenter.reset(new AubCenter());
auto aubCsr1 = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(**platformDevices, "", true, executionEnvironment); auto aubCsr1 = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(**platformDevices, "", true, executionEnvironment);
auto aubCsr2 = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(**platformDevices, "", true, executionEnvironment); auto aubCsr2 = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(**platformDevices, "", true, executionEnvironment);
auto engineType = OCLRT::ENGINE_RCS; auto engineType = OCLRT::ENGINE_RCS;
@@ -816,6 +818,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenAllocat
HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenAUBDumpCaptureFileNameHasBeenSpecifiedThenItShouldBeUsedToOpenTheFileWithAubCapture) { HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenAUBDumpCaptureFileNameHasBeenSpecifiedThenItShouldBeUsedToOpenTheFileWithAubCapture) {
DebugManagerStateRestore stateRestore; DebugManagerStateRestore stateRestore;
DebugManager.flags.AUBDumpCaptureFileName.set("file_name.aub"); DebugManager.flags.AUBDumpCaptureFileName.set("file_name.aub");
pDevice->executionEnvironment->aubCenter.reset(new AubCenter());
std::unique_ptr<MockAubCsr<FamilyType>> aubCsr(static_cast<MockAubCsr<FamilyType> *>(AUBCommandStreamReceiver::create(*platformDevices[0], "", true, *pDevice->executionEnvironment))); std::unique_ptr<MockAubCsr<FamilyType>> aubCsr(static_cast<MockAubCsr<FamilyType> *>(AUBCommandStreamReceiver::create(*platformDevices[0], "", true, *pDevice->executionEnvironment)));
EXPECT_NE(nullptr, aubCsr); EXPECT_NE(nullptr, aubCsr);

View File

@@ -647,6 +647,8 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenProcess
HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenWriteMemoryIsCalledThenGraphicsAllocationSizeIsReadCorrectly) { HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenWriteMemoryIsCalledThenGraphicsAllocationSizeIsReadCorrectly) {
std::unique_ptr<MemoryManager> memoryManager(nullptr); std::unique_ptr<MemoryManager> memoryManager(nullptr);
pDevice->executionEnvironment->aubCenter.reset(new AubCenter());
auto aubCsr = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(*platformDevices[0], "", false, *pDevice->executionEnvironment); auto aubCsr = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(*platformDevices[0], "", false, *pDevice->executionEnvironment);
memoryManager.reset(aubCsr->createMemoryManager(false, false)); memoryManager.reset(aubCsr->createMemoryManager(false, false));
@@ -698,6 +700,7 @@ HWTEST_F(AubCommandStreamReceiverTests, whenAubCommandStreamReceiverIsCreatedThe
} }
HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenEngineIsInitializedThenDumpHandleIsGenerated) { HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenEngineIsInitializedThenDumpHandleIsGenerated) {
executionEnvironment.aubCenter.reset(new AubCenter());
auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, "", true, executionEnvironment); auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, "", true, executionEnvironment);
EXPECT_NE(nullptr, aubCsr); EXPECT_NE(nullptr, aubCsr);
@@ -821,6 +824,8 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAubCsrWhenAskedForMemoryExpectation
} }
uint32_t inputCompareOperation = 0; uint32_t inputCompareOperation = 0;
}; };
pDevice->getExecutionEnvironment()->aubCenter.reset(new AubCenter());
void *mockAddress = reinterpret_cast<void *>(1); void *mockAddress = reinterpret_cast<void *>(1);
uint32_t compareNotEqual = AubMemDump::CmdServicesMemTraceMemoryCompare::CompareOperationValues::CompareNotEqual; uint32_t compareNotEqual = AubMemDump::CmdServicesMemTraceMemoryCompare::CompareOperationValues::CompareNotEqual;
uint32_t compareEqual = AubMemDump::CmdServicesMemTraceMemoryCompare::CompareOperationValues::CompareEqual; uint32_t compareEqual = AubMemDump::CmdServicesMemTraceMemoryCompare::CompareOperationValues::CompareEqual;

View File

@@ -264,6 +264,7 @@ HWTEST_F(AubFileStreamTests, givenAubCommandStreamReceiverWhenFlushIsCalledThenF
} }
HWTEST_F(AubFileStreamTests, givenAubCommandStreamReceiverWhenExpectMemoryIsCalledThenPageWalkIsCallingStreamsExpectMemory) { HWTEST_F(AubFileStreamTests, givenAubCommandStreamReceiverWhenExpectMemoryIsCalledThenPageWalkIsCallingStreamsExpectMemory) {
pDevice->executionEnvironment->aubCenter.reset(new AubCenter());
auto aubCsr = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(**platformDevices, "", true, *pDevice->executionEnvironment); auto aubCsr = std::make_unique<AUBCommandStreamReceiverHw<FamilyType>>(**platformDevices, "", true, *pDevice->executionEnvironment);
std::unique_ptr<AUBCommandStreamReceiver::AubFileStream> mockAubFileStream(std::make_unique<MockAubFileStream>()); std::unique_ptr<AUBCommandStreamReceiver::AubFileStream> mockAubFileStream(std::make_unique<MockAubFileStream>());

View File

@@ -23,6 +23,7 @@
#include "unit_tests/mocks/mock_execution_environment.h" #include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
#include "unit_tests/utilities/destructor_counted.h" #include "unit_tests/utilities/destructor_counted.h"
#include "unit_tests/helpers/debug_manager_state_restore.h"
#include "unit_tests/helpers/unit_test_helper.h" #include "unit_tests/helpers/unit_test_helper.h"
using namespace OCLRT; using namespace OCLRT;
@@ -132,7 +133,10 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeAubCenterIsCal
EXPECT_STREQ(executionEnvironment.aubFileNameReceived.c_str(), "test.aub"); EXPECT_STREQ(executionEnvironment.aubFileNameReceived.c_str(), "test.aub");
} }
TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenGetAubManagerIsCalledThenReturnNull) { TEST(ExecutionEnvironment, givenUseAubStreamFalseWhenGetAubManagerIsCalledThenReturnNull) {
DebugManagerStateRestore dbgRestore;
DebugManager.flags.UseAubStream.set(false);
ExecutionEnvironment executionEnvironment; ExecutionEnvironment executionEnvironment;
executionEnvironment.initAubCenter(platformDevices[0], false, ""); executionEnvironment.initAubCenter(platformDevices[0], false, "");
auto aubManager = executionEnvironment.aubCenter->getAubManager(); auto aubManager = executionEnvironment.aubCenter->getAubManager();

View File

@@ -7,6 +7,7 @@
set(IGDRCL_SRCS_linux_tests set(IGDRCL_SRCS_linux_tests
${CMAKE_CURRENT_SOURCE_DIR}/linux_tests_configuration.cpp ${CMAKE_CURRENT_SOURCE_DIR}/linux_tests_configuration.cpp
${CMAKE_CURRENT_SOURCE_DIR}/main_linux.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main_linux.cpp
${IGDRCL_SOURCE_DIR}/unit_tests/aub_stream_mocks/aub_stream_interface_mock.cpp
${IGDRCL_SOURCE_DIR}/unit_tests/os_interface/linux/allocator_helper.cpp ${IGDRCL_SOURCE_DIR}/unit_tests/os_interface/linux/allocator_helper.cpp
${IGDRCL_SOURCE_DIR}/unit_tests/os_interface/linux/options.cpp ${IGDRCL_SOURCE_DIR}/unit_tests/os_interface/linux/options.cpp
) )
@@ -21,6 +22,7 @@ set(IGDRCL_SRCS_linux_dll_tests
${IGDRCL_SOURCE_DIR}/runtime/dll/linux/allocator_helper.cpp ${IGDRCL_SOURCE_DIR}/runtime/dll/linux/allocator_helper.cpp
${IGDRCL_SOURCE_DIR}/runtime/dll/linux/drm_neo_create.cpp ${IGDRCL_SOURCE_DIR}/runtime/dll/linux/drm_neo_create.cpp
${IGDRCL_SOURCE_DIR}/runtime/dll/linux/options.cpp ${IGDRCL_SOURCE_DIR}/runtime/dll/linux/options.cpp
${IGDRCL_SOURCE_DIR}/unit_tests/aub_stream_mocks/aub_stream_interface_mock.cpp
) )
if(IGDRCL__LIBVA_FOUND) if(IGDRCL__LIBVA_FOUND)

View File

@@ -146,6 +146,8 @@ struct AubExecutionEnvironment {
template <typename CsrType> template <typename CsrType>
std::unique_ptr<AubExecutionEnvironment> getEnvironment(bool createTagAllocation, bool allocateCommandBuffer, bool standalone) { std::unique_ptr<AubExecutionEnvironment> getEnvironment(bool createTagAllocation, bool allocateCommandBuffer, bool standalone) {
std::unique_ptr<ExecutionEnvironment> executionEnvironment(new ExecutionEnvironment); std::unique_ptr<ExecutionEnvironment> executionEnvironment(new ExecutionEnvironment);
executionEnvironment->aubCenter.reset(new AubCenter());
executionEnvironment->commandStreamReceivers.resize(1); executionEnvironment->commandStreamReceivers.resize(1);
executionEnvironment->commandStreamReceivers[0][0] = std::make_unique<CsrType>(*platformDevices[0], "", standalone, *executionEnvironment); executionEnvironment->commandStreamReceivers[0][0] = std::make_unique<CsrType>(*platformDevices[0], "", standalone, *executionEnvironment);
executionEnvironment->memoryManager.reset(executionEnvironment->commandStreamReceivers[0][0]->createMemoryManager(false, false)); executionEnvironment->memoryManager.reset(executionEnvironment->commandStreamReceivers[0][0]->createMemoryManager(false, false));

View File

@@ -8,9 +8,8 @@ project(igdrcl_mt_tests)
add_executable(igdrcl_mt_tests EXCLUDE_FROM_ALL add_executable(igdrcl_mt_tests EXCLUDE_FROM_ALL
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${IGDRCL_SOURCE_DIR}/unit_tests/ult_configuration.cpp ${IGDRCL_SOURCE_DIR}/unit_tests/ult_configuration.cpp
${IGDRCL_SOURCE_DIR}/runtime/aub/aub_stream_interface.cpp
$<TARGET_OBJECTS:igdrcl_libult> $<TARGET_OBJECTS:igdrcl_libult>
$<TARGET_OBJECTS:igdrcl_libult_cs> $<TARGET_OBJECTS:igdrcl_libult_cs>
$<TARGET_OBJECTS:igdrcl_libult_env> $<TARGET_OBJECTS:igdrcl_libult_env>

View File

@@ -7,6 +7,7 @@
add_executable(igdrcl_tbx_tests add_executable(igdrcl_tbx_tests
${CMAKE_CURRENT_SOURCE_DIR}/main_tbx.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main_tbx.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tbx_tests_configuration.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tbx_tests_configuration.cpp
${IGDRCL_SOURCE_DIR}/runtime/aub/aub_stream_interface.cpp
${IGDRCL_SOURCE_DIR}/runtime/dll/create_command_stream.cpp ${IGDRCL_SOURCE_DIR}/runtime/dll/create_command_stream.cpp
${IGDRCL_SOURCE_DIR}/unit_tests/options.cpp ${IGDRCL_SOURCE_DIR}/unit_tests/options.cpp
$<TARGET_OBJECTS:igdrcl_libult> $<TARGET_OBJECTS:igdrcl_libult>

View File

@@ -7,14 +7,19 @@
if(WIN32) if(WIN32)
project(igdrcl_windows_dll_tests) project(igdrcl_windows_dll_tests)
set(NEO_IGDRCL_WINDOWS_DLL_TESTS_TARGET_OBJECTS
$<TARGET_OBJECTS:igdrcl_libult>
$<TARGET_OBJECTS:igdrcl_libult_cs>
$<TARGET_OBJECTS:igdrcl_libult_env>
)
add_executable(igdrcl_windows_dll_tests add_executable(igdrcl_windows_dll_tests
${NEO_IGDRCL_WINDOWS_DLL_TESTS_TARGET_OBJECTS}
${IGDRCL_SOURCE_DIR}/runtime/aub/aub_stream_interface.cpp
${IGDRCL_SOURCE_DIR}/runtime/os_interface/windows/wddm/wddm_create.cpp ${IGDRCL_SOURCE_DIR}/runtime/os_interface/windows/wddm/wddm_create.cpp
${IGDRCL_SOURCE_DIR}/unit_tests/ult_configuration.cpp ${IGDRCL_SOURCE_DIR}/unit_tests/ult_configuration.cpp
${CMAKE_CURRENT_SOURCE_DIR}/wddm_create_tests.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wddm_create_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/os_interface_tests.cpp ${CMAKE_CURRENT_SOURCE_DIR}/os_interface_tests.cpp
$<TARGET_OBJECTS:igdrcl_libult>
$<TARGET_OBJECTS:igdrcl_libult_cs>
$<TARGET_OBJECTS:igdrcl_libult_env>
) )
target_link_libraries(igdrcl_windows_dll_tests ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks gmock-gtest ${IGDRCL_EXTRA_LIBS}) target_link_libraries(igdrcl_windows_dll_tests ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks gmock-gtest ${IGDRCL_EXTRA_LIBS})