mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 16:24:18 +08:00
refactor: determine hp copy engine once after gfx core helper is created
- do not determine engine on every call to getDefaultHpCopyEngine() Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
712ca48cef
commit
a6bf424417
@@ -166,6 +166,7 @@ void RootDeviceEnvironment::initHelpers() {
|
||||
void RootDeviceEnvironment::initGfxCoreHelper() {
|
||||
if (gfxCoreHelper == nullptr) {
|
||||
gfxCoreHelper = GfxCoreHelper::create(this->getHardwareInfo()->platform.eRenderCoreFamily);
|
||||
gfxCoreHelper->initializeDefaultHpCopyEngine(*this->getHardwareInfo());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -181,6 +181,7 @@ class GfxCoreHelper {
|
||||
virtual uint32_t getContextGroupContextsCount() const = 0;
|
||||
virtual uint32_t getContextGroupHpContextsCount(EngineGroupType type, bool hpEngineAvailable) const = 0;
|
||||
virtual aub_stream::EngineType getDefaultHpCopyEngine(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual void initializeDefaultHpCopyEngine(const HardwareInfo &hwInfo) = 0;
|
||||
|
||||
virtual bool is48ResourceNeededForCmdBuffer() const = 0;
|
||||
virtual uint32_t getKernelPrivateMemSize(const KernelDescriptor &kernelDescriptor) const = 0;
|
||||
@@ -415,6 +416,7 @@ class GfxCoreHelperHw : public GfxCoreHelper {
|
||||
uint32_t getContextGroupContextsCount() const override;
|
||||
uint32_t getContextGroupHpContextsCount(EngineGroupType type, bool hpEngineAvailable) const override;
|
||||
aub_stream::EngineType getDefaultHpCopyEngine(const HardwareInfo &hwInfo) const override;
|
||||
void initializeDefaultHpCopyEngine(const HardwareInfo &hwInfo) override;
|
||||
|
||||
bool is48ResourceNeededForCmdBuffer() const override;
|
||||
|
||||
@@ -438,6 +440,8 @@ class GfxCoreHelperHw : public GfxCoreHelper {
|
||||
~GfxCoreHelperHw() override = default;
|
||||
|
||||
protected:
|
||||
aub_stream::EngineType hpCopyEngineType = aub_stream::EngineType::NUM_ENGINES;
|
||||
|
||||
static const AuxTranslationMode defaultAuxTranslationMode;
|
||||
GfxCoreHelperHw() = default;
|
||||
};
|
||||
|
||||
@@ -741,8 +741,12 @@ uint32_t GfxCoreHelperHw<GfxFamily>::getContextGroupHpContextsCount(EngineGroupT
|
||||
|
||||
template <typename GfxFamily>
|
||||
aub_stream::EngineType GfxCoreHelperHw<GfxFamily>::getDefaultHpCopyEngine(const HardwareInfo &hwInfo) const {
|
||||
return hpCopyEngineType;
|
||||
}
|
||||
|
||||
return aub_stream::EngineType::NUM_ENGINES;
|
||||
template <typename GfxFamily>
|
||||
void GfxCoreHelperHw<GfxFamily>::initializeDefaultHpCopyEngine(const HardwareInfo &hwInfo) {
|
||||
hpCopyEngineType = aub_stream::EngineType::NUM_ENGINES;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
||||
@@ -326,23 +326,22 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenHpCopyEngineWhenSelectLinkCopy
|
||||
DebugManagerStateRestore restore;
|
||||
debugManager.flags.ContextGroupSize.set(8);
|
||||
DeviceBitfield deviceBitfield = 0b1;
|
||||
hardwareInfo.featureTable.ftrBcsInfo = 0b10010;
|
||||
|
||||
auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment();
|
||||
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
|
||||
hwInfo.featureTable.ftrBcsInfo = 0b10010;
|
||||
std::unique_ptr<Device> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hardwareInfo, rootDeviceIndex));
|
||||
|
||||
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
|
||||
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hwInfo);
|
||||
const auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hardwareInfo);
|
||||
if (hpEngine == aub_stream::EngineType::NUM_ENGINES) {
|
||||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
|
||||
auto &selectorCopyEngine = device->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
|
||||
|
||||
auto engineType = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
auto engineType = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
EXPECT_NE(hpEngine, engineType);
|
||||
|
||||
auto engineType2 = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
auto engineType2 = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
EXPECT_NE(hpEngine, engineType2);
|
||||
}
|
||||
|
||||
@@ -351,25 +350,24 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenHpCopyEngineAndBcs0And1And2Reg
|
||||
debugManager.flags.ContextGroupSize.set(8);
|
||||
DeviceBitfield deviceBitfield = 0b1;
|
||||
|
||||
auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment();
|
||||
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
|
||||
hwInfo.featureTable.ftrBcsInfo = 0b10111;
|
||||
hardwareInfo.featureTable.ftrBcsInfo = 0b10111;
|
||||
std::unique_ptr<Device> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hardwareInfo, rootDeviceIndex));
|
||||
|
||||
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
|
||||
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hwInfo);
|
||||
const auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hardwareInfo);
|
||||
if (hpEngine == aub_stream::EngineType::NUM_ENGINES) {
|
||||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
|
||||
auto &selectorCopyEngine = device->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
|
||||
|
||||
auto engineType = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
auto engineType = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
EXPECT_NE(hpEngine, engineType);
|
||||
|
||||
auto engineType2 = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
auto engineType2 = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
EXPECT_NE(hpEngine, engineType2);
|
||||
|
||||
auto &productHelper = rootDeviceEnvironment.getProductHelper();
|
||||
auto &productHelper = device->getRootDeviceEnvironment().getProductHelper();
|
||||
|
||||
if (aub_stream::ENGINE_BCS1 != productHelper.getDefaultCopyEngine()) {
|
||||
EXPECT_NE(engineType, engineType2);
|
||||
@@ -384,23 +382,22 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenBcs2HpCopyEngineAndBcs0And1Reg
|
||||
DebugManagerStateRestore restore;
|
||||
debugManager.flags.ContextGroupSize.set(8);
|
||||
DeviceBitfield deviceBitfield = 0b1;
|
||||
hardwareInfo.featureTable.ftrBcsInfo = 0b00111;
|
||||
|
||||
auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment();
|
||||
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
|
||||
hwInfo.featureTable.ftrBcsInfo = 0b00111;
|
||||
std::unique_ptr<Device> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hardwareInfo, rootDeviceIndex));
|
||||
|
||||
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
|
||||
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hwInfo);
|
||||
const auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hardwareInfo);
|
||||
if (hpEngine == aub_stream::EngineType::NUM_ENGINES) {
|
||||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
|
||||
auto &selectorCopyEngine = device->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
|
||||
|
||||
auto engineType = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
auto engineType = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
EXPECT_NE(hpEngine, engineType);
|
||||
|
||||
auto engineType2 = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
auto engineType2 = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
|
||||
EXPECT_NE(hpEngine, engineType2);
|
||||
|
||||
EXPECT_EQ(engineType, engineType2);
|
||||
|
||||
Reference in New Issue
Block a user