Enable direct submission controller

Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2021-10-25 15:33:38 +00:00
committed by Compute-Runtime-Automation
parent 3f2536a6ba
commit 5a240e1d66
14 changed files with 53 additions and 13 deletions

View File

@@ -208,6 +208,7 @@ if(BUILD_WITH_L0)
SHARED
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${NEO_SHARED_DIRECTORY}/dll/create_command_stream.cpp
${NEO_SHARED_DIRECTORY}/dll/direct_submission_controller_enabled.cpp
${NEO_SHARED_DIRECTORY}/dll/options_dll.cpp
${NEO_SHARED_DIRECTORY}/gmm_helper/page_table_mngr.cpp
${NEO_SHARED_DIRECTORY}/gmm_helper/resource_info.cpp

View File

@@ -15,6 +15,7 @@ set(RUNTIME_SRCS_DLL_BASE
${NEO_SHARED_DIRECTORY}/dll/create_deferred_deleter.cpp
${NEO_SHARED_DIRECTORY}/dll/create_memory_manager_${DRIVER_MODEL}.cpp
${NEO_SHARED_DIRECTORY}/dll/create_tbx_sockets.cpp
${NEO_SHARED_DIRECTORY}/dll/direct_submission_controller_enabled.cpp
${NEO_SHARED_DIRECTORY}/dll/source_level_debugger_dll.cpp
${NEO_SHARED_DIRECTORY}/dll/get_devices.cpp
${NEO_SHARED_DIRECTORY}/built_ins/sip_init.cpp

View File

@@ -403,7 +403,7 @@ HWTEST_F(InitDirectSubmissionTest, givenDirectSubmissionControllerEnabledWhenIni
EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Regular},
PreemptionMode::ThreadGroup, device->getDeviceBitfield())));
auto controller = static_cast<DirectSubmissionControllerMock *>(device->executionEnvironment->getDirectSubmissionController());
auto controller = static_cast<DirectSubmissionControllerMock *>(device->executionEnvironment->initializeDirectSubmissionController());
controller->keepControlling.store(false);
EXPECT_EQ(controller->directSubmissions.size(), 0u);
@@ -444,7 +444,7 @@ HWTEST_F(InitDirectSubmissionTest, givenDirectSubmissionControllerDisabledWhenIn
EXPECT_TRUE(ret);
EXPECT_TRUE(csr->isDirectSubmissionEnabled());
auto controller = static_cast<DirectSubmissionControllerMock *>(device->executionEnvironment->getDirectSubmissionController());
auto controller = static_cast<DirectSubmissionControllerMock *>(device->executionEnvironment->initializeDirectSubmissionController());
EXPECT_EQ(controller, nullptr);
}

View File

@@ -163,20 +163,20 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeMemoryManagerI
EXPECT_EQ(enableLocalMemory, executionEnvironment->memoryManager->isLocalMemorySupported(device->getRootDeviceIndex()));
}
TEST(ExecutionEnvironment, givenEnableDirectSubmissionControllerSetWhenGetDirectSubmissionControllerThenNotNull) {
TEST(ExecutionEnvironment, givenEnableDirectSubmissionControllerSetWhenInitializeDirectSubmissionControllerThenNotNull) {
DebugManagerStateRestore restorer;
DebugManager.flags.EnableDirectSubmissionController.set(1);
auto controller = platform()->peekExecutionEnvironment()->getDirectSubmissionController();
auto controller = platform()->peekExecutionEnvironment()->initializeDirectSubmissionController();
EXPECT_NE(controller, nullptr);
}
TEST(ExecutionEnvironment, givenEnableDirectSubmissionControllerSetZeroWhenGetDirectSubmissionControllerThenNull) {
TEST(ExecutionEnvironment, givenEnableDirectSubmissionControllerSetZeroWhenInitializeDirectSubmissionControllerThenNull) {
DebugManagerStateRestore restorer;
DebugManager.flags.EnableDirectSubmissionController.set(0);
auto controller = platform()->peekExecutionEnvironment()->getDirectSubmissionController();
auto controller = platform()->peekExecutionEnvironment()->initializeDirectSubmissionController();
EXPECT_EQ(controller, nullptr);
}

View File

@@ -22,6 +22,7 @@ add_executable(igdrcl_${target_name}
${CMAKE_CURRENT_SOURCE_DIR}/os_interface_linux_tests.cpp
${NEO_SHARED_DIRECTORY}/os_interface/linux/sys_calls_linux.cpp
${NEO_SHARED_DIRECTORY}/dll/create_memory_manager_drm.cpp
${NEO_SHARED_DIRECTORY}/dll/direct_submission_controller_enabled.cpp
${NEO_SHARED_DIRECTORY}/dll/linux/drm_neo_create.cpp
${NEO_SHARED_DIRECTORY}/dll/linux/options_linux.cpp
${NEO_SHARED_DIRECTORY}/dll/linux/os_interface.cpp

View File

@@ -5,6 +5,7 @@
*
*/
#include "shared/source/direct_submission/direct_submission_controller.h"
#include "shared/source/execution_environment/execution_environment.h"
#include "shared/source/helpers/aligned_memory.h"
#include "shared/source/helpers/basic_math.h"
@@ -797,6 +798,10 @@ TEST_F(DrmTests, whenCreateDrmIsCalledThenProperHwInfoIsSetup) {
EXPECT_LT(0u, currentHwInfo->gtSystemInfo.SubSliceCount);
}
TEST(DirectSubmissionControllerTest, whenCheckDirectSubmissionControllerSupportThenReturnsTrue) {
EXPECT_TRUE(DirectSubmissionController::isSupported());
}
TEST(PlatformsDestructor, whenGlobalPlatformsDestructorIsCalledThenGlobalPlatformsAreDestroyed) {
EXPECT_NE(nullptr, platformsImpl);
platformsDestructor();

View File

@@ -20,6 +20,7 @@ if(WIN32)
${CMAKE_CURRENT_SOURCE_DIR}/wddm_create_tests.cpp
${NEO_IGDRCL_WINDOWS_DLL_TESTS_TARGET_OBJECTS}
${NEO_SHARED_DIRECTORY}/aub/aub_stream_interface.cpp
${NEO_SHARED_DIRECTORY}/dll/direct_submission_controller_enabled.cpp
${NEO_SHARED_DIRECTORY}/dll/get_devices.cpp
${NEO_SHARED_DIRECTORY}/dll/windows/os_interface.cpp
${NEO_SHARED_DIRECTORY}/dll/create_command_stream.cpp

View File

@@ -41,7 +41,7 @@ namespace NEO {
template <typename GfxFamily>
CommandStreamReceiverHw<GfxFamily>::~CommandStreamReceiverHw() {
auto directSubmissionController = executionEnvironment.getDirectSubmissionController();
auto directSubmissionController = executionEnvironment.directSubmissionController.get();
if (directSubmissionController) {
directSubmissionController->unregisterDirectSubmission(this);
}
@@ -1438,7 +1438,7 @@ inline bool CommandStreamReceiverHw<GfxFamily>::initDirectSubmission(Device &dev
directSubmission = DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::create(device, osContext);
ret = directSubmission->initialize(submitOnInit);
}
auto directSubmissionController = executionEnvironment.getDirectSubmissionController();
auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController();
if (directSubmissionController) {
directSubmissionController->registerDirectSubmission(this);
}

View File

@@ -25,6 +25,8 @@ class DirectSubmissionController {
void registerDirectSubmission(CommandStreamReceiver *csr);
void unregisterDirectSubmission(CommandStreamReceiver *csr);
static bool isSupported();
protected:
struct DirectSubmissionState {
bool isStopped = false;

View File

@@ -0,0 +1,14 @@
/*
* Copyright (C) 2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/direct_submission/direct_submission_controller.h"
namespace NEO {
bool DirectSubmissionController::isSupported() {
return true;
}
} // namespace NEO

View File

@@ -86,8 +86,8 @@ void ExecutionEnvironment::calculateMaxOsContextCount() {
}
}
DirectSubmissionController *ExecutionEnvironment::getDirectSubmissionController() {
auto initializeDirectSubmissionController = false;
DirectSubmissionController *ExecutionEnvironment::initializeDirectSubmissionController() {
auto initializeDirectSubmissionController = DirectSubmissionController::isSupported();
if (DebugManager.flags.EnableDirectSubmissionController.get() != -1) {
initializeDirectSubmissionController = DebugManager.flags.EnableDirectSubmissionController.get();

View File

@@ -31,15 +31,14 @@ class ExecutionEnvironment : public ReferenceTrackedObject<ExecutionEnvironment>
debuggingEnabled = true;
}
bool isDebuggingEnabled() { return debuggingEnabled; }
DirectSubmissionController *getDirectSubmissionController();
DirectSubmissionController *initializeDirectSubmissionController();
std::unique_ptr<MemoryManager> memoryManager;
std::unique_ptr<DirectSubmissionController> directSubmissionController;
std::unique_ptr<OsEnvironment> osEnvironment;
std::vector<std::unique_ptr<RootDeviceEnvironment>> rootDeviceEnvironments;
protected:
std::unique_ptr<DirectSubmissionController> directSubmissionController;
bool debuggingEnabled = false;
};
} // namespace NEO

View File

@@ -145,6 +145,7 @@ set(neo_libult_SRCS_LINUX
${NEO_SHARED_TEST_DIRECTORY}/common/libult/os_interface.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/linux/mock_drm_memory_manager.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/linux/mock_drm_memory_manager.h
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/mock_direct_submission_controller_enabled.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/os_interface/linux/create_drm_memory_manager.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/os_interface/linux/drm_neo_create.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/os_interface/linux/options.cpp
@@ -154,6 +155,7 @@ set(neo_libult_SRCS_LINUX
set_property(GLOBAL APPEND PROPERTY neo_libult_SRCS_LINUX ${neo_libult_SRCS_LINUX})
set(neo_libult_SRCS_WINDOWS
${NEO_SHARED_TEST_DIRECTORY}/common/libult/os_interface.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/mock_direct_submission_controller_enabled.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/mock_wddm.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/os_interface/windows/create_wddm_memory_manager.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/os_interface/windows/options.cpp

View File

@@ -0,0 +1,14 @@
/*
* Copyright (C) 2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/direct_submission/direct_submission_controller.h"
namespace NEO {
bool DirectSubmissionController::isSupported() {
return false;
}
} // namespace NEO