mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Enable BCS split WA in OCL
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
7faf861408
commit
abfcaf1265
@ -210,6 +210,7 @@ if(BUILD_WITH_L0)
|
||||
SHARED
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${NEO_SHARED_DIRECTORY}/dll/create_command_stream.cpp
|
||||
${NEO_SHARED_DIRECTORY}/dll/device_dll.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
|
||||
|
@ -16,6 +16,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/device_dll.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
|
||||
|
@ -307,6 +307,8 @@ HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenCheckIsSplitEnqueueBlit
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.SplitBcsCopy.set(1);
|
||||
auto *cmdQHw = static_cast<CommandQueueHw<FamilyType> *>(this->pCmdQ);
|
||||
VariableBackup<UltHwConfig> backup{&ultHwConfig};
|
||||
ultHwConfig.useBlitSplit = true;
|
||||
{
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::HostToHost, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::LocalToLocal, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
@ -332,6 +334,14 @@ HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenCheckIsSplitEnqueueBlit
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::LocalToHost, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::HostToLocal, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
}
|
||||
{
|
||||
DebugManager.flags.SplitBcsCopy.set(-1);
|
||||
ultHwConfig.useBlitSplit = false;
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::HostToHost, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::LocalToLocal, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::LocalToHost, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
EXPECT_FALSE(cmdQHw->isSplitEnqueueBlitNeeded(TransferDirection::HostToLocal, 64 * MemoryConstants::megaByte, *cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)));
|
||||
}
|
||||
}
|
||||
|
||||
char hostPtr[16 * MemoryConstants::megaByte];
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2018-2021 Intel Corporation
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
@ -23,6 +23,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/device_dll.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
|
||||
|
@ -895,6 +895,10 @@ TEST(CommandQueueTest, whenCheckEngineTimestampWaitEnabledThenReturnsTrue) {
|
||||
EXPECT_TRUE(CommandQueue::isTimestampWaitEnabled());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, whenCheckBlitSplitEnabledThenReturnsTrue) {
|
||||
EXPECT_TRUE(Device::isBlitSplitEnabled());
|
||||
}
|
||||
|
||||
TEST(PlatformsDestructor, whenGlobalPlatformsDestructorIsCalledThenGlobalPlatformsAreDestroyed) {
|
||||
EXPECT_NE(nullptr, platformsImpl);
|
||||
platformsDestructor();
|
||||
|
@ -21,6 +21,7 @@ if(WIN32)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/os_interface_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/wddm_create_tests.cpp
|
||||
${NEO_IGDRCL_WINDOWS_DLL_TESTS_TARGET_OBJECTS}
|
||||
${NEO_SHARED_DIRECTORY}/dll/device_dll.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
|
||||
|
@ -397,7 +397,8 @@ uint64_t Device::getProfilingTimerClock() {
|
||||
|
||||
bool Device::isBcsSplitSupported() {
|
||||
auto bcsSplit = HwInfoConfig::get(getHardwareInfo().platform.eProductFamily)->isBlitSplitEnqueueWARequired(getHardwareInfo()) &&
|
||||
ApiSpecificConfig::isBcsSplitWaSupported();
|
||||
ApiSpecificConfig::isBcsSplitWaSupported() &&
|
||||
Device::isBlitSplitEnabled();
|
||||
|
||||
if (DebugManager.flags.SplitBcsCopy.get() != -1) {
|
||||
bcsSplit = DebugManager.flags.SplitBcsCopy.get();
|
||||
|
@ -106,6 +106,7 @@ class Device : public ReferenceTrackedObject<Device> {
|
||||
bool isFullRangeSvm() const {
|
||||
return getRootDeviceEnvironment().isFullRangeSvm();
|
||||
}
|
||||
static bool isBlitSplitEnabled();
|
||||
bool isBcsSplitSupported();
|
||||
bool areSharedSystemAllocationsAllowed() const;
|
||||
template <typename SpecializedDeviceT>
|
||||
|
16
shared/source/dll/device_dll.cpp
Normal file
16
shared/source/dll/device_dll.cpp
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/device/device.h"
|
||||
|
||||
namespace NEO {
|
||||
|
||||
bool Device::isBlitSplitEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
@ -9,7 +9,6 @@
|
||||
|
||||
#include "shared/source/aub/aub_center.h"
|
||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/source/device/root_device.h"
|
||||
#include "shared/source/execution_environment/root_device_environment.h"
|
||||
#include "shared/source/helpers/compiler_hw_info_config.h"
|
||||
|
@ -165,6 +165,11 @@ bool HwInfoConfigHw<gfxProduct>::isBlitCopyRequiredForLocalMemory(const Hardware
|
||||
return false;
|
||||
}
|
||||
|
||||
template <>
|
||||
bool HwInfoConfigHw<gfxProduct>::isBlitSplitEnqueueWARequired(const HardwareInfo &hwInfo) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
template <>
|
||||
bool HwInfoConfigHw<gfxProduct>::isImplicitScalingSupported(const HardwareInfo &hwInfo) const {
|
||||
return getSteppingFromHwRevId(hwInfo) >= REVISION_B;
|
||||
|
@ -36,7 +36,7 @@ void NEO::BaseUltConfigListener::OnTestEnd(const ::testing::TestInfo &) {
|
||||
|
||||
// Ensure that global state is restored
|
||||
UltHwConfig expectedState{};
|
||||
static_assert(sizeof(UltHwConfig) == 12 * sizeof(bool), ""); // Ensure that there is no internal padding
|
||||
static_assert(sizeof(UltHwConfig) == 13 * sizeof(bool), ""); // Ensure that there is no internal padding
|
||||
EXPECT_EQ(0, memcmp(&expectedState, &ultHwConfig, sizeof(UltHwConfig)));
|
||||
|
||||
EXPECT_EQ(0, memcmp(&referencedHwInfo.platform, &defaultHwInfo->platform, sizeof(PLATFORM)));
|
||||
|
@ -13,6 +13,7 @@ struct UltHwConfig {
|
||||
bool useMockedPrepareDeviceEnvironmentsFunc = true;
|
||||
bool forceOsAgnosticMemoryManager = true;
|
||||
bool useWaitForTimestamps = false;
|
||||
bool useBlitSplit = false;
|
||||
|
||||
bool csrFailInitDirectSubmission = false;
|
||||
bool csrBaseCallDirectSubmissionAvailable = false;
|
||||
|
@ -175,6 +175,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/device_ult.cpp
|
||||
${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_memory_manager_fixture.cpp
|
||||
@ -186,6 +187,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/device_ult.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
|
||||
|
17
shared/test/common/mocks/device_ult.cpp
Normal file
17
shared/test/common/mocks/device_ult.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/test/common/helpers/ult_hw_config.h"
|
||||
|
||||
namespace NEO {
|
||||
|
||||
bool Device::isBlitSplitEnabled() {
|
||||
return ultHwConfig.useBlitSplit;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
@ -10,6 +10,7 @@ if(TESTS_PVC)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/device_binary_format_ar_tests_pvc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/device_tests_pvc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dispatch_walker_tests_pvc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/excludes_xe_hpc_core_pvc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_tests_pvc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/product_config_helper_tests_pvc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/product_config_tests_pvc.cpp
|
||||
|
@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/common/test_macros/hw_test_base.h"
|
||||
|
||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenAskedIfIsBlitSplitEnqueueWARequiredThenReturnFalse, IGFX_PVC);
|
@ -83,6 +83,11 @@ PVCTEST_F(HwInfoConfigTestLinuxPvc, givenOsInterfaceIsNullWhenGetDeviceMemoryPhy
|
||||
EXPECT_EQ(0u, hwInfoConfig->getDeviceMemoryPhysicalSizeInBytes(nullptr, 0));
|
||||
}
|
||||
|
||||
PVCTEST_F(HwInfoConfigTestLinuxPvc, givenHwInfoConfigWhenAskedIsBlitSplitEnqueueWARequiredThenReturnTrue) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
EXPECT_TRUE(hwInfoConfig->isBlitSplitEnqueueWARequired(pInHwInfo));
|
||||
}
|
||||
|
||||
PVCTEST_F(HwInfoConfigTestLinuxPvc, givenOsInterfaceIsNullWhenGetDeviceMemoryMaxBandWidthInBytesPerSecondIsCalledThenReturnZero) {
|
||||
auto hwInfoConfig = HwInfoConfig::get(productFamily);
|
||||
auto testHwInfo = *defaultHwInfo;
|
||||
|
Reference in New Issue
Block a user