compute-runtime/shared/test/common/fixtures/aub_fixtures/multicontext_aub_fixture.cpp

160 lines
6.8 KiB
C++

/*
* Copyright (C) 2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/test/common/fixtures/aub_fixtures/multicontext_aub_fixture.h"
#include "shared/source/command_stream/aub_command_stream_receiver.h"
#include "shared/source/helpers/api_specific_config.h"
#include "shared/source/helpers/gfx_core_helper.h"
#include "shared/source/helpers/hw_info.h"
#include "shared/source/release_helper/release_helper.h"
#include "shared/test/common/helpers/ult_hw_config.h"
#include "shared/test/common/helpers/variable_backup.h"
#include "shared/test/common/mocks/mock_device.h"
#include "shared/test/common/tests_configuration.h"
namespace NEO {
void MulticontextAubFixture::setUp(uint32_t numberOfTiles, EnabledCommandStreamers enabledCommandStreamers, bool enableCompression) {
this->numberOfEnabledTiles = numberOfTiles;
const ::testing::TestInfo *const testInfo = ::testing::UnitTest::GetInstance()->current_test_info();
debugManager.flags.CsrDispatchMode.set(static_cast<int32_t>(DispatchMode::batchedDispatch));
debugManager.flags.CreateMultipleSubDevices.set(numberOfTiles);
HardwareInfo localHwInfo = *defaultHwInfo;
if (debugManager.flags.BlitterEnableMaskOverride.get() > 0) {
localHwInfo.featureTable.ftrBcsInfo = debugManager.flags.BlitterEnableMaskOverride.get();
}
if (numberOfEnabledTiles > 1 && localHwInfo.gtSystemInfo.MultiTileArchInfo.IsValid == 0) {
skipped = true;
GTEST_SKIP();
}
if (EnabledCommandStreamers::single != enabledCommandStreamers) {
overridePlatformConfigForAllEnginesSupport(localHwInfo);
}
if (numberOfTiles > 1) {
localHwInfo.gtSystemInfo.MultiTileArchInfo.IsValid = (numberOfEnabledTiles > 1) ? 1 : 0;
localHwInfo.gtSystemInfo.MultiTileArchInfo.TileCount = numberOfEnabledTiles;
localHwInfo.gtSystemInfo.MultiTileArchInfo.TileMask = 0;
for (uint32_t i = 0; i < numberOfEnabledTiles; i++) {
localHwInfo.gtSystemInfo.MultiTileArchInfo.TileMask |= (1 << i);
}
}
debugManager.flags.RenderCompressedBuffersEnabled.set(enableCompression);
debugManager.flags.RenderCompressedImagesEnabled.set(enableCompression);
debugManager.flags.EnableBlitterForEnqueueOperations.set(false);
auto executionEnvironment = std::unique_ptr<ExecutionEnvironment>(MockDevice::prepareExecutionEnvironment(&localHwInfo, rootDeviceIndex));
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->setRcsExposure();
localHwInfo = *executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo();
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->getHelper<GfxCoreHelper>();
auto renderEngine = aub_stream::NUM_ENGINES;
isCcs1Supported = false;
for (auto &engine : gfxCoreHelper.getGpgpuEngineInstances(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex])) {
if (!EngineHelpers::isCcs(engine.first)) {
renderEngine = engine.first;
}
if (engine.first == aub_stream::ENGINE_CCS1) {
isCcs1Supported = true;
}
}
isRenderEngineSupported = (renderEngine != aub_stream::NUM_ENGINES);
auto firstEngine = isRenderEngineSupported ? renderEngine : aub_stream::ENGINE_CCS;
std::stringstream strfilename;
strfilename << ApiSpecificConfig::getAubPrefixForSpecificApi();
strfilename << testInfo->test_case_name() << "_" << testInfo->name() << "_";
auto firstEngineName = gfxCoreHelper.getCsTraits(firstEngine).name;
auto secondEngineName = gfxCoreHelper.getCsTraits(aub_stream::ENGINE_CCS).name;
if (EnabledCommandStreamers::single == enabledCommandStreamers) { // name_RCS.aub or name_CCCS.aub or name_CCS.aub
strfilename << firstEngineName;
} else if (EnabledCommandStreamers::dual == enabledCommandStreamers) { // name_RCS_CCS.aub or name_CCCS_CCS.aub or name_CCS0_1.aub
strfilename << firstEngineName;
if (isRenderEngineSupported) {
strfilename << "_" << secondEngineName;
} else {
strfilename << "0_1";
}
} else if (EnabledCommandStreamers::all == enabledCommandStreamers) { // name_RCS_CCS0_3.aub or name_CCCS_CCS0_3.aub or name_CCS0_3.aub
strfilename << firstEngineName;
if (isRenderEngineSupported) {
strfilename << "_" << secondEngineName;
}
strfilename << "0_3";
}
auto filename = AUBCommandStreamReceiver::createFullFilePath(localHwInfo, strfilename.str(), rootDeviceIndex);
debugManager.flags.AUBDumpCaptureFileName.set(filename);
localHwInfo.capabilityTable.blitterOperationsSupported = true;
if (debugManager.flags.EnableBlitterOperationsSupport.get() != -1) {
localHwInfo.capabilityTable.blitterOperationsSupported = !!debugManager.flags.EnableBlitterOperationsSupport.get();
}
createDevices(localHwInfo, numberOfTiles);
}
void MulticontextAubFixture::overridePlatformConfigForAllEnginesSupport(HardwareInfo &localHwInfo) {
const ::testing::TestInfo *const testInfo = ::testing::UnitTest::GetInstance()->current_test_info();
printf("\nWARNING: Platform configuration for %s_%s test forced to %dtx8x4x16\n",
testInfo->test_case_name(), testInfo->name(), numberOfEnabledTiles);
bool setupCalled = false;
auto releaseHelper = ReleaseHelper::create(localHwInfo.ipVersion);
if (localHwInfo.platform.eRenderCoreFamily == IGFX_XE_HPG_CORE) {
#ifdef SUPPORT_DG2
if (localHwInfo.platform.eProductFamily == IGFX_DG2) {
ASSERT_TRUE(numberOfEnabledTiles == 1);
setupCalled = true;
Dg2HwConfig::setupHardwareInfo(&localHwInfo, true, releaseHelper.get());
// Mock values
localHwInfo.gtSystemInfo.SliceCount = 8;
localHwInfo.gtSystemInfo.SubSliceCount = 32;
localHwInfo.gtSystemInfo.EUCount = 512;
localHwInfo.gtSystemInfo.CCSInfo.IsValid = true;
localHwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 4;
localHwInfo.gtSystemInfo.CCSInfo.Instances.CCSEnableMask = 0b1111;
}
#endif
}
if (localHwInfo.platform.eRenderCoreFamily == IGFX_XE_HPC_CORE) {
#ifdef SUPPORT_PVC
if (localHwInfo.platform.eProductFamily == IGFX_PVC) {
setupCalled = true;
PvcHwConfig::setupHardwareInfo(&localHwInfo, true, releaseHelper.get());
// Mock values
localHwInfo.gtSystemInfo.SliceCount = 8;
localHwInfo.gtSystemInfo.SubSliceCount = 64;
localHwInfo.gtSystemInfo.EUCount = 512;
localHwInfo.gtSystemInfo.CCSInfo.IsValid = true;
localHwInfo.gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 4;
localHwInfo.gtSystemInfo.CCSInfo.Instances.CCSEnableMask = 0b1111;
}
#endif
}
adjustPlatformOverride(localHwInfo, setupCalled);
ASSERT_TRUE(setupCalled);
}
} // namespace NEO