Refactor state base address programing 1/n

This refactor simplifies internal interfaces and implementations for
different platforms. The change is introduction into adapting
state base address helper class for all functional needs of the driver.

Related-To: NEO-5055

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2023-02-21 20:17:22 +00:00
committed by Compute-Runtime-Automation
parent 29ed6ea077
commit c7ca1b8cc7
17 changed files with 93 additions and 82 deletions

View File

@@ -15,7 +15,6 @@ using Family = NEO::Gen8Family;
#include "shared/source/command_container/command_encoder_bdw_and_later.inl"
#include "shared/source/command_container/encode_compute_mode_bdw_and_later.inl"
#include "shared/source/command_container/image_surface_state/compression_params_bdw_and_later.inl"
#include "shared/source/helpers/state_base_address_bdw.inl"
namespace NEO {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2022 Intel Corporation
* Copyright (C) 2018-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -11,12 +11,13 @@
#include "shared/source/helpers/state_base_address_bdw_and_later.inl"
namespace NEO {
using Family = Gen8Family;
template <>
void StateBaseAddressHelper<Gen8Family>::programStateBaseAddress(
StateBaseAddressHelperArgs<Gen8Family> &args) {
void StateBaseAddressHelper<Family>::programStateBaseAddress(
StateBaseAddressHelperArgs<Family> &args) {
*args.stateBaseAddressCmd = Gen8Family::cmdInitStateBaseAddress;
*args.stateBaseAddressCmd = Family::cmdInitStateBaseAddress;
if (args.dsh) {
args.stateBaseAddressCmd->setDynamicStateBaseAddressModifyEnable(true);
@@ -25,12 +26,7 @@ void StateBaseAddressHelper<Gen8Family>::programStateBaseAddress(
args.stateBaseAddressCmd->setDynamicStateBufferSize(args.dsh->getHeapSizeInPages());
}
if (args.ioh) {
args.stateBaseAddressCmd->setIndirectObjectBaseAddressModifyEnable(true);
args.stateBaseAddressCmd->setIndirectObjectBufferSizeModifyEnable(true);
args.stateBaseAddressCmd->setIndirectObjectBaseAddress(args.ioh->getHeapGpuBase());
args.stateBaseAddressCmd->setIndirectObjectBufferSize(args.ioh->getHeapSizeInPages());
}
StateBaseAddressHelper<Family>::appendIohParameters(args);
if (args.ssh) {
args.stateBaseAddressCmd->setSurfaceStateBaseAddressModifyEnable(true);
@@ -68,7 +64,7 @@ void StateBaseAddressHelper<Gen8Family>::programStateBaseAddress(
args.stateBaseAddressCmd->setStatelessDataPortAccessMemoryObjectControlState(args.statelessMocsIndex);
appendStateBaseAddressParameters(args, true);
appendStateBaseAddressParameters(args);
}
template struct StateBaseAddressHelper<Gen8Family>;
template struct StateBaseAddressHelper<Family>;
} // namespace NEO

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2022 Intel Corporation
* Copyright (C) 2018-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -60,8 +60,7 @@ struct StateBaseAddressHelper {
static void appendIohParameters(StateBaseAddressHelperArgs<GfxFamily> &args);
static void appendStateBaseAddressParameters(StateBaseAddressHelperArgs<GfxFamily> &args,
bool overrideBindlessSurfaceStateBase);
static void appendStateBaseAddressParameters(StateBaseAddressHelperArgs<GfxFamily> &args);
static void appendExtraCacheSettings(StateBaseAddressHelperArgs<GfxFamily> &args);

View File

@@ -35,7 +35,6 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
StateBaseAddressHelperArgs<GfxFamily> &args) {
*args.stateBaseAddressCmd = GfxFamily::cmdInitStateBaseAddress;
bool overrideBindlessSurfaceStateBase = true;
const auto surfaceStateCount = getMaxBindlessSurfaceStates();
args.stateBaseAddressCmd->setBindlessSurfaceStateSize(surfaceStateCount);
@@ -51,8 +50,6 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true);
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(args.globalHeapsBaseAddress);
overrideBindlessSurfaceStateBase = false;
} else {
if (args.dsh) {
args.stateBaseAddressCmd->setDynamicStateBaseAddressModifyEnable(true);
@@ -67,8 +64,6 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
}
}
appendIohParameters(args);
if (args.setInstructionStateBaseAddress) {
args.stateBaseAddressCmd->setInstructionBaseAddressModifyEnable(true);
args.stateBaseAddressCmd->setInstructionBaseAddress(args.instructionHeapBaseAddress);
@@ -104,7 +99,7 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
args.stateBaseAddressCmd->setStatelessDataPortAccessMemoryObjectControlState(args.statelessMocsIndex);
appendStateBaseAddressParameters(args, overrideBindlessSurfaceStateBase);
appendStateBaseAddressParameters(args);
}
template <typename GfxFamily>

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation
* Copyright (C) 2020-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -11,8 +11,7 @@ namespace NEO {
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
StateBaseAddressHelperArgs<GfxFamily> &args,
bool overrideBindlessSurfaceStateBase) {
StateBaseAddressHelperArgs<GfxFamily> &args) {
}
template <typename GfxFamily>

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation
* Copyright (C) 2020-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -11,10 +11,9 @@ namespace NEO {
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
StateBaseAddressHelperArgs<GfxFamily> &args,
bool overrideBindlessSurfaceStateBase) {
StateBaseAddressHelperArgs<GfxFamily> &args) {
if (overrideBindlessSurfaceStateBase && args.ssh) {
if (!args.useGlobalHeapsBaseAddress && args.ssh) {
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true);
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(args.ssh->getHeapGpuBase());
uint32_t size = uint32_t(args.ssh->getMaxAvailableSpace() / 64) - 1;
@@ -29,6 +28,8 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
args.stateBaseAddressCmd->setBindlessSurfaceStateMemoryObjectControlState(args.gmmHelper->getMOCS(l3CacheOnPolicy));
args.stateBaseAddressCmd->setBindlessSamplerStateMemoryObjectControlState(args.gmmHelper->getMOCS(l3CacheOnPolicy));
}
StateBaseAddressHelper<GfxFamily>::appendIohParameters(args);
}
template <typename GfxFamily>

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation
* Copyright (C) 2020-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -11,15 +11,16 @@ namespace NEO {
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
StateBaseAddressHelperArgs<GfxFamily> &args,
bool overrideBindlessSurfaceStateBase) {
StateBaseAddressHelperArgs<GfxFamily> &args) {
if (overrideBindlessSurfaceStateBase && args.ssh) {
if (!args.useGlobalHeapsBaseAddress && args.ssh) {
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true);
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(args.ssh->getHeapGpuBase());
uint32_t size = uint32_t(args.ssh->getMaxAvailableSpace() / 64) - 1;
args.stateBaseAddressCmd->setBindlessSurfaceStateSize(size);
}
StateBaseAddressHelper<GfxFamily>::appendIohParameters(args);
}
template <typename GfxFamily>

View File

@@ -1,18 +0,0 @@
/*
* Copyright (C) 2022-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendExtraCacheSettings(StateBaseAddressHelperArgs<GfxFamily> &args) {
auto &productHelper = args.gmmHelper->getRootDeviceEnvironment().template getHelper<ProductHelper>();
auto cachePolicy = productHelper.getL1CachePolicy(args.isDebuggerActive);
args.stateBaseAddressCmd->setL1CachePolicyL1CacheControl(static_cast<typename STATE_BASE_ADDRESS::L1_CACHE_POLICY>(cachePolicy));
if (DebugManager.flags.ForceStatelessL1CachingPolicy.get() != -1 &&
DebugManager.flags.ForceAllResourcesUncached.get() == false) {
args.stateBaseAddressCmd->setL1CachePolicyL1CacheControl(static_cast<typename STATE_BASE_ADDRESS::L1_CACHE_POLICY>(DebugManager.flags.ForceStatelessL1CachingPolicy.get()));
}
}

View File

@@ -6,8 +6,10 @@
*/
#include "shared/source/debug_settings/debug_settings_manager.h"
#include "shared/source/execution_environment/root_device_environment.h"
#include "shared/source/gmm_helper/cache_settings_helper.h"
#include "shared/source/helpers/state_base_address_base.inl"
#include "shared/source/os_interface/hw_info_config.h"
namespace NEO {
@@ -24,8 +26,7 @@ void setSbaStatelessCompressionParams(typename GfxFamily::STATE_BASE_ADDRESS *st
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
StateBaseAddressHelperArgs<GfxFamily> &args,
bool overrideBindlessSurfaceStateBase) {
StateBaseAddressHelperArgs<GfxFamily> &args) {
using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE;
using STATE_BASE_ADDRESS = typename GfxFamily::STATE_BASE_ADDRESS;
@@ -33,7 +34,7 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
args.stateBaseAddressCmd->setGeneralStateBaseAddress(args.gmmHelper->decanonize(args.indirectObjectHeapBaseAddress));
}
if (overrideBindlessSurfaceStateBase && args.ssh) {
if (!args.useGlobalHeapsBaseAddress && args.ssh) {
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(args.ssh->getHeapGpuBase());
args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true);
const auto surfaceStateCount = args.ssh->getMaxAvailableSpace() / sizeof(RENDER_SURFACE_STATE);
@@ -102,12 +103,25 @@ void StateBaseAddressHelper<GfxFamily>::programBindingTableBaseAddress(LinearStr
*bindingTablePoolAlloc = cmd;
}
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendIohParameters(StateBaseAddressHelperArgs<GfxFamily> &args) {
}
template <typename GfxFamily>
uint32_t StateBaseAddressHelper<GfxFamily>::getMaxBindlessSurfaceStates() {
return std::numeric_limits<uint32_t>::max();
}
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendExtraCacheSettings(StateBaseAddressHelperArgs<GfxFamily> &args) {
auto &productHelper = args.gmmHelper->getRootDeviceEnvironment().template getHelper<ProductHelper>();
auto cachePolicy = productHelper.getL1CachePolicy(args.isDebuggerActive);
args.stateBaseAddressCmd->setL1CachePolicyL1CacheControl(static_cast<typename STATE_BASE_ADDRESS::L1_CACHE_POLICY>(cachePolicy));
if (DebugManager.flags.ForceStatelessL1CachingPolicy.get() != -1 &&
DebugManager.flags.ForceAllResourcesUncached.get() == false) {
args.stateBaseAddressCmd->setL1CachePolicyL1CacheControl(static_cast<typename STATE_BASE_ADDRESS::L1_CACHE_POLICY>(DebugManager.flags.ForceStatelessL1CachingPolicy.get()));
}
}
template <typename GfxFamily>
void StateBaseAddressHelper<GfxFamily>::appendIohParameters(StateBaseAddressHelperArgs<GfxFamily> &args) {
}
} // namespace NEO

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation
* Copyright (C) 2020-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -9,6 +9,5 @@
#include "shared/source/xe_hpc_core/hw_cmds_xe_hpc_core_base.h"
namespace NEO {
#include "shared/source/helpers/state_base_address_xe_hpg_core_and_later.inl"
template struct StateBaseAddressHelper<XeHpcCoreFamily>;
} // namespace NEO

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -9,6 +9,5 @@
#include "shared/source/xe_hpg_core/hw_cmds_xe_hpg_core_base.h"
namespace NEO {
#include "shared/source/helpers/state_base_address_xe_hpg_core_and_later.inl"
template struct StateBaseAddressHelper<XeHpgCoreFamily>;
} // namespace NEO

View File

@@ -240,7 +240,7 @@ HWTEST2_F(XeHpAndLaterSbaTest, givenMemoryCompressionEnabledWhenAppendingSbaThen
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
if (memoryCompressionState == MemoryCompressionState::Enabled) {
EXPECT_EQ(FamilyType::STATE_BASE_ADDRESS::ENABLE_MEMORY_COMPRESSION_FOR_ALL_STATELESS_ACCESSES_ENABLED, sbaCmd.getEnableMemoryCompressionForAllStatelessAccesses());
} else {
@@ -275,6 +275,6 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, XeHpAndLaterSbaTest, givenNonZeroInternalHeapBaseAd
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(0ull, sbaCmd.getGeneralStateBaseAddress());
}

View File

@@ -42,7 +42,7 @@ BDWTEST_F(SbaTest, givenUsedBindlessBuffersWhenAppendStateBaseAddressParametersI
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(0u, ssh.getUsed());
EXPECT_EQ(0, memcmp(&stateBaseAddressReference, &stateBaseAddress, sizeof(STATE_BASE_ADDRESS)));

View File

@@ -51,7 +51,7 @@ HWTEST2_F(SbaTest, WhenAppendStateBaseAddressParametersIsCalledThenSBACmdHasBind
false // isDebuggerActive
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(ssh.getMaxAvailableSpace() / 64 - 1, stateBaseAddress.getBindlessSurfaceStateSize());
EXPECT_EQ(ssh.getHeapGpuBase(), stateBaseAddress.getBindlessSurfaceStateBaseAddress());
@@ -337,7 +337,7 @@ HWTEST2_F(SbaTest, givenSbaWhenOverrideBindlessSurfaceBaseIsFalseThenBindlessSur
false // isDebuggerActive
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, false);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(0u, stateBaseAddress.getBindlessSurfaceStateBaseAddress());
}
@@ -576,12 +576,12 @@ HWTEST2_F(SbaTest, givenDebugFlagSetWhenAppendingSbaThenProgramCorrectL1CachePol
for (const auto &input : testInputs) {
DebugManagerStateRestore restore;
DebugManager.flags.OverrideL1CachePolicyInSurfaceStateAndStateless.set(input.option);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(input.cachePolicy, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceAllResourcesUncached.set(true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(FamilyType::STATE_BASE_ADDRESS::L1_CACHE_POLICY_UC, sbaCmd.getL1CachePolicyL1CacheControl());
}
}
@@ -854,3 +854,30 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, SbaTest,
auto surfaceStateCount = StateBaseAddressHelper<FamilyType>::getMaxBindlessSurfaceStates();
EXPECT_EQ(surfaceStateCount, sbaCmd.getBindlessSurfaceStateSize());
}
HWTEST2_F(SbaTest, GivenPlatformNotSupportingIndirectHeapBaseWhenProgramIndirectHeapThenNothingHappens, IsAtLeastXeHpCore) {
StateBaseAddressHelperArgs<FamilyType> args = {
0, // generalStateBase
0, // indirectObjectHeapBaseAddress
0, // instructionHeapBaseAddress
0, // globalHeapsBaseAddress
0, // surfaceStateBaseAddress
nullptr, // stateBaseAddressCmd
nullptr, // dsh
nullptr, // ioh
nullptr, // ssh
nullptr, // gmmHelper
nullptr, // hwInfo
0, // statelessMocsIndex
MemoryCompressionState::NotApplicable, // memoryCompressionState
false, // setInstructionStateBaseAddress
false, // setGeneralStateBaseAddress
false, // useGlobalHeapsBaseAddress
false, // isMultiOsContextCapable
false, // useGlobalAtomics
false, // areMultipleSubDevicesInContext
false, // overrideSurfaceStateBaseAddress
false // isDebuggerActive
};
StateBaseAddressHelper<FamilyType>::appendIohParameters(args);
}

View File

@@ -702,7 +702,7 @@ XE_HPC_CORETEST_F(XeHpcSbaTest, givenSpecificProductFamilyWhenAppendingSbaThenPr
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(FamilyType::STATE_BASE_ADDRESS::L1_CACHE_POLICY_WBP, sbaCmd.getL1CachePolicyL1CacheControl());
}
@@ -733,19 +733,19 @@ XE_HPC_CORETEST_F(XeHpcSbaTest, givenL1CachingOverrideWhenStateBaseAddressIsProg
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(0u, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceStatelessL1CachingPolicy.set(2u);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(2u, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceAllResourcesUncached.set(true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(1u, sbaCmd.getL1CachePolicyL1CacheControl());
}

View File

@@ -107,11 +107,11 @@ DG2TEST_F(Dg2SbaTest, givenSpecificProductFamilyWhenAppendingSbaThenProgramCorre
false, // overrideSurfaceStateBaseAddress
false // isDebuggerActive
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(FamilyType::STATE_BASE_ADDRESS::L1_CACHE_POLICY_WB, sbaCmd.getL1CachePolicyL1CacheControl());
args.isDebuggerActive = true;
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(FamilyType::STATE_BASE_ADDRESS::L1_CACHE_POLICY_WBP, sbaCmd.getL1CachePolicyL1CacheControl());
}
@@ -141,19 +141,19 @@ DG2TEST_F(Dg2SbaTest, givenL1CachingOverrideWhenStateBaseAddressIsProgrammedThen
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(0u, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceStatelessL1CachingPolicy.set(2u);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(2u, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceAllResourcesUncached.set(true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(1u, sbaCmd.getL1CachePolicyL1CacheControl());
}

View File

@@ -122,7 +122,7 @@ XE_HPG_CORETEST_F(XeHpgSbaTest, givenSpecificProductFamilyWhenAppendingSbaThenPr
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(FamilyType::STATE_BASE_ADDRESS::L1_CACHE_POLICY_WBP, sbaCmd.getL1CachePolicyL1CacheControl());
}
@@ -153,19 +153,19 @@ XE_HPG_CORETEST_F(XeHpgSbaTest, givenL1CachingOverrideWhenStateBaseAddressIsProg
false, // areMultipleSubDevicesInContext
false // overrideSurfaceStateBaseAddress
};
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(0u, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceStatelessL1CachingPolicy.set(2u);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(2u, sbaCmd.getL1CachePolicyL1CacheControl());
DebugManager.flags.ForceAllResourcesUncached.set(true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args, true);
StateBaseAddressHelper<FamilyType>::appendStateBaseAddressParameters(args);
EXPECT_EQ(1u, sbaCmd.getL1CachePolicyL1CacheControl());
}