Revert "performance: disable gem close worker on non integrated devices"

This reverts commit 3cf7cbc9e9.


Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk 2023-11-20 13:45:19 +00:00 committed by Compute-Runtime-Automation
parent 3034d5834d
commit 128dc4a3ad
7 changed files with 17 additions and 48 deletions

View File

@ -15,7 +15,6 @@
#include "shared/source/helpers/aligned_memory.h" #include "shared/source/helpers/aligned_memory.h"
#include "shared/source/helpers/flush_stamp.h" #include "shared/source/helpers/flush_stamp.h"
#include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/helpers/gfx_core_helper.h"
#include "shared/source/helpers/hw_info.h"
#include "shared/source/memory_manager/residency.h" #include "shared/source/memory_manager/residency.h"
#include "shared/source/os_interface/linux/drm_allocation.h" #include "shared/source/os_interface/linux/drm_allocation.h"
#include "shared/source/os_interface/linux/drm_buffer_object.h" #include "shared/source/os_interface/linux/drm_buffer_object.h"
@ -43,7 +42,7 @@ DrmCommandStreamReceiver<GfxFamily>::DrmCommandStreamReceiver(ExecutionEnvironme
residency.reserve(512); residency.reserve(512);
execObjectsStorage.reserve(512); execObjectsStorage.reserve(512);
if (this->drm->isVmBindAvailable() || !rootDeviceEnvironment->getHardwareInfo()->capabilityTable.isIntegratedDevice) { if (this->drm->isVmBindAvailable()) {
gemCloseWorkerOperationMode = gemCloseWorkerMode::gemCloseWorkerInactive; gemCloseWorkerOperationMode = gemCloseWorkerMode::gemCloseWorkerInactive;
} }

View File

@ -83,8 +83,7 @@ void DrmMemoryManager::initialize(gemCloseWorkerMode mode) {
return; return;
} }
localMemAllocs.emplace_back(); localMemAllocs.emplace_back();
disableGemCloseWorker &= (getDrm(rootDeviceIndex).isVmBindAvailable() || disableGemCloseWorker &= getDrm(rootDeviceIndex).isVmBindAvailable();
!executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo()->capabilityTable.isIntegratedDevice);
} }
if (disableGemCloseWorker) { if (disableGemCloseWorker) {

View File

@ -79,9 +79,7 @@ class DrmCommandStreamTest : public ::testing::Test {
template <typename GfxFamily> template <typename GfxFamily>
void tearDownT() { void tearDownT() {
memoryManager->waitForDeletions(); memoryManager->waitForDeletions();
if (memoryManager->peekGemCloseWorker()) { memoryManager->peekGemCloseWorker()->close(true);
memoryManager->peekGemCloseWorker()->close(true);
}
delete csr; delete csr;
if (mock->ioctlTearDownExpects) { if (mock->ioctlTearDownExpects) {
EXPECT_EQ(mock->ioctlCount.gemWait, mock->ioctlTearDownExpected.gemWait); EXPECT_EQ(mock->ioctlCount.gemWait, mock->ioctlTearDownExpected.gemWait);

View File

@ -50,21 +50,13 @@ HWTEST_F(DeviceCommandStreamLeaksTest, WhenCreatingDeviceCsrThenValidPointerIsRe
HWTEST_F(DeviceCommandStreamLeaksTest, givenDefaultDrmCsrWhenItIsCreatedThenGemCloseWorkerInactiveModeIsSelected) { HWTEST_F(DeviceCommandStreamLeaksTest, givenDefaultDrmCsrWhenItIsCreatedThenGemCloseWorkerInactiveModeIsSelected) {
std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0, 1)); std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0, 1));
auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get(); auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get();
if (executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice) { EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
} else {
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);
}
} }
HWTEST_F(DeviceCommandStreamLeaksTest, givenDefaultDrmCsrWithAubDumWhenItIsCreatedThenGemCloseWorkerInactiveModeIsSelected) { HWTEST_F(DeviceCommandStreamLeaksTest, givenDefaultDrmCsrWithAubDumWhenItIsCreatedThenGemCloseWorkerInactiveModeIsSelected) {
std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(true, *executionEnvironment, 0, 1)); std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(true, *executionEnvironment, 0, 1));
auto drmCsrWithAubDump = (CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<FamilyType>> *)ptr.get(); auto drmCsrWithAubDump = (CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<FamilyType>> *)ptr.get();
if (executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice) { EXPECT_EQ(drmCsrWithAubDump->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
EXPECT_EQ(drmCsrWithAubDump->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
} else {
EXPECT_EQ(drmCsrWithAubDump->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);
}
auto aubCSR = static_cast<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<FamilyType>> *>(ptr.get())->aubCSR.get(); auto aubCSR = static_cast<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<FamilyType>> *>(ptr.get())->aubCSR.get();
EXPECT_NE(nullptr, aubCSR); EXPECT_NE(nullptr, aubCSR);
} }
@ -102,11 +94,7 @@ HWTEST_F(DeviceCommandStreamLeaksTest, givenDefaultGemCloseWorkerWhenCsrIsCreate
std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0, 1)); std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0, 1));
auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get(); auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get();
if (executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice) { EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
} else {
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);
}
} }
using DeviceCommandStreamSetInternalUsageTests = DeviceCommandStreamLeaksTest; using DeviceCommandStreamSetInternalUsageTests = DeviceCommandStreamLeaksTest;
@ -114,12 +102,7 @@ using DeviceCommandStreamSetInternalUsageTests = DeviceCommandStreamLeaksTest;
HWTEST_F(DeviceCommandStreamSetInternalUsageTests, givenValidDrmCsrThenGemCloseWorkerOperationModeIsSetToInactiveWhenInternalUsageIsSet) { HWTEST_F(DeviceCommandStreamSetInternalUsageTests, givenValidDrmCsrThenGemCloseWorkerOperationModeIsSetToInactiveWhenInternalUsageIsSet) {
std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0, 1)); std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0, 1));
auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get(); auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get();
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
if (executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice) {
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
} else {
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);
}
drmCsr->initializeDefaultsForInternalEngine(); drmCsr->initializeDefaultsForInternalEngine();
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive); EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);

View File

@ -199,7 +199,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, WhenFlushingThenAvailableSpaceDoesNotCh
EXPECT_NE(cs.getCpuBase(), nullptr); EXPECT_NE(cs.getCpuBase(), nullptr);
EXPECT_EQ(availableSpacePriorToFlush, cs.getAvailableSpace()); EXPECT_EQ(availableSpacePriorToFlush, cs.getAvailableSpace());
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
@ -288,7 +288,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, GivenLowPriorityContextWhenFlushingThen
EXPECT_EQ(1, mock->ioctlCount.gemUserptr); EXPECT_EQ(1, mock->ioctlCount.gemUserptr);
EXPECT_EQ(1, mock->ioctlCount.execbuffer2); EXPECT_EQ(1, mock->ioctlCount.execbuffer2);
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
@ -334,7 +334,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, GivenNotEmptyBbWhenFlushingThenSucceeds
EXPECT_EQ(1, mock->ioctlCount.gemUserptr); EXPECT_EQ(1, mock->ioctlCount.gemUserptr);
EXPECT_EQ(1, mock->ioctlCount.execbuffer2); EXPECT_EQ(1, mock->ioctlCount.execbuffer2);
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
@ -356,7 +356,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, GivenNotEmptyNotPaddedBbWhenFlushingThe
EXPECT_EQ(1, mock->ioctlCount.gemUserptr); EXPECT_EQ(1, mock->ioctlCount.gemUserptr);
EXPECT_EQ(1, mock->ioctlCount.execbuffer2); EXPECT_EQ(1, mock->ioctlCount.execbuffer2);
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
@ -384,7 +384,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, GivenNotAlignedWhenFlushingThenSucceeds
EXPECT_EQ(1, mock->ioctlCount.gemUserptr); EXPECT_EQ(1, mock->ioctlCount.gemUserptr);
EXPECT_EQ(1, mock->ioctlCount.execbuffer2); EXPECT_EQ(1, mock->ioctlCount.execbuffer2);
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
@ -433,7 +433,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, GivenCheckDrmFreeWhenFlushingThenSuccee
EXPECT_EQ(1, mock->ioctlCount.execbuffer2); EXPECT_EQ(1, mock->ioctlCount.execbuffer2);
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
EXPECT_EQ(expectedBatchStartOffset, mock->execBuffers.back().getBatchStartOffset()); EXPECT_EQ(expectedBatchStartOffset, mock->execBuffers.back().getBatchStartOffset());
@ -476,7 +476,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, GivenCheckDrmFreeCloseFailedWhenFlushin
EXPECT_EQ(1, mock->ioctlCount.execbuffer2); EXPECT_EQ(1, mock->ioctlCount.execbuffer2);
mock->ioctlTearDownExpected.gemClose = 1; mock->ioctlTearDownExpected.gemClose = 1;
mock->ioctlTearDownExpected.gemWait = 1 + executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice; mock->ioctlTearDownExpected.gemWait = 2;
mock->ioctlTearDownExpects = true; mock->ioctlTearDownExpects = true;
EXPECT_EQ(expectedBatchStartOffset, mock->execBuffers.back().getBatchStartOffset()); EXPECT_EQ(expectedBatchStartOffset, mock->execBuffers.back().getBatchStartOffset());

View File

@ -344,9 +344,7 @@ class DrmCommandStreamForceTileTest : public ::testing::Test {
template <typename GfxFamily> template <typename GfxFamily>
void tearDownT() { void tearDownT() {
memoryManager->waitForDeletions(); memoryManager->waitForDeletions();
if (memoryManager->peekGemCloseWorker()) { memoryManager->peekGemCloseWorker()->close(true);
memoryManager->peekGemCloseWorker()->close(true);
}
delete csr; delete csr;
// Expect 2 calls with DRM_IOCTL_I915_GEM_CONTEXT_DESTROY request on OsContextLinux destruction // Expect 2 calls with DRM_IOCTL_I915_GEM_CONTEXT_DESTROY request on OsContextLinux destruction
// Expect 1 call with DRM_IOCTL_GEM_CLOSE request on BufferObject close // Expect 1 call with DRM_IOCTL_GEM_CLOSE request on BufferObject close

View File

@ -1053,11 +1053,7 @@ TEST_F(DrmMemoryManagerWithExplicitExpectationsTest, givenDrmMemoryManagerCreate
TEST_F(DrmMemoryManagerWithExplicitExpectationsTest, givenDrmMemoryManagerCreatedWithGemCloseWorkerActiveThenGemCloseWorkerIsCreated) { TEST_F(DrmMemoryManagerWithExplicitExpectationsTest, givenDrmMemoryManagerCreatedWithGemCloseWorkerActiveThenGemCloseWorkerIsCreated) {
DrmMemoryManager drmMemoryManger(gemCloseWorkerMode::gemCloseWorkerActive, false, false, *executionEnvironment); DrmMemoryManager drmMemoryManger(gemCloseWorkerMode::gemCloseWorkerActive, false, false, *executionEnvironment);
if (executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice) { EXPECT_NE(nullptr, drmMemoryManger.peekGemCloseWorker());
EXPECT_NE(nullptr, drmMemoryManger.peekGemCloseWorker());
} else {
EXPECT_EQ(nullptr, drmMemoryManger.peekGemCloseWorker());
}
} }
TEST_F(DrmMemoryManagerTest, GivenAllocationWhenClosingSharedHandleThenSucceeds) { TEST_F(DrmMemoryManagerTest, GivenAllocationWhenClosingSharedHandleThenSucceeds) {
@ -2807,11 +2803,7 @@ TEST_F(DrmMemoryManagerBasic, givenEnabledGemCloseWorkerWhenMemoryManagerIsCreat
TEST_F(DrmMemoryManagerBasic, givenDefaultGemCloseWorkerWhenMemoryManagerIsCreatedThenGemCloseWorker) { TEST_F(DrmMemoryManagerBasic, givenDefaultGemCloseWorkerWhenMemoryManagerIsCreatedThenGemCloseWorker) {
MemoryManagerCreate<DrmMemoryManager> memoryManager(false, false, gemCloseWorkerMode::gemCloseWorkerActive, false, false, executionEnvironment); MemoryManagerCreate<DrmMemoryManager> memoryManager(false, false, gemCloseWorkerMode::gemCloseWorkerActive, false, false, executionEnvironment);
if (executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->capabilityTable.isIntegratedDevice) { EXPECT_NE(memoryManager.peekGemCloseWorker(), nullptr);
EXPECT_NE(nullptr, memoryManager.peekGemCloseWorker());
} else {
EXPECT_EQ(nullptr, memoryManager.peekGemCloseWorker());
}
} }
TEST_F(DrmMemoryManagerBasic, givenEnabledAsyncDeleterFlagWhenMemoryManagerIsCreatedThenAsyncDeleterEnabledIsFalseAndDeleterIsNullptr) { TEST_F(DrmMemoryManagerBasic, givenEnabledAsyncDeleterFlagWhenMemoryManagerIsCreatedThenAsyncDeleterEnabledIsFalseAndDeleterIsNullptr) {