mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-09 14:33:04 +08:00
Add extra parameters to programStateBaseAddress()
Signed-off-by: Igor Venevtsev <igor.venevtsev@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
adfa3c6bcb
commit
bb72beac6b
@@ -362,7 +362,9 @@ void EncodeStateBaseAddress<Family>::encode(CommandContainer &container, STATE_B
|
||||
false,
|
||||
gmmHelper,
|
||||
false,
|
||||
MemoryCompressionState::NotApplicable);
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false,
|
||||
1u);
|
||||
|
||||
auto pCmd = reinterpret_cast<STATE_BASE_ADDRESS *>(container.getCommandStream()->getSpace(sizeof(STATE_BASE_ADDRESS)));
|
||||
*pCmd = sbaCmd;
|
||||
|
||||
@@ -411,7 +411,9 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
||||
false,
|
||||
device.getGmmHelper(),
|
||||
isMultiOsContextCapable(),
|
||||
memoryCompressionState);
|
||||
memoryCompressionState,
|
||||
dispatchFlags.useGlobalAtomics,
|
||||
dispatchFlags.numDevicesInContext);
|
||||
*pCmd = cmd;
|
||||
|
||||
if (sshDirty) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017-2020 Intel Corporation
|
||||
* Copyright (C) 2017-2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -57,31 +57,33 @@ struct DispatchFlags {
|
||||
KernelExecutionType kernelExecutionType, MemoryCompressionState memoryCompressionState,
|
||||
uint64_t sliceCount, bool blocking, bool dcFlush, bool useSLM, bool guardCommandBufferWithPipeControl, bool gsba32BitRequired,
|
||||
bool requiresCoherency, bool lowPriority, bool implicitFlush, bool outOfOrderExecutionAllowed, bool epilogueRequired,
|
||||
bool usePerDSSbackedBuffer, bool useSingleSubdevice) : csrDependencies(csrDependencies),
|
||||
barrierTimestampPacketNodes(barrierTimestampPacketNodes),
|
||||
pipelineSelectArgs(pipelineSelectArgs),
|
||||
flushStampReference(flushStampReference),
|
||||
throttle(throttle),
|
||||
preemptionMode(preemptionMode),
|
||||
numGrfRequired(numGrfRequired),
|
||||
l3CacheSettings(l3CacheSettings),
|
||||
threadArbitrationPolicy(threadArbitrationPolicy),
|
||||
additionalKernelExecInfo(additionalKernelExecInfo),
|
||||
kernelExecutionType(kernelExecutionType),
|
||||
memoryCompressionState(memoryCompressionState),
|
||||
sliceCount(sliceCount),
|
||||
blocking(blocking),
|
||||
dcFlush(dcFlush),
|
||||
useSLM(useSLM),
|
||||
guardCommandBufferWithPipeControl(guardCommandBufferWithPipeControl),
|
||||
gsba32BitRequired(gsba32BitRequired),
|
||||
requiresCoherency(requiresCoherency),
|
||||
lowPriority(lowPriority),
|
||||
implicitFlush(implicitFlush),
|
||||
outOfOrderExecutionAllowed(outOfOrderExecutionAllowed),
|
||||
epilogueRequired(epilogueRequired),
|
||||
usePerDssBackedBuffer(usePerDSSbackedBuffer),
|
||||
useSingleSubdevice(useSingleSubdevice){};
|
||||
bool usePerDSSbackedBuffer, bool useSingleSubdevice, bool useGlobalAtomics, size_t numDevicesInContext) : csrDependencies(csrDependencies),
|
||||
barrierTimestampPacketNodes(barrierTimestampPacketNodes),
|
||||
pipelineSelectArgs(pipelineSelectArgs),
|
||||
flushStampReference(flushStampReference),
|
||||
throttle(throttle),
|
||||
preemptionMode(preemptionMode),
|
||||
numGrfRequired(numGrfRequired),
|
||||
l3CacheSettings(l3CacheSettings),
|
||||
threadArbitrationPolicy(threadArbitrationPolicy),
|
||||
additionalKernelExecInfo(additionalKernelExecInfo),
|
||||
kernelExecutionType(kernelExecutionType),
|
||||
memoryCompressionState(memoryCompressionState),
|
||||
sliceCount(sliceCount),
|
||||
blocking(blocking),
|
||||
dcFlush(dcFlush),
|
||||
useSLM(useSLM),
|
||||
guardCommandBufferWithPipeControl(guardCommandBufferWithPipeControl),
|
||||
gsba32BitRequired(gsba32BitRequired),
|
||||
requiresCoherency(requiresCoherency),
|
||||
lowPriority(lowPriority),
|
||||
implicitFlush(implicitFlush),
|
||||
outOfOrderExecutionAllowed(outOfOrderExecutionAllowed),
|
||||
epilogueRequired(epilogueRequired),
|
||||
usePerDssBackedBuffer(usePerDSSbackedBuffer),
|
||||
useSingleSubdevice(useSingleSubdevice),
|
||||
useGlobalAtomics(useGlobalAtomics),
|
||||
numDevicesInContext(numDevicesInContext){};
|
||||
|
||||
CsrDependencies csrDependencies;
|
||||
TimestampPacketContainer *barrierTimestampPacketNodes = nullptr;
|
||||
@@ -109,6 +111,8 @@ struct DispatchFlags {
|
||||
bool epilogueRequired = false;
|
||||
bool usePerDssBackedBuffer = false;
|
||||
bool useSingleSubdevice = false;
|
||||
bool useGlobalAtomics = false;
|
||||
size_t numDevicesInContext = 1u;
|
||||
};
|
||||
|
||||
struct CsrSizeRequestFlags {
|
||||
|
||||
@@ -27,7 +27,9 @@ void StateBaseAddressHelper<BDWFamily>::programStateBaseAddress(
|
||||
bool useGlobalHeapsBaseAddress,
|
||||
GmmHelper *gmmHelper,
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState) {
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
|
||||
*stateBaseAddress = BDWFamily::cmdInitStateBaseAddress;
|
||||
|
||||
@@ -74,7 +76,8 @@ void StateBaseAddressHelper<BDWFamily>::programStateBaseAddress(
|
||||
|
||||
stateBaseAddress->setStatelessDataPortAccessMemoryObjectControlState(statelessMocsIndex);
|
||||
|
||||
appendStateBaseAddressParameters(stateBaseAddress, ssh, setGeneralStateBaseAddress, indirectObjectHeapBaseAddress, gmmHelper, isMultiOsContextCapable, memoryCompressionState, true);
|
||||
appendStateBaseAddressParameters(stateBaseAddress, ssh, setGeneralStateBaseAddress, indirectObjectHeapBaseAddress,
|
||||
gmmHelper, isMultiOsContextCapable, memoryCompressionState, true, useGlobalAtomics, numDevicesInContext);
|
||||
}
|
||||
template struct StateBaseAddressHelper<BDWFamily>;
|
||||
} // namespace NEO
|
||||
|
||||
@@ -36,7 +36,9 @@ struct StateBaseAddressHelper {
|
||||
bool useGlobalHeapsBaseAddress,
|
||||
GmmHelper *gmmHelper,
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState);
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext);
|
||||
|
||||
static void appendStateBaseAddressParameters(
|
||||
STATE_BASE_ADDRESS *stateBaseAddress,
|
||||
@@ -46,7 +48,9 @@ struct StateBaseAddressHelper {
|
||||
GmmHelper *gmmHelper,
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool overrideBindlessSurfaceStateBase);
|
||||
bool overrideBindlessSurfaceStateBase,
|
||||
bool useGlobalAtomics,
|
||||
size_t nnumDevicesInContext);
|
||||
|
||||
static void appendExtraCacheSettings(STATE_BASE_ADDRESS *stateBaseAddress, GmmHelper *gmmHelper);
|
||||
|
||||
|
||||
@@ -31,7 +31,9 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
bool useGlobalHeapsBaseAddress,
|
||||
GmmHelper *gmmHelper,
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState) {
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
|
||||
*stateBaseAddress = GfxFamily::cmdInitStateBaseAddress;
|
||||
bool overrideBindlessSurfaceStateBase = true;
|
||||
@@ -99,7 +101,8 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
|
||||
stateBaseAddress->setStatelessDataPortAccessMemoryObjectControlState(statelessMocsIndex);
|
||||
|
||||
appendStateBaseAddressParameters(stateBaseAddress, ssh, setGeneralStateBaseAddress, indirectObjectHeapBaseAddress, gmmHelper, isMultiOsContextCapable, memoryCompressionState, overrideBindlessSurfaceStateBase);
|
||||
appendStateBaseAddressParameters(stateBaseAddress, ssh, setGeneralStateBaseAddress, indirectObjectHeapBaseAddress, gmmHelper,
|
||||
isMultiOsContextCapable, memoryCompressionState, overrideBindlessSurfaceStateBase, useGlobalAtomics, numDevicesInContext);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
||||
@@ -18,7 +18,9 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||
GmmHelper *gmmHelper,
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool overrideBindlessSurfaceStateBase) {
|
||||
bool overrideBindlessSurfaceStateBase,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
appendExtraCacheSettings(stateBaseAddress, gmmHelper);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,9 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||
GmmHelper *gmmHelper,
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool overrideBindlessSurfaceStateBase) {
|
||||
bool overrideBindlessSurfaceStateBase,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
|
||||
if (overrideBindlessSurfaceStateBase && ssh) {
|
||||
stateBaseAddress->setBindlessSurfaceStateBaseAddressModifyEnable(true);
|
||||
|
||||
@@ -23,7 +23,9 @@ BDWTEST_F(SBATest, givenUsedBindlessBuffersWhenAppendStateBaseAddressParametersI
|
||||
nullptr,
|
||||
false,
|
||||
MemoryCompressionState::NotApplicable,
|
||||
true);
|
||||
true,
|
||||
false,
|
||||
1u);
|
||||
|
||||
EXPECT_EQ(0u, ssh.getUsed());
|
||||
EXPECT_EQ(0, memcmp(&stateBaseAddressReference, &stateBaseAddress, sizeof(STATE_BASE_ADDRESS)));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2020 Intel Corporation
|
||||
* Copyright (C) 2019-2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -39,6 +39,8 @@ struct DispatchFlagsHelper {
|
||||
false, //outOfOrderExecutionAllowed
|
||||
false, //epilogueRequired
|
||||
false, //usePerDssBackedBuffer
|
||||
false); //useSingleSubdevice
|
||||
false, //useSingleSubdevice
|
||||
false, //useGlobalAtomics
|
||||
1u); //numDevicesInContext
|
||||
}
|
||||
};
|
||||
|
||||
@@ -27,7 +27,9 @@ HWTEST2_F(SBATest, WhenAppendStateBaseAddressParametersIsCalledThenSBACmdHasBind
|
||||
nullptr,
|
||||
false,
|
||||
MemoryCompressionState::NotApplicable,
|
||||
true);
|
||||
true,
|
||||
false,
|
||||
1u);
|
||||
|
||||
EXPECT_EQ(ssh.getMaxAvailableSpace() / 64 - 1, stateBaseAddress.getBindlessSurfaceStateSize());
|
||||
EXPECT_EQ(ssh.getHeapGpuBase(), stateBaseAddress.getBindlessSurfaceStateBaseAddress());
|
||||
@@ -63,7 +65,9 @@ HWTEST2_F(SBATest, WhenProgramStateBaseAddressParametersIsCalledThenSBACmdHasBin
|
||||
false,
|
||||
pDevice->getGmmHelper(),
|
||||
true,
|
||||
MemoryCompressionState::NotApplicable);
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false,
|
||||
1u);
|
||||
|
||||
EXPECT_EQ(ssh.getMaxAvailableSpace() / 64 - 1, cmd->getBindlessSurfaceStateSize());
|
||||
EXPECT_EQ(ssh.getHeapGpuBase(), cmd->getBindlessSurfaceStateBaseAddress());
|
||||
@@ -98,7 +102,9 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenProgramStateBas
|
||||
true,
|
||||
pDevice->getGmmHelper(),
|
||||
true,
|
||||
MemoryCompressionState::NotApplicable);
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false,
|
||||
1u);
|
||||
EXPECT_TRUE(cmd->getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
EXPECT_EQ(cmd->getBindlessSurfaceStateBaseAddress(), globalBindlessHeapsBaseAddress);
|
||||
EXPECT_EQ(cmd->getBindlessSurfaceStateSize(), MemoryConstants::sizeOf4GBinPageEntities);
|
||||
@@ -130,7 +136,9 @@ HWTEST2_F(SbaForBindlessTests, givenGlobalBindlessBaseAddressWhenPassingIndirect
|
||||
true,
|
||||
pDevice->getGmmHelper(),
|
||||
true,
|
||||
MemoryCompressionState::NotApplicable);
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false,
|
||||
1u);
|
||||
|
||||
EXPECT_EQ(cmd->getIndirectObjectBaseAddress(), indirectObjectBaseAddress);
|
||||
}
|
||||
@@ -153,7 +161,9 @@ HWTEST2_F(SBATest, givenSbaWhenOverrideBindlessSurfaceBaseIsFalseThenBindlessSur
|
||||
pDevice->getRootDeviceEnvironment().getGmmHelper(),
|
||||
false,
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false);
|
||||
false,
|
||||
false,
|
||||
1u);
|
||||
|
||||
EXPECT_EQ(0u, stateBaseAddress.getBindlessSurfaceStateBaseAddress());
|
||||
}
|
||||
@@ -184,7 +194,9 @@ HWTEST2_F(SBATest, givenGlobalBindlessBaseAddressWhenSshIsPassedThenBindlessSurf
|
||||
true,
|
||||
pDevice->getGmmHelper(),
|
||||
true,
|
||||
MemoryCompressionState::NotApplicable);
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false,
|
||||
1u);
|
||||
EXPECT_EQ(cmd->getBindlessSurfaceStateBaseAddress(), globalBindlessHeapsBaseAddress);
|
||||
}
|
||||
HWTEST2_F(SBATest, givenSurfaceStateHeapWhenNotUsingGlobalHeapBaseThenBindlessSurfaceBaseIsSshBase, IsSklOrAbove) {
|
||||
@@ -213,6 +225,8 @@ HWTEST2_F(SBATest, givenSurfaceStateHeapWhenNotUsingGlobalHeapBaseThenBindlessSu
|
||||
false,
|
||||
pDevice->getGmmHelper(),
|
||||
true,
|
||||
MemoryCompressionState::NotApplicable);
|
||||
MemoryCompressionState::NotApplicable,
|
||||
false,
|
||||
1u);
|
||||
EXPECT_EQ(ssh.getHeapGpuBase(), cmd->getBindlessSurfaceStateBaseAddress());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user