fix: DO not use ULLS additional sync on integrated device

Related-To: NEO-8067

Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk 2023-06-22 10:08:09 +00:00 committed by Compute-Runtime-Automation
parent ddffb8a67f
commit 44a2df9485
4 changed files with 31 additions and 10 deletions

View File

@ -21,6 +21,7 @@
#include "shared/source/helpers/definitions/command_encoder_args.h"
#include "shared/source/helpers/flush_stamp.h"
#include "shared/source/helpers/gfx_core_helper.h"
#include "shared/source/helpers/hw_info.h"
#include "shared/source/helpers/logical_state_helper.h"
#include "shared/source/helpers/ptr_math.h"
#include "shared/source/memory_manager/allocation_properties.h"
@ -61,7 +62,13 @@ DirectSubmissionHw<GfxFamily, Dispatcher>::DirectSubmissionHw(const DirectSubmis
disableCacheFlush = !!DebugManager.flags.DirectSubmissionDisableCacheFlush.get();
}
miMemFenceRequired = productHelper.isGlobalFenceInDirectSubmissionRequired(*hwInfo);
if (hwInfo->capabilityTable.isIntegratedDevice) {
miMemFenceRequired = false;
sfenceMode = DirectSubmissionSfenceMode::Disabled;
} else {
miMemFenceRequired = productHelper.isGlobalFenceInDirectSubmissionRequired(*hwInfo);
}
if (DebugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.get() == 0) {
miMemFenceRequired = false;
}

View File

@ -51,7 +51,7 @@ DrmDirectSubmission<GfxFamily, Dispatcher>::DrmDirectSubmission(const DirectSubm
auto &drm = osContextLinux->getDrm();
drm.setDirectSubmissionActive(true);
auto usePciBarrier = true;
auto usePciBarrier = !this->hwInfo->capabilityTable.isIntegratedDevice;
if (DebugManager.flags.DirectSubmissionPCIBarrier.get() != -1) {
usePciBarrier = DebugManager.flags.DirectSubmissionPCIBarrier.get();
}

View File

@ -47,7 +47,7 @@ struct DirectSubmissionDispatchMiMemFenceTest : public DirectSubmissionDispatchB
DirectSubmissionDispatchBufferTest::SetUp();
auto &productHelper = pDevice->getProductHelper();
miMemFenceSupported = productHelper.isGlobalFenceInDirectSubmissionRequired(pDevice->getHardwareInfo());
miMemFenceSupported = pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice ? false : productHelper.isGlobalFenceInDirectSubmissionRequired(pDevice->getHardwareInfo());
}
template <typename FamilyType>
@ -1009,7 +1009,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDebugFlagSetWhenDispatchingWor
EXPECT_TRUE(directSubmission.dispatchCommandBuffer(batchBuffer, flushStamp));
uint32_t expectedCount = (debugFlag == -1) ? 2 : static_cast<uint32_t>(debugFlag);
uint32_t expectedCount = (debugFlag == -1) ? (pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice ? 0 : 2) : static_cast<uint32_t>(debugFlag);
EXPECT_EQ(initialCounterValue + expectedCount, CpuIntrinsicsTests::sfenceCounter);
}
@ -1032,7 +1032,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDebugFlagSetWhenStoppingRingbu
EXPECT_TRUE(directSubmission.stopRingBuffer());
uint32_t expectedCount = (debugFlag == -1) ? 2 : static_cast<uint32_t>(debugFlag);
uint32_t expectedCount = (debugFlag == -1) ? (pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice ? 0 : 2) : static_cast<uint32_t>(debugFlag);
EXPECT_EQ(initialCounterValue + expectedCount, CpuIntrinsicsTests::sfenceCounter);
}

View File

@ -226,7 +226,11 @@ HWTEST_F(DrmDirectSubmissionTest, givenPciBarrierWhenCreateDirectSubmissionThenP
MockDrmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> directSubmission(commandStreamReceiver);
EXPECT_NE(nullptr, directSubmission.pciBarrierPtr);
EXPECT_NE(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
if (device->getHardwareInfo().capabilityTable.isIntegratedDevice) {
EXPECT_EQ(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
} else {
EXPECT_NE(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
}
EXPECT_FALSE(directSubmission.miMemFenceRequired);
SysCalls::munmap(ptr, MemoryConstants::pageSize);
@ -247,8 +251,13 @@ HWTEST_F(DrmDirectSubmissionTest, givenPciBarrierWhenCreateDirectSubmissionAndMm
MockDrmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> directSubmission(commandStreamReceiver);
EXPECT_EQ(nullptr, directSubmission.pciBarrierPtr);
EXPECT_NE(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
EXPECT_EQ(directSubmission.miMemFenceRequired, device->getRootDeviceEnvironment().getHelper<ProductHelper>().isGlobalFenceInDirectSubmissionRequired(device->getHardwareInfo()));
if (device->getHardwareInfo().capabilityTable.isIntegratedDevice) {
EXPECT_EQ(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
} else {
EXPECT_NE(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
}
auto expectMiMemFence = device->getHardwareInfo().capabilityTable.isIntegratedDevice ? false : device->getRootDeviceEnvironment().getHelper<ProductHelper>().isGlobalFenceInDirectSubmissionRequired(device->getHardwareInfo());
EXPECT_EQ(directSubmission.miMemFenceRequired, expectMiMemFence);
SysCalls::munmap(ptr, MemoryConstants::pageSize);
}
@ -267,8 +276,13 @@ HWTEST_F(DrmDirectSubmissionTest, givenPciBarrierDisabledWhenCreateDirectSubmiss
MockDrmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> directSubmission(commandStreamReceiver);
EXPECT_EQ(nullptr, directSubmission.pciBarrierPtr);
EXPECT_NE(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
EXPECT_EQ(directSubmission.miMemFenceRequired, device->getRootDeviceEnvironment().getHelper<ProductHelper>().isGlobalFenceInDirectSubmissionRequired(device->getHardwareInfo()));
if (device->getHardwareInfo().capabilityTable.isIntegratedDevice) {
EXPECT_EQ(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
} else {
EXPECT_NE(DirectSubmissionSfenceMode::Disabled, directSubmission.sfenceMode);
}
auto expectMiMemFence = device->getHardwareInfo().capabilityTable.isIntegratedDevice ? false : device->getRootDeviceEnvironment().getHelper<ProductHelper>().isGlobalFenceInDirectSubmissionRequired(device->getHardwareInfo());
EXPECT_EQ(directSubmission.miMemFenceRequired, expectMiMemFence);
SysCalls::munmap(ptr, MemoryConstants::pageSize);
}