mirror of
https://github.com/intel/compute-runtime.git
synced 2025-11-15 10:14:56 +08:00
Enable direct submission controller
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
3f2536a6ba
commit
5a240e1d66
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@ class DirectSubmissionController {
|
||||
void registerDirectSubmission(CommandStreamReceiver *csr);
|
||||
void unregisterDirectSubmission(CommandStreamReceiver *csr);
|
||||
|
||||
static bool isSupported();
|
||||
|
||||
protected:
|
||||
struct DirectSubmissionState {
|
||||
bool isStopped = false;
|
||||
|
||||
14
shared/source/dll/direct_submission_controller_enabled.cpp
Normal file
14
shared/source/dll/direct_submission_controller_enabled.cpp
Normal 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
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user