mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 14:02:58 +08:00
performance: Remove global fence from command stream on BMG
Related-To: NEO-14642 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
7db6402df9
commit
304fba1eba
@@ -20,7 +20,7 @@ bool ProductHelperHw<gfxProduct>::isBlitterForImagesSupported() const {
|
|||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool ProductHelperHw<gfxProduct>::isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const {
|
bool ProductHelperHw<gfxProduct>::isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const {
|
||||||
return !hwInfo.capabilityTable.isIntegratedDevice;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
|||||||
@@ -3075,7 +3075,7 @@ HWTEST2_F(CommandStreamReceiverHwTest, givenDeviceToHostCopyWhenFenceIsRequiredT
|
|||||||
|
|
||||||
fenceExpected &= getHelper<ProductHelper>().isDeviceToHostCopySignalingFenceRequired();
|
fenceExpected &= getHelper<ProductHelper>().isDeviceToHostCopySignalingFenceRequired();
|
||||||
size_t expectedFenceCount = fenceExpected ? 1 : 0;
|
size_t expectedFenceCount = fenceExpected ? 1 : 0;
|
||||||
if (!pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice) {
|
if (getHelper<ProductHelper>().isGlobalFenceInCommandStreamRequired(pDevice->getHardwareInfo())) {
|
||||||
expectedFenceCount += 2;
|
expectedFenceCount += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -828,7 +828,7 @@ HWTEST_F(DirectSubmissionTest,
|
|||||||
EXPECT_EQ(0u, NEO::IoFunctions::mockFcloseCalled);
|
EXPECT_EQ(0u, NEO::IoFunctions::mockFcloseCalled);
|
||||||
size_t expectedSize = Dispatcher::getSizePreemption() +
|
size_t expectedSize = Dispatcher::getSizePreemption() +
|
||||||
directSubmission.getSizeSemaphoreSection(false);
|
directSubmission.getSizeSemaphoreSection(false);
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
expectedSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
expectedSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -910,7 +910,7 @@ HWTEST_F(DirectSubmissionTest,
|
|||||||
directSubmission.getDiagnosticModeSection();
|
directSubmission.getDiagnosticModeSection();
|
||||||
expectedSize += expectedExecCount * (directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler());
|
expectedSize += expectedExecCount * (directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler());
|
||||||
|
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
expectedSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
expectedSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -953,7 +953,7 @@ HWTEST_F(DirectSubmissionTest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t cmdOffset = 0;
|
size_t cmdOffset = 0;
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
cmdOffset = directSubmission.getSizeSystemMemoryFenceAddress();
|
cmdOffset = directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -1019,7 +1019,7 @@ HWTEST_F(DirectSubmissionTest,
|
|||||||
EXPECT_EQ(expectedDispatch, directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler());
|
EXPECT_EQ(expectedDispatch, directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler());
|
||||||
expectedSize += expectedExecCount * expectedDispatch;
|
expectedSize += expectedExecCount * expectedDispatch;
|
||||||
|
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
expectedSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
expectedSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ struct DirectSubmissionDispatchMiMemFenceTest : public DirectSubmissionDispatchB
|
|||||||
DirectSubmissionDispatchBufferTest::SetUp();
|
DirectSubmissionDispatchBufferTest::SetUp();
|
||||||
|
|
||||||
auto &productHelper = pDevice->getProductHelper();
|
auto &productHelper = pDevice->getProductHelper();
|
||||||
miMemFenceSupported = pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice ? false : productHelper.isGlobalFenceInDirectSubmissionRequired(pDevice->getHardwareInfo());
|
miMemFenceSupported = productHelper.isGlobalFenceInDirectSubmissionRequired(pDevice->getHardwareInfo());
|
||||||
|
|
||||||
auto &compilerProductHelper = pDevice->getCompilerProductHelper();
|
auto &compilerProductHelper = pDevice->getCompilerProductHelper();
|
||||||
heaplessStateInit = compilerProductHelper.isHeaplessStateInitEnabled(compilerProductHelper.isHeaplessModeEnabled(*defaultHwInfo));
|
heaplessStateInit = compilerProductHelper.isHeaplessStateInitEnabled(compilerProductHelper.isHeaplessModeEnabled(*defaultHwInfo));
|
||||||
@@ -109,9 +109,18 @@ struct DirectSubmissionDispatchMiMemFenceTest : public DirectSubmissionDispatchB
|
|||||||
EXPECT_EQ(expectedFenceCount, fenceCount);
|
EXPECT_EQ(expectedFenceCount, fenceCount);
|
||||||
EXPECT_EQ(expectedSysMemFenceCount, sysMemFenceCount);
|
EXPECT_EQ(expectedSysMemFenceCount, sysMemFenceCount);
|
||||||
} else {
|
} else {
|
||||||
EXPECT_EQ(-1, systemMemoryFenceId);
|
if (directSubmission.globalFenceAllocation) {
|
||||||
|
if (expectedSysMemFenceCount > 0) {
|
||||||
|
EXPECT_NE(-1, systemMemoryFenceId);
|
||||||
|
} else {
|
||||||
|
EXPECT_EQ(-1, systemMemoryFenceId);
|
||||||
|
}
|
||||||
|
EXPECT_EQ(expectedSysMemFenceCount, sysMemFenceCount);
|
||||||
|
} else {
|
||||||
|
EXPECT_EQ(-1, systemMemoryFenceId);
|
||||||
|
EXPECT_EQ(0u, sysMemFenceCount);
|
||||||
|
}
|
||||||
EXPECT_EQ(0u, fenceCount);
|
EXPECT_EQ(0u, fenceCount);
|
||||||
EXPECT_EQ(0u, sysMemFenceCount);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,7 +270,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest,
|
|||||||
directSubmission.getSizeSemaphoreSection(false) +
|
directSubmission.getSizeSemaphoreSection(false) +
|
||||||
sizeof(MI_LOAD_REGISTER_IMM) +
|
sizeof(MI_LOAD_REGISTER_IMM) +
|
||||||
sizeof(MI_LOAD_REGISTER_MEM);
|
sizeof(MI_LOAD_REGISTER_MEM);
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -640,7 +649,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
|
|||||||
EXPECT_EQ(1u, directSubmission.submitCount);
|
EXPECT_EQ(1u, directSubmission.submitCount);
|
||||||
size_t submitSize = RenderDispatcher<FamilyType>::getSizePreemption() +
|
size_t submitSize = RenderDispatcher<FamilyType>::getSizePreemption() +
|
||||||
directSubmission.getSizeSemaphoreSection(false);
|
directSubmission.getSizeSemaphoreSection(false);
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -694,7 +703,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
|
|||||||
EXPECT_EQ(1u, directSubmission.handleResidencyCount);
|
EXPECT_EQ(1u, directSubmission.handleResidencyCount);
|
||||||
|
|
||||||
size_t submitSize = directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler();
|
size_t submitSize = directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler();
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -720,7 +729,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
|
|||||||
EXPECT_EQ(1u, directSubmission.submitCount);
|
EXPECT_EQ(1u, directSubmission.submitCount);
|
||||||
size_t submitSize = RenderDispatcher<FamilyType>::getSizePreemption() +
|
size_t submitSize = RenderDispatcher<FamilyType>::getSizePreemption() +
|
||||||
directSubmission.getSizeSemaphoreSection(false);
|
directSubmission.getSizeSemaphoreSection(false);
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -771,7 +780,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
|
|||||||
EXPECT_EQ(1u, directSubmission.handleResidencyCount);
|
EXPECT_EQ(1u, directSubmission.handleResidencyCount);
|
||||||
|
|
||||||
size_t submitSize = directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler();
|
size_t submitSize = directSubmission.getSizeDispatch(false, false, directSubmission.dispatchMonitorFenceRequired(false)) - directSubmission.getSizeNewResourceHandler();
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission.isRelaxedOrderingEnabled()) {
|
if (directSubmission.isRelaxedOrderingEnabled()) {
|
||||||
@@ -864,7 +873,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest,
|
|||||||
directSubmission.getSizeSemaphoreSection(false) +
|
directSubmission.getSizeSemaphoreSection(false) +
|
||||||
sizeof(MI_LOAD_REGISTER_IMM) +
|
sizeof(MI_LOAD_REGISTER_IMM) +
|
||||||
sizeof(MI_LOAD_REGISTER_MEM);
|
sizeof(MI_LOAD_REGISTER_MEM);
|
||||||
if (directSubmission.miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission.globalFenceAllocation && !heaplessStateInit) {
|
||||||
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
submitSize += directSubmission.getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1368,7 +1368,7 @@ HWTEST_TEMPLATED_F(WddmCommandStreamMockGdiTest, givenDirectSubmissionEnabledOnB
|
|||||||
auto &compilerProductHelper = device->getCompilerProductHelper();
|
auto &compilerProductHelper = device->getCompilerProductHelper();
|
||||||
auto heaplessStateInit = compilerProductHelper.isHeaplessStateInitEnabled(compilerProductHelper.isHeaplessModeEnabled(*defaultHwInfo));
|
auto heaplessStateInit = compilerProductHelper.isHeaplessStateInitEnabled(compilerProductHelper.isHeaplessModeEnabled(*defaultHwInfo));
|
||||||
|
|
||||||
if (directSubmission->miMemFenceRequired && !heaplessStateInit) {
|
if (directSubmission->globalFenceAllocation && !heaplessStateInit) {
|
||||||
expectedSize += directSubmission->getSizeSystemMemoryFenceAddress();
|
expectedSize += directSubmission->getSizeSystemMemoryFenceAddress();
|
||||||
}
|
}
|
||||||
if (directSubmission->isRelaxedOrderingEnabled()) {
|
if (directSubmission->isRelaxedOrderingEnabled()) {
|
||||||
|
|||||||
@@ -520,17 +520,14 @@ XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenGfxCoreHelperWhenAskedIfFe
|
|||||||
}
|
}
|
||||||
|
|
||||||
XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenDefaultMemorySynchronizationCommandsWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) {
|
XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenDefaultMemorySynchronizationCommandsWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) {
|
||||||
using MI_MEM_FENCE = typename FamilyType::MI_MEM_FENCE;
|
EXPECT_EQ(0u, MemorySynchronizationCommands<FamilyType>::getSizeForAdditonalSynchronization(pDevice->getRootDeviceEnvironment()));
|
||||||
|
|
||||||
EXPECT_EQ(!pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice * sizeof(MI_MEM_FENCE), MemorySynchronizationCommands<FamilyType>::getSizeForAdditonalSynchronization(pDevice->getRootDeviceEnvironment()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenDebugMemorySynchronizationCommandsWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) {
|
XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenDebugMemorySynchronizationCommandsWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) {
|
||||||
DebugManagerStateRestore restorer;
|
DebugManagerStateRestore restorer;
|
||||||
debugManager.flags.DisablePipeControlPrecedingPostSyncCommand.set(1);
|
debugManager.flags.DisablePipeControlPrecedingPostSyncCommand.set(1);
|
||||||
using MI_MEM_FENCE = typename FamilyType::MI_MEM_FENCE;
|
|
||||||
|
|
||||||
EXPECT_EQ(!pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice * 2 * sizeof(MI_MEM_FENCE), MemorySynchronizationCommands<FamilyType>::getSizeForAdditonalSynchronization(pDevice->getRootDeviceEnvironment()));
|
EXPECT_EQ(0u, MemorySynchronizationCommands<FamilyType>::getSizeForAdditonalSynchronization(pDevice->getRootDeviceEnvironment()));
|
||||||
}
|
}
|
||||||
|
|
||||||
XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenDontProgramGlobalFenceAsMiMemFenceCommandInCommandStreamWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) {
|
XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenDontProgramGlobalFenceAsMiMemFenceCommandInCommandStreamWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) {
|
||||||
@@ -680,9 +677,9 @@ XE2_HPG_CORETEST_F(ProductHelperTestXe2HpgCore, givenProductHelperWhenCallUseGem
|
|||||||
EXPECT_TRUE(productHelper.useGemCreateExtInAllocateMemoryByKMD());
|
EXPECT_TRUE(productHelper.useGemCreateExtInAllocateMemoryByKMD());
|
||||||
}
|
}
|
||||||
|
|
||||||
XE2_HPG_CORETEST_F(ProductHelperTestXe2HpgCore, givenProductHelperWhenAskingForGlobalFenceSupportThenReturnTrue) {
|
XE2_HPG_CORETEST_F(ProductHelperTestXe2HpgCore, givenProductHelperWhenAskingForGlobalFenceSupportThenReturnFalse) {
|
||||||
const auto &productHelper = getHelper<ProductHelper>();
|
const auto &productHelper = getHelper<ProductHelper>();
|
||||||
EXPECT_EQ(productHelper.isGlobalFenceInCommandStreamRequired(*defaultHwInfo), !defaultHwInfo->capabilityTable.isIntegratedDevice);
|
EXPECT_FALSE(productHelper.isGlobalFenceInCommandStreamRequired(*defaultHwInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
XE2_HPG_CORETEST_F(ProductHelperTestXe2HpgCore, givenProductHelperWhenAskingForCooperativeEngineSupportThenReturnTrue) {
|
XE2_HPG_CORETEST_F(ProductHelperTestXe2HpgCore, givenProductHelperWhenAskingForCooperativeEngineSupportThenReturnTrue) {
|
||||||
|
|||||||
Reference in New Issue
Block a user