mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
performance: Do not create global fence allocation on integrated
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
d5f39fce5e
commit
8978ea5e5a
@@ -4472,6 +4472,9 @@ HWTEST2_F(CommandStreamReceiverHwTest,
|
||||
givenImmediateFlushTaskWhenOneTimeContextSystemFenceRequiredThenExpectOneTimeSystemFenceCommand,
|
||||
IsHeapfulSupportedAndAtLeastXeHpcCore) {
|
||||
using STATE_SYSTEM_MEM_FENCE_ADDRESS = typename FamilyType::STATE_SYSTEM_MEM_FENCE_ADDRESS;
|
||||
if (pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice) {
|
||||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
|
||||
commandStreamReceiver.storeMakeResidentAllocations = true;
|
||||
|
||||
@@ -199,7 +199,7 @@ HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenDebugFlagSetToTrueWhenCrea
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(1);
|
||||
|
||||
if (heaplessStateInit) {
|
||||
if (heaplessStateInit || pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice) {
|
||||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "shared/source/os_interface/windows/wddm_residency_controller.h"
|
||||
#include "shared/test/common/cmd_parse/hw_parse.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
#include "shared/test/common/helpers/memory_management.h"
|
||||
#include "shared/test/common/helpers/unit_test_helper.h"
|
||||
#include "shared/test/common/helpers/variable_backup.h"
|
||||
#include "shared/test/common/mocks/mock_io_functions.h"
|
||||
@@ -86,7 +87,6 @@ using WddmDirectSubmissionWithMockGdiDllTest = Test<WddmDirectSubmissionWithMock
|
||||
HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndStartedThenExpectProperCommandsDispatched) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
|
||||
std::unique_ptr<MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>>> wddmDirectSubmission =
|
||||
std::make_unique<MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>>>(*device->getDefaultEngine().commandStreamReceiver);
|
||||
|
||||
@@ -120,9 +120,15 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndStartedThe
|
||||
EXPECT_EQ(1u, wddmMockInterface->destroyMonitorFenceCalled);
|
||||
}
|
||||
|
||||
HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedWithMiMemFenceSupportedThenMakeGlobalFenceResident) {
|
||||
struct WddmDirectSubmissionGlobalFenceTest : public WddmDirectSubmissionTest {
|
||||
void SetUp() override {
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(1);
|
||||
WddmDirectSubmissionTest::SetUp();
|
||||
}
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(1);
|
||||
};
|
||||
|
||||
HWTEST_F(WddmDirectSubmissionGlobalFenceTest, givenWddmWhenDirectIsInitializedWithMiMemFenceSupportedThenMakeGlobalFenceResident) {
|
||||
std::unique_ptr<MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>>> wddmDirectSubmission =
|
||||
std::make_unique<MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>>>(*device->getDefaultEngine().commandStreamReceiver);
|
||||
|
||||
|
||||
@@ -484,26 +484,37 @@ XE2_HPG_CORETEST_F(GfxCoreHelperTestsXe2HpgCore, givenGfxCoreHelperWhenAskedIfFe
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(-1);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(-1);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(-1);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(-1);
|
||||
EXPECT_EQ(gfxCoreHelper.isFenceAllocationRequired(hwInfo), !hwInfo.capabilityTable.isIntegratedDevice);
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_FALSE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(1);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(1);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(1);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(1);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
}
|
||||
|
||||
|
||||
@@ -438,7 +438,7 @@ XE2_HPG_CORETEST_F(EncodeKernelXe2HpgCoreTest, givenDefaultSettingForFenceWhenKe
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*itor);
|
||||
auto &postSyncData = walkerCmd->getPostSync();
|
||||
EXPECT_TRUE(postSyncData.getSystemMemoryFenceRequest());
|
||||
EXPECT_EQ(postSyncData.getSystemMemoryFenceRequest(), !pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice);
|
||||
}
|
||||
|
||||
XE2_HPG_CORETEST_F(EncodeKernelXe2HpgCoreTest, givenCleanHeapsAndSlmNotChangedAndUncachedMocsRequestedThenSBAIsProgrammedAndMocsAreSet) {
|
||||
|
||||
@@ -486,26 +486,37 @@ XE3_CORETEST_F(GfxCoreHelperTestsXe3Core, givenGfxCoreHelperWhenAskedIfFenceAllo
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(-1);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(-1);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(-1);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(-1);
|
||||
EXPECT_EQ(gfxCoreHelper.isFenceAllocationRequired(hwInfo), !hwInfo.capabilityTable.isIntegratedDevice);
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_FALSE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(1);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(1);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(1);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
|
||||
debugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0);
|
||||
debugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0);
|
||||
debugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(1);
|
||||
EXPECT_TRUE(gfxCoreHelper.isFenceAllocationRequired(hwInfo));
|
||||
}
|
||||
|
||||
|
||||
@@ -379,7 +379,7 @@ XE3_CORETEST_F(EncodeKernelXe3CoreTest, givenDefaultSettingForFenceWhenKernelUse
|
||||
|
||||
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*itor);
|
||||
auto &postSyncData = walkerCmd->getPostSync();
|
||||
EXPECT_TRUE(postSyncData.getSystemMemoryFenceRequest());
|
||||
EXPECT_EQ(postSyncData.getSystemMemoryFenceRequest(), !pDevice->getHardwareInfo().capabilityTable.isIntegratedDevice);
|
||||
}
|
||||
|
||||
XE3_CORETEST_F(EncodeKernelXe3CoreTest, givenDebugFlagSetWhenSetPropertiesAllCalledThenDisablePipelinedThreadArbitrationPolicy) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2024 Intel Corporation
|
||||
* Copyright (C) 2022-2025 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -56,7 +56,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcWhenEncodeAdditionalWalkerFieldsThenPo
|
||||
testInput.programGlobalFenceAsPostSyncOperationInComputeWalker);
|
||||
|
||||
postSyncData.setSystemMemoryFenceRequest(false);
|
||||
EncodeDispatchKernel<FamilyType>::encodeWalkerPostSyncFields(walkerCmd, walkerArgs);
|
||||
EncodeDispatchKernel<FamilyType>::encodeWalkerPostSyncFields(walkerCmd, rootDeviceEnvironment, walkerArgs);
|
||||
EXPECT_EQ(testInput.expectSystemMemoryFenceRequest, postSyncData.getSystemMemoryFenceRequest());
|
||||
}
|
||||
}
|
||||
@@ -78,7 +78,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcSupportsSystemMemoryFenceWhenNoSystemF
|
||||
hwInfo.platform.usDeviceID = deviceId;
|
||||
|
||||
postSyncData.setSystemMemoryFenceRequest(true);
|
||||
EncodeDispatchKernel<FamilyType>::encodeWalkerPostSyncFields(walkerCmd, walkerArgs);
|
||||
EncodeDispatchKernel<FamilyType>::encodeWalkerPostSyncFields(walkerCmd, rootDeviceEnvironment, walkerArgs);
|
||||
EXPECT_FALSE(postSyncData.getSystemMemoryFenceRequest());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user