mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
Remove SBA->IOH programming on XE_HP_SDV
Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
7f3b90b07f
commit
4ba4c32766
@@ -8,6 +8,7 @@
|
||||
#pragma once
|
||||
#include "shared/source/command_container/cmdcontainer.h"
|
||||
#include "shared/source/command_stream/linear_stream.h"
|
||||
#include "shared/source/debugger/debugger.h"
|
||||
#include "shared/source/execution_environment/execution_environment.h"
|
||||
#include "shared/source/helpers/definitions/mi_flush_args.h"
|
||||
#include "shared/source/helpers/register_offsets.h"
|
||||
@@ -221,6 +222,7 @@ struct EncodeStateBaseAddress {
|
||||
using STATE_BASE_ADDRESS = typename GfxFamily::STATE_BASE_ADDRESS;
|
||||
static void encode(CommandContainer &container, STATE_BASE_ADDRESS &sbaCmd);
|
||||
static void encode(CommandContainer &container, STATE_BASE_ADDRESS &sbaCmd, uint32_t statelessMocsIndex, bool useGlobalAtomics);
|
||||
static void setIohAddressForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd);
|
||||
static size_t getRequiredSizeForStateBaseAddress(Device &device, CommandContainer &container);
|
||||
};
|
||||
|
||||
|
||||
@@ -361,6 +361,11 @@ template <typename Family>
|
||||
inline void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &container, const NEO::KernelDescriptor &kernelDescriptor) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeStateBaseAddress<Family>::setIohAddressForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
sbaAddress.IndirectObjectBaseAddress = sbaCmd.getIndirectObjectBaseAddress();
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeStateBaseAddress<Family>::encode(CommandContainer &container, STATE_BASE_ADDRESS &sbaCmd) {
|
||||
auto gmmHelper = container.getDevice()->getRootDeviceEnvironment().getGmmHelper();
|
||||
|
||||
@@ -450,6 +450,10 @@ size_t EncodeDispatchKernel<Family>::estimateEncodeDispatchKernelCmdsSize(Device
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeStateBaseAddress<Family>::setIohAddressForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeStateBaseAddress<Family>::encode(CommandContainer &container, STATE_BASE_ADDRESS &sbaCmd) {
|
||||
auto gmmHelper = container.getDevice()->getRootDeviceEnvironment().getGmmHelper();
|
||||
|
||||
@@ -87,6 +87,8 @@ class CommandStreamReceiverHw : public CommandStreamReceiver {
|
||||
const LinearStream &ssh,
|
||||
uint64_t generalStateBase);
|
||||
|
||||
void collectStateBaseAddresIohPatchInfo(uint64_t commandBufferAddress, uint64_t commandOffset, const LinearStream &ioh);
|
||||
|
||||
void resetKmdNotifyHelper(KmdNotifyHelper *newHelper);
|
||||
|
||||
CommandStreamReceiverType getType() override {
|
||||
|
||||
@@ -986,12 +986,11 @@ void CommandStreamReceiverHw<GfxFamily>::collectStateBaseAddresPatchInfo(
|
||||
PatchInfoData dynamicStatePatchInfo = {dsh.getGraphicsAllocation()->getGpuAddress(), 0u, PatchInfoAllocationType::DynamicStateHeap, baseAddress, commandOffset + STATE_BASE_ADDRESS::PATCH_CONSTANTS::DYNAMICSTATEBASEADDRESS_BYTEOFFSET, PatchInfoAllocationType::Default};
|
||||
PatchInfoData generalStatePatchInfo = {generalStateBase, 0u, PatchInfoAllocationType::GeneralStateHeap, baseAddress, commandOffset + STATE_BASE_ADDRESS::PATCH_CONSTANTS::GENERALSTATEBASEADDRESS_BYTEOFFSET, PatchInfoAllocationType::Default};
|
||||
PatchInfoData surfaceStatePatchInfo = {ssh.getGraphicsAllocation()->getGpuAddress(), 0u, PatchInfoAllocationType::SurfaceStateHeap, baseAddress, commandOffset + STATE_BASE_ADDRESS::PATCH_CONSTANTS::SURFACESTATEBASEADDRESS_BYTEOFFSET, PatchInfoAllocationType::Default};
|
||||
PatchInfoData indirectObjectPatchInfo = {ioh.getGraphicsAllocation()->getGpuAddress(), 0u, PatchInfoAllocationType::IndirectObjectHeap, baseAddress, commandOffset + STATE_BASE_ADDRESS::PATCH_CONSTANTS::INDIRECTOBJECTBASEADDRESS_BYTEOFFSET, PatchInfoAllocationType::Default};
|
||||
|
||||
flatBatchBufferHelper->setPatchInfoData(dynamicStatePatchInfo);
|
||||
flatBatchBufferHelper->setPatchInfoData(generalStatePatchInfo);
|
||||
flatBatchBufferHelper->setPatchInfoData(surfaceStatePatchInfo);
|
||||
flatBatchBufferHelper->setPatchInfoData(indirectObjectPatchInfo);
|
||||
collectStateBaseAddresIohPatchInfo(baseAddress, commandOffset, ioh);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
*/
|
||||
|
||||
#include "shared/source/command_stream/command_stream_receiver_hw_base.inl"
|
||||
#include "shared/source/helpers/address_patch.h"
|
||||
|
||||
#include "hw_cmds.h"
|
||||
|
||||
namespace NEO {
|
||||
|
||||
@@ -118,6 +121,15 @@ size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForPerDssBackedBuffer(const
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void CommandStreamReceiverHw<GfxFamily>::collectStateBaseAddresIohPatchInfo(uint64_t commandBufferAddress, uint64_t commandOffset, const LinearStream &ioh) {
|
||||
using STATE_BASE_ADDRESS = typename GfxFamily::STATE_BASE_ADDRESS;
|
||||
|
||||
PatchInfoData indirectObjectPatchInfo = {ioh.getGraphicsAllocation()->getGpuAddress(), 0u, PatchInfoAllocationType::IndirectObjectHeap, commandBufferAddress,
|
||||
commandOffset + STATE_BASE_ADDRESS::PATCH_CONSTANTS::INDIRECTOBJECTBASEADDRESS_BYTEOFFSET, PatchInfoAllocationType::Default};
|
||||
flatBatchBufferHelper->setPatchInfoData(indirectObjectPatchInfo);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForActivePartitionConfig() const {
|
||||
return 0;
|
||||
|
||||
@@ -139,6 +139,10 @@ GraphicsAllocation *CommandStreamReceiverHw<GfxFamily>::getClearColorAllocation(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void CommandStreamReceiverHw<GfxFamily>::collectStateBaseAddresIohPatchInfo(uint64_t commandBufferAddress, uint64_t commandOffset, const LinearStream &ioh) {
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForActivePartitionConfig() const {
|
||||
if (this->staticWorkPartitioningEnabled && csrSizeRequestFlags.activePartitionsChanged) {
|
||||
|
||||
@@ -131,7 +131,6 @@ DECLARE_DEBUG_VARIABLE(int32_t, ForceStatelessL1CachingPolicy, -1, "-1: default,
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, ForceMemoryBankIndexOverride, -1, "-1: default, 0: disable, 1:enable, Force index=1 of memory bank for XEHP")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnablePrivateScratchSlot1, -1, "-1: default, 0: disable, 1: enable Allows using private scratch space")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, DisablePipeControlPrecedingPostSyncCommand, -1, "-1 default - disabled adding PIPE_CONTROL, 0 - disabled adding PIPE_CONTROL, 1 - enabled adding PIPE_CONTROL")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, UseCachingPolicyForIndirectObjectHeap, -1, "Use selected caching policy for IOH, -1 - default, 0 - Uncached, 1 - L3 Caching, 2 - L1 Caching")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, MultiTileIsaPlacement, -1, "Place ISA allocation on multi tiles, -1 - default, 0 - disabled, 1 - enabled")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, FormatForStatelessCompressionWithUnifiedMemory, 0xF, "Format for stateless compression with unified memory")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, ForceMultiGpuPartialWritesInComputeMode, -1, "-1: default - 0 for multiOsContext capable, 0: program value 0 in MultiGpuPartialWrites bit in STATE_COMPUTE_MODE, 1: program value 1 in MultiGpuPartialWrites bit in STATE_COMPUTE_MODE,")
|
||||
|
||||
@@ -2898,12 +2898,7 @@ typedef struct tagSTATE_BASE_ADDRESS {
|
||||
uint64_t Reserved_203 : BITFIELD_RANGE(11, 11);
|
||||
uint64_t DynamicStateBaseAddress : BITFIELD_RANGE(12, 63);
|
||||
// DWORD 8-9
|
||||
uint64_t IndirectObjectBaseAddressModifyEnable : BITFIELD_RANGE(0, 0);
|
||||
uint64_t Reserved_257 : BITFIELD_RANGE(1, 3);
|
||||
uint64_t IndirectObjectMemoryObjectControlState_Reserved : BITFIELD_RANGE(4, 4);
|
||||
uint64_t IndirectObjectMemoryObjectControlState_IndexToMocsTables : BITFIELD_RANGE(5, 10);
|
||||
uint64_t Reserved_267 : BITFIELD_RANGE(11, 11);
|
||||
uint64_t IndirectObjectBaseAddress : BITFIELD_RANGE(12, 63);
|
||||
uint64_t Reserved8 : BITFIELD_RANGE(0, 63);
|
||||
// DWORD 10-11
|
||||
uint64_t InstructionBaseAddressModifyEnable : BITFIELD_RANGE(0, 0);
|
||||
uint64_t Reserved_321 : BITFIELD_RANGE(1, 3);
|
||||
@@ -2982,8 +2977,6 @@ typedef struct tagSTATE_BASE_ADDRESS {
|
||||
SURFACESTATEBASEADDRESS_INDEX = 0x4,
|
||||
DYNAMICSTATEBASEADDRESS_BYTEOFFSET = 0x18,
|
||||
DYNAMICSTATEBASEADDRESS_INDEX = 0x6,
|
||||
INDIRECTOBJECTBASEADDRESS_BYTEOFFSET = 0x20,
|
||||
INDIRECTOBJECTBASEADDRESS_INDEX = 0x8,
|
||||
INSTRUCTIONBASEADDRESS_BYTEOFFSET = 0x28,
|
||||
INSTRUCTIONBASEADDRESS_INDEX = 0xa,
|
||||
BINDLESSSURFACESTATEBASEADDRESS_BYTEOFFSET = 0x40,
|
||||
@@ -3141,34 +3134,6 @@ typedef struct tagSTATE_BASE_ADDRESS {
|
||||
inline uint64_t getDynamicStateBaseAddress(void) const {
|
||||
return (TheStructure.Common.DynamicStateBaseAddress << DYNAMICSTATEBASEADDRESS_BIT_SHIFT);
|
||||
}
|
||||
inline void setIndirectObjectBaseAddressModifyEnable(const bool value) {
|
||||
TheStructure.Common.IndirectObjectBaseAddressModifyEnable = value;
|
||||
}
|
||||
inline bool getIndirectObjectBaseAddressModifyEnable(void) const {
|
||||
return (TheStructure.Common.IndirectObjectBaseAddressModifyEnable);
|
||||
}
|
||||
inline void setIndirectObjectMemoryObjectControlStateReserved(const uint64_t value) {
|
||||
TheStructure.Common.IndirectObjectMemoryObjectControlState_Reserved = value;
|
||||
}
|
||||
inline uint64_t getIndirectObjectMemoryObjectControlStateReserved(void) const {
|
||||
return (TheStructure.Common.IndirectObjectMemoryObjectControlState_Reserved);
|
||||
}
|
||||
inline void setIndirectObjectMemoryObjectControlStateIndexToMocsTables(const uint64_t value) {
|
||||
TheStructure.Common.IndirectObjectMemoryObjectControlState_IndexToMocsTables = value >> 1;
|
||||
}
|
||||
inline uint64_t getIndirectObjectMemoryObjectControlStateIndexToMocsTables(void) const {
|
||||
return (TheStructure.Common.IndirectObjectMemoryObjectControlState_IndexToMocsTables << 1);
|
||||
}
|
||||
typedef enum tagINDIRECTOBJECTBASEADDRESS {
|
||||
INDIRECTOBJECTBASEADDRESS_BIT_SHIFT = 0xc,
|
||||
INDIRECTOBJECTBASEADDRESS_ALIGN_SIZE = 0x1000,
|
||||
} INDIRECTOBJECTBASEADDRESS;
|
||||
inline void setIndirectObjectBaseAddress(const uint64_t value) {
|
||||
TheStructure.Common.IndirectObjectBaseAddress = value >> INDIRECTOBJECTBASEADDRESS_BIT_SHIFT;
|
||||
}
|
||||
inline uint64_t getIndirectObjectBaseAddress(void) const {
|
||||
return (TheStructure.Common.IndirectObjectBaseAddress << INDIRECTOBJECTBASEADDRESS_BIT_SHIFT);
|
||||
}
|
||||
inline void setInstructionBaseAddressModifyEnable(const bool value) {
|
||||
TheStructure.Common.InstructionBaseAddressModifyEnable = value;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ struct StateBaseAddressHelper {
|
||||
bool useGlobalAtomics,
|
||||
bool areMultipleSubDevicesInContext);
|
||||
|
||||
static void appendIohParameters(STATE_BASE_ADDRESS *stateBaseAddress, const IndirectHeap *ioh, bool useGlobalHeapsBaseAddress, uint64_t indirectObjectHeapBaseAddress);
|
||||
|
||||
static void appendStateBaseAddressParameters(
|
||||
STATE_BASE_ADDRESS *stateBaseAddress,
|
||||
const IndirectHeap *ssh,
|
||||
|
||||
@@ -43,11 +43,6 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
stateBaseAddress->setDynamicStateBaseAddress(globalHeapsBaseAddress);
|
||||
stateBaseAddress->setDynamicStateBufferSize(MemoryConstants::pageSize64k);
|
||||
|
||||
stateBaseAddress->setIndirectObjectBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBufferSizeModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBaseAddress(indirectObjectHeapBaseAddress);
|
||||
stateBaseAddress->setIndirectObjectBufferSize(MemoryConstants::sizeOf4GBinPageEntities);
|
||||
|
||||
stateBaseAddress->setSurfaceStateBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setSurfaceStateBaseAddress(globalHeapsBaseAddress);
|
||||
|
||||
@@ -64,19 +59,14 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
stateBaseAddress->setDynamicStateBufferSize(dsh->getHeapSizeInPages());
|
||||
}
|
||||
|
||||
if (ioh) {
|
||||
stateBaseAddress->setIndirectObjectBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBufferSizeModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBaseAddress(ioh->getHeapGpuBase());
|
||||
stateBaseAddress->setIndirectObjectBufferSize(ioh->getHeapSizeInPages());
|
||||
}
|
||||
|
||||
if (ssh) {
|
||||
stateBaseAddress->setSurfaceStateBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setSurfaceStateBaseAddress(ssh->getHeapGpuBase());
|
||||
}
|
||||
}
|
||||
|
||||
appendIohParameters(stateBaseAddress, ioh, useGlobalHeapsBaseAddress, indirectObjectHeapBaseAddress);
|
||||
|
||||
if (setInstructionStateBaseAddress) {
|
||||
stateBaseAddress->setInstructionBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setInstructionBaseAddress(instructionHeapBaseAddress);
|
||||
|
||||
@@ -13,4 +13,19 @@ template <typename GfxFamily>
|
||||
void StateBaseAddressHelper<GfxFamily>::programBindingTableBaseAddress(LinearStream &commandStream, const IndirectHeap &ssh, GmmHelper *gmmHelper) {
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void StateBaseAddressHelper<GfxFamily>::appendIohParameters(typename GfxFamily::STATE_BASE_ADDRESS *stateBaseAddress, const IndirectHeap *ioh, bool useGlobalHeapsBaseAddress, uint64_t indirectObjectHeapBaseAddress) {
|
||||
if (useGlobalHeapsBaseAddress) {
|
||||
stateBaseAddress->setIndirectObjectBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBufferSizeModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBaseAddress(indirectObjectHeapBaseAddress);
|
||||
stateBaseAddress->setIndirectObjectBufferSize(MemoryConstants::sizeOf4GBinPageEntities);
|
||||
} else if (ioh) {
|
||||
stateBaseAddress->setIndirectObjectBaseAddressModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBufferSizeModifyEnable(true);
|
||||
stateBaseAddress->setIndirectObjectBaseAddress(ioh->getHeapGpuBase());
|
||||
stateBaseAddress->setIndirectObjectBufferSize(ioh->getHeapSizeInPages());
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -61,7 +61,6 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||
stateBaseAddress->setInstructionMemoryObjectControlState(gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED));
|
||||
}
|
||||
|
||||
stateBaseAddress->setIndirectObjectMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l1L3CacheOnPolicy));
|
||||
stateBaseAddress->setSurfaceStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
|
||||
stateBaseAddress->setDynamicStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
|
||||
stateBaseAddress->setGeneralStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
|
||||
@@ -88,18 +87,6 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||
setSbaStatelessCompressionParams<GfxFamily>(stateBaseAddress, memoryCompressionState);
|
||||
}
|
||||
|
||||
int32_t cachingPolicySetting = DebugManager.flags.UseCachingPolicyForIndirectObjectHeap.get();
|
||||
uint32_t indirectObjectHeapCachingPolicy = l1L3CacheOnPolicy;
|
||||
|
||||
if (cachingPolicySetting != -1) {
|
||||
if (cachingPolicySetting == 0) {
|
||||
indirectObjectHeapCachingPolicy = GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED;
|
||||
} else if (cachingPolicySetting == 1) {
|
||||
indirectObjectHeapCachingPolicy = GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER;
|
||||
}
|
||||
}
|
||||
stateBaseAddress->setIndirectObjectMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(indirectObjectHeapCachingPolicy));
|
||||
|
||||
if (stateBaseAddress->getStatelessDataPortAccessMemoryObjectControlState() == gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER) && DebugManager.flags.ForceL1Caching.get() != 0) {
|
||||
stateBaseAddress->setStatelessDataPortAccessMemoryObjectControlState(gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST));
|
||||
}
|
||||
@@ -123,4 +110,8 @@ void StateBaseAddressHelper<GfxFamily>::programBindingTableBaseAddress(LinearStr
|
||||
*bindingTablePoolAlloc = cmd;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void StateBaseAddressHelper<GfxFamily>::appendIohParameters(STATE_BASE_ADDRESS *stateBaseAddress, const IndirectHeap *ioh, bool useGlobalHeapsBaseAddress, uint64_t indirectObjectHeapBaseAddress) {
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -218,9 +218,6 @@ const void *HardwareParse::getStatelessArgumentPointer<GenGfxFamily>(const Kerne
|
||||
auto inlineDataSize = 32u;
|
||||
|
||||
auto offsetCrossThreadData = cmdWalker->getIndirectDataStartAddress();
|
||||
auto baseAddress = is64bit ? 0u : cmdSBA->getIndirectObjectBaseAddress();
|
||||
EXPECT_LT(offsetCrossThreadData, baseAddress + cmdSBA->getIndirectObjectBufferSize() * MemoryConstants::pageSize);
|
||||
|
||||
offsetCrossThreadData -= static_cast<uint32_t>(ioh.getGraphicsAllocation()->getGpuAddressToPatch());
|
||||
|
||||
// Get the base of cross thread
|
||||
|
||||
@@ -12,4 +12,5 @@ template <>
|
||||
struct TestTraits<IGFX_GEN11_CORE> {
|
||||
static constexpr bool auxBuiltinsSupported = true;
|
||||
static constexpr bool programOnlyChangedFieldsInComputeStateMode = true;
|
||||
static constexpr bool iohInSbaSupported = true;
|
||||
};
|
||||
|
||||
@@ -12,4 +12,5 @@ template <>
|
||||
struct TestTraits<IGFX_GEN12LP_CORE> {
|
||||
static constexpr bool auxBuiltinsSupported = true;
|
||||
static constexpr bool programOnlyChangedFieldsInComputeStateMode = true;
|
||||
static constexpr bool iohInSbaSupported = true;
|
||||
};
|
||||
|
||||
@@ -12,4 +12,5 @@ template <>
|
||||
struct TestTraits<IGFX_GEN8_CORE> {
|
||||
static constexpr bool auxBuiltinsSupported = true;
|
||||
static constexpr bool programOnlyChangedFieldsInComputeStateMode = true;
|
||||
static constexpr bool iohInSbaSupported = true;
|
||||
};
|
||||
|
||||
@@ -12,4 +12,5 @@ template <>
|
||||
struct TestTraits<IGFX_GEN9_CORE> {
|
||||
static constexpr bool auxBuiltinsSupported = true;
|
||||
static constexpr bool programOnlyChangedFieldsInComputeStateMode = true;
|
||||
static constexpr bool iohInSbaSupported = true;
|
||||
};
|
||||
|
||||
@@ -109,7 +109,10 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
|
||||
EXPECT_EQ(cmd->getBindlessSurfaceStateBaseAddress(), globalBindlessHeapsBaseAddress);
|
||||
EXPECT_EQ(cmd->getBindlessSurfaceStateSize(), MemoryConstants::sizeOf4GBinPageEntities);
|
||||
}
|
||||
HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenPassingIndirectBaseAddressThenIndirectBaseAddressIsSet, IsSklOrAbove) {
|
||||
|
||||
using IohSupported = IsWithinGfxCore<GFXCORE_FAMILY::IGFX_GEN9_CORE, GFXCORE_FAMILY::IGFX_GEN12LP_CORE>;
|
||||
|
||||
HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenPassingIndirectBaseAddressThenIndirectBaseAddressIsSet, IohSupported) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
|
||||
EXPECT_NE(IGFX_BROADWELL, ::productFamily);
|
||||
|
||||
@@ -18,4 +18,5 @@ struct TestTraits<IGFX_XE_HP_CORE> {
|
||||
static constexpr bool forceNonCoherentSupported = true;
|
||||
static constexpr bool threadPreemptionDisableBitMatcher = true;
|
||||
static constexpr bool programOnlyChangedFieldsInComputeStateMode = false;
|
||||
static constexpr bool iohInSbaSupported = false;
|
||||
};
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "shared/test/common/helpers/unit_test_helper.h"
|
||||
#include "shared/test/common/mocks/mock_device.h"
|
||||
|
||||
#include "test_traits_common.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
using CommandEncodeStatesTest = Test<CommandEncodeStatesFixture>;
|
||||
@@ -249,7 +251,7 @@ HWTEST_F(CommandEncodeStatesTest, givenCreatedSurfaceStateBufferWhenGpuCoherency
|
||||
alignedFree(stateBuffer);
|
||||
}
|
||||
|
||||
HWTEST_F(CommandEncodeStatesTest, givenCommandContainerWithDirtyHeapsWhenSetStateBaseAddressCalledThenStateBaseAddressAreNotSet) {
|
||||
HWTEST2_F(CommandEncodeStatesTest, givenCommandContainerWithDirtyHeapsWhenSetStateBaseAddressCalledThenStateBaseAddressAreNotSet, MatchAny) {
|
||||
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
|
||||
cmdContainer->dirtyHeaps = 0;
|
||||
|
||||
@@ -261,7 +263,6 @@ HWTEST_F(CommandEncodeStatesTest, givenCommandContainerWithDirtyHeapsWhenSetStat
|
||||
EncodeStateBaseAddress<FamilyType>::encode(*cmdContainer.get(), sba);
|
||||
|
||||
auto dsh = cmdContainer->getIndirectHeap(NEO::HeapType::DYNAMIC_STATE);
|
||||
auto ioh = cmdContainer->getIndirectHeap(NEO::HeapType::INDIRECT_OBJECT);
|
||||
auto ssh = cmdContainer->getIndirectHeap(NEO::HeapType::SURFACE_STATE);
|
||||
|
||||
GenCmdList commands;
|
||||
@@ -271,12 +272,17 @@ HWTEST_F(CommandEncodeStatesTest, givenCommandContainerWithDirtyHeapsWhenSetStat
|
||||
auto pCmd = genCmdCast<STATE_BASE_ADDRESS *>(*itorCmd);
|
||||
|
||||
EXPECT_EQ(dsh->getHeapGpuBase(), pCmd->getDynamicStateBaseAddress());
|
||||
EXPECT_EQ(ioh->getHeapGpuBase(), pCmd->getIndirectObjectBaseAddress());
|
||||
EXPECT_EQ(ssh->getHeapGpuBase(), pCmd->getSurfaceStateBaseAddress());
|
||||
|
||||
EXPECT_EQ(sba.getDynamicStateBaseAddress(), pCmd->getDynamicStateBaseAddress());
|
||||
EXPECT_EQ(sba.getIndirectObjectBaseAddress(), pCmd->getIndirectObjectBaseAddress());
|
||||
EXPECT_EQ(sba.getSurfaceStateBaseAddress(), pCmd->getSurfaceStateBaseAddress());
|
||||
|
||||
if constexpr (TestTraits<gfxCoreFamily>::iohInSbaSupported) {
|
||||
auto ioh = cmdContainer->getIndirectHeap(NEO::HeapType::INDIRECT_OBJECT);
|
||||
|
||||
EXPECT_EQ(ioh->getHeapGpuBase(), pCmd->getIndirectObjectBaseAddress());
|
||||
EXPECT_EQ(sba.getIndirectObjectBaseAddress(), pCmd->getIndirectObjectBaseAddress());
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(CommandEncodeStatesTest, givenCommandContainerWhenSetStateBaseAddressCalledThenStateBaseAddressIsSetCorrectly) {
|
||||
|
||||
Reference in New Issue
Block a user