mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
performance: add platform check to get default flag for primary batch buffer
Related-To: NEO-7807 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
14c3777409
commit
5adc1816ff
@@ -166,7 +166,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::initialize(Device *device, NEO
|
|||||||
this->l1CachePolicyData.init(productHelper);
|
this->l1CachePolicyData.init(productHelper);
|
||||||
this->cmdListHeapAddressModel = L0GfxCoreHelper::getHeapAddressModel(rootDeviceEnvironment);
|
this->cmdListHeapAddressModel = L0GfxCoreHelper::getHeapAddressModel(rootDeviceEnvironment);
|
||||||
this->dummyBlitWa.rootDeviceEnvironment = &(device->getNEODevice()->getRootDeviceEnvironmentRef());
|
this->dummyBlitWa.rootDeviceEnvironment = &(device->getNEODevice()->getRootDeviceEnvironmentRef());
|
||||||
this->dispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(this->cmdListType == CommandListType::TYPE_REGULAR);
|
this->dispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, this->cmdListType == CommandListType::TYPE_REGULAR);
|
||||||
|
|
||||||
this->requiredStreamState.initSupport(rootDeviceEnvironment);
|
this->requiredStreamState.initSupport(rootDeviceEnvironment);
|
||||||
this->finalStreamState.initSupport(rootDeviceEnvironment);
|
this->finalStreamState.initSupport(rootDeviceEnvironment);
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ ze_result_t CommandQueueImp::initialize(bool copyOnly, bool isInternal, bool imm
|
|||||||
auto &productHelper = rootDeviceEnvironment.getHelper<NEO::ProductHelper>();
|
auto &productHelper = rootDeviceEnvironment.getHelper<NEO::ProductHelper>();
|
||||||
this->doubleSbaWa = productHelper.isAdditionalStateBaseAddressWARequired(hwInfo);
|
this->doubleSbaWa = productHelper.isAdditionalStateBaseAddressWARequired(hwInfo);
|
||||||
this->cmdListHeapAddressModel = L0GfxCoreHelper::getHeapAddressModel(rootDeviceEnvironment);
|
this->cmdListHeapAddressModel = L0GfxCoreHelper::getHeapAddressModel(rootDeviceEnvironment);
|
||||||
this->dispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(!immediateCmdListQueue);
|
this->dispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, !immediateCmdListQueue);
|
||||||
}
|
}
|
||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,9 +103,9 @@ NEO::HeapAddressModel L0GfxCoreHelper::getHeapAddressModel(const NEO::RootDevice
|
|||||||
return l0GfxCoreHelper.getPlatformHeapAddressModel();
|
return l0GfxCoreHelper.getPlatformHeapAddressModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(bool allowPrimary) {
|
bool L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(const NEO::RootDeviceEnvironment &rootDeviceEnvironment, bool allowPrimary) {
|
||||||
constexpr bool defaultValue = false;
|
auto &l0GfxCoreHelper = rootDeviceEnvironment.getHelper<L0GfxCoreHelper>();
|
||||||
bool value = defaultValue;
|
bool value = l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList();
|
||||||
if (NEO::DebugManager.flags.DispatchCmdlistCmdBufferPrimary.get() != -1) {
|
if (NEO::DebugManager.flags.DispatchCmdlistCmdBufferPrimary.get() != -1) {
|
||||||
value = !!(NEO::DebugManager.flags.DispatchCmdlistCmdBufferPrimary.get());
|
value = !!(NEO::DebugManager.flags.DispatchCmdlistCmdBufferPrimary.get());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class L0GfxCoreHelper : public NEO::ApiGfxCoreHelper {
|
|||||||
static bool useDynamicEventPacketsCount(const NEO::HardwareInfo &hwInfo);
|
static bool useDynamicEventPacketsCount(const NEO::HardwareInfo &hwInfo);
|
||||||
static bool useSignalAllEventPackets(const NEO::HardwareInfo &hwInfo);
|
static bool useSignalAllEventPackets(const NEO::HardwareInfo &hwInfo);
|
||||||
static NEO::HeapAddressModel getHeapAddressModel(const NEO::RootDeviceEnvironment &rootDeviceEnvironment);
|
static NEO::HeapAddressModel getHeapAddressModel(const NEO::RootDeviceEnvironment &rootDeviceEnvironment);
|
||||||
static bool dispatchCmdListBatchBufferAsPrimary(bool allowPrimary);
|
static bool dispatchCmdListBatchBufferAsPrimary(const NEO::RootDeviceEnvironment &rootDeviceEnvironment, bool allowPrimary);
|
||||||
|
|
||||||
virtual void setAdditionalGroupProperty(ze_command_queue_group_properties_t &groupProperty, NEO::EngineGroupT &group) const = 0;
|
virtual void setAdditionalGroupProperty(ze_command_queue_group_properties_t &groupProperty, NEO::EngineGroupT &group) const = 0;
|
||||||
virtual L0::Event *createEvent(L0::EventPool *eventPool, const ze_event_desc_t *desc, L0::Device *device) const = 0;
|
virtual L0::Event *createEvent(L0::EventPool *eventPool, const ze_event_desc_t *desc, L0::Device *device) const = 0;
|
||||||
@@ -70,6 +70,7 @@ class L0GfxCoreHelper : public NEO::ApiGfxCoreHelper {
|
|||||||
virtual bool platformSupportsPipelineSelectTracking() const = 0;
|
virtual bool platformSupportsPipelineSelectTracking() const = 0;
|
||||||
virtual bool platformSupportsStateBaseAddressTracking() const = 0;
|
virtual bool platformSupportsStateBaseAddressTracking() const = 0;
|
||||||
virtual bool platformSupportsRayTracing() const = 0;
|
virtual bool platformSupportsRayTracing() const = 0;
|
||||||
|
virtual bool platformSupportsPrimaryBatchBufferCmdList() const = 0;
|
||||||
virtual bool isZebinAllowed(const NEO::Debugger *debugger) const = 0;
|
virtual bool isZebinAllowed(const NEO::Debugger *debugger) const = 0;
|
||||||
virtual uint32_t getEventMaxKernelCount(const NEO::HardwareInfo &hwInfo) const = 0;
|
virtual uint32_t getEventMaxKernelCount(const NEO::HardwareInfo &hwInfo) const = 0;
|
||||||
virtual uint32_t getEventBaseMaxPacketCount(const NEO::RootDeviceEnvironment &rootDeviceEnvironment) const = 0;
|
virtual uint32_t getEventBaseMaxPacketCount(const NEO::RootDeviceEnvironment &rootDeviceEnvironment) const = 0;
|
||||||
@@ -105,6 +106,7 @@ class L0GfxCoreHelperHw : public L0GfxCoreHelper {
|
|||||||
bool platformSupportsPipelineSelectTracking() const override;
|
bool platformSupportsPipelineSelectTracking() const override;
|
||||||
bool platformSupportsStateBaseAddressTracking() const override;
|
bool platformSupportsStateBaseAddressTracking() const override;
|
||||||
bool platformSupportsRayTracing() const override;
|
bool platformSupportsRayTracing() const override;
|
||||||
|
bool platformSupportsPrimaryBatchBufferCmdList() const override;
|
||||||
bool isZebinAllowed(const NEO::Debugger *debugger) const override;
|
bool isZebinAllowed(const NEO::Debugger *debugger) const override;
|
||||||
uint32_t getEventMaxKernelCount(const NEO::HardwareInfo &hwInfo) const override;
|
uint32_t getEventMaxKernelCount(const NEO::HardwareInfo &hwInfo) const override;
|
||||||
uint32_t getEventBaseMaxPacketCount(const NEO::RootDeviceEnvironment &rootDeviceEnvironment) const override;
|
uint32_t getEventBaseMaxPacketCount(const NEO::RootDeviceEnvironment &rootDeviceEnvironment) const override;
|
||||||
|
|||||||
@@ -64,4 +64,9 @@ std::vector<uint32_t> L0GfxCoreHelperHw<Family>::getSupportedNumGrfs() const {
|
|||||||
return {128u};
|
return {128u};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Family>
|
||||||
|
bool L0GfxCoreHelperHw<Family>::platformSupportsPrimaryBatchBufferCmdList() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
@@ -77,4 +77,9 @@ std::vector<uint32_t> L0GfxCoreHelperHw<Family>::getSupportedNumGrfs() const {
|
|||||||
return {128u, 256u};
|
return {128u, 256u};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Family>
|
||||||
|
bool L0GfxCoreHelperHw<Family>::platformSupportsPrimaryBatchBufferCmdList() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
@@ -51,5 +51,10 @@ GEN11TEST_F(L0GfxCoreHelperTestGen11, GivenGen11WhenGettingPlatformDefaultHeapAd
|
|||||||
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GEN11TEST_F(L0GfxCoreHelperTestGen11, GivenGen11WhenCheckingL0HelperForCmdlistPrimaryBufferSupportThenReturnFalse) {
|
||||||
|
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||||
|
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
@@ -63,5 +63,10 @@ GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenGettingPlatformDefault
|
|||||||
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenCheckingL0HelperForCmdlistPrimaryBufferSupportThenReturnFalse) {
|
||||||
|
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||||
|
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
@@ -51,5 +51,10 @@ GEN9TEST_F(L0GfxCoreHelperTestGen9, GivenGen9WhenGettingPlatformDefaultHeapAddre
|
|||||||
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GEN9TEST_F(L0GfxCoreHelperTestGen9, GivenGen9WhenCheckingL0HelperForCmdlistPrimaryBufferSupportThenReturnFalse) {
|
||||||
|
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||||
|
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
@@ -2436,7 +2436,7 @@ TEST_F(CommandListCreate, givenCreatedCommandListWhenGettingTrackingFlagsThenDef
|
|||||||
EXPECT_EQ(expectedHeapAddressModel, commandList->getCmdListHeapAddressModel());
|
EXPECT_EQ(expectedHeapAddressModel, commandList->getCmdListHeapAddressModel());
|
||||||
EXPECT_EQ(expectedHeapAddressModel, commandList->getCmdContainer().getHeapAddressModel());
|
EXPECT_EQ(expectedHeapAddressModel, commandList->getCmdContainer().getHeapAddressModel());
|
||||||
|
|
||||||
auto expectedDispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(true);
|
auto expectedDispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, true);
|
||||||
EXPECT_EQ(expectedDispatchCmdListBatchBufferAsPrimary, commandList->dispatchCmdListBatchBufferAsPrimary);
|
EXPECT_EQ(expectedDispatchCmdListBatchBufferAsPrimary, commandList->dispatchCmdListBatchBufferAsPrimary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2052,7 +2052,7 @@ TEST_F(CommandQueueCreate, givenCreatedCommandQueueWhenGettingTrackingFlagsThenD
|
|||||||
auto expectedHeapAddressModel = l0GfxCoreHelper.getPlatformHeapAddressModel();
|
auto expectedHeapAddressModel = l0GfxCoreHelper.getPlatformHeapAddressModel();
|
||||||
EXPECT_EQ(expectedHeapAddressModel, commandQueue->cmdListHeapAddressModel);
|
EXPECT_EQ(expectedHeapAddressModel, commandQueue->cmdListHeapAddressModel);
|
||||||
|
|
||||||
auto expectedDispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(true);
|
auto expectedDispatchCmdListBatchBufferAsPrimary = L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, true);
|
||||||
EXPECT_EQ(expectedDispatchCmdListBatchBufferAsPrimary, commandQueue->dispatchCmdListBatchBufferAsPrimary);
|
EXPECT_EQ(expectedDispatchCmdListBatchBufferAsPrimary, commandQueue->dispatchCmdListBatchBufferAsPrimary);
|
||||||
|
|
||||||
commandQueue->destroy();
|
commandQueue->destroy();
|
||||||
|
|||||||
@@ -859,22 +859,34 @@ HWTEST2_F(L0GfxCoreHelperTest, givenL0GfxCoreHelperWhenGettingSupportedNumGrfsTh
|
|||||||
|
|
||||||
TEST_F(L0GfxCoreHelperTest, givenL0GfxCoreHelperUsingOverrideDebugKeyWhenGettingDispatchCmdListCmdBufferPrimaryThenUseDbgKeyValue) {
|
TEST_F(L0GfxCoreHelperTest, givenL0GfxCoreHelperUsingOverrideDebugKeyWhenGettingDispatchCmdListCmdBufferPrimaryThenUseDbgKeyValue) {
|
||||||
DebugManagerStateRestore restorer;
|
DebugManagerStateRestore restorer;
|
||||||
|
MockExecutionEnvironment executionEnvironment;
|
||||||
|
const auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0].get();
|
||||||
|
|
||||||
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(0);
|
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(0);
|
||||||
|
|
||||||
EXPECT_FALSE(L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(true));
|
EXPECT_FALSE(L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, true));
|
||||||
|
|
||||||
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(1);
|
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(1);
|
||||||
|
|
||||||
EXPECT_TRUE(L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(true));
|
EXPECT_TRUE(L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(L0GfxCoreHelperTest, givenL0GfxCoreHelperUsingOverrideDebugKeyWhenGettingDispatchCmdListCmdBufferPrimaryAndNotAllowPrimaryThenOverrideDbgKeyValueAndDisallow) {
|
TEST_F(L0GfxCoreHelperTest, givenL0GfxCoreHelperUsingOverrideDebugKeyWhenGettingDispatchCmdListCmdBufferPrimaryAndNotAllowPrimaryThenOverrideDbgKeyValueAndDisallow) {
|
||||||
DebugManagerStateRestore restorer;
|
DebugManagerStateRestore restorer;
|
||||||
|
MockExecutionEnvironment executionEnvironment;
|
||||||
|
const auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0].get();
|
||||||
|
|
||||||
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(1);
|
DebugManager.flags.DispatchCmdlistCmdBufferPrimary.set(1);
|
||||||
|
|
||||||
EXPECT_FALSE(L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(false));
|
EXPECT_FALSE(L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(L0GfxCoreHelperTest, givenL0GfxCoreHelperWhenGettingDefaultCmdlistPrimaryBatchBufferThenUsePlatformDefaultSetting) {
|
||||||
|
MockExecutionEnvironment executionEnvironment;
|
||||||
|
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0].get();
|
||||||
|
auto &l0GfxCoreHelper = rootDeviceEnvironment.getHelper<L0GfxCoreHelper>();
|
||||||
|
|
||||||
|
EXPECT_EQ(l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList(), L0GfxCoreHelper::dispatchCmdListBatchBufferAsPrimary(rootDeviceEnvironment, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
|
|||||||
@@ -64,5 +64,10 @@ XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenGettingPlatformDefault
|
|||||||
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForCmdlistPrimaryBufferSupportThenReturnFalse) {
|
||||||
|
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||||
|
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
@@ -66,5 +66,10 @@ XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenGettingPlatformDefault
|
|||||||
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
EXPECT_EQ(NEO::HeapAddressModel::PrivateHeaps, l0GfxCoreHelper.getPlatformHeapAddressModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForCmdlistPrimaryBufferSupportThenReturnFalse) {
|
||||||
|
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||||
|
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsPrimaryBatchBufferCmdList());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|||||||
Reference in New Issue
Block a user