Add cross regular and intermediate command lists base address state transitions

- updates coming from regular list are updated in csr last sent variables
- all per context and per kernel transitions kept in single place
- state updates from intermediate to regular are set in csr properties
- global atomics support duplicates removed

Related-To: NEO-5055

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2023-02-02 18:57:24 +00:00
committed by Compute-Runtime-Automation
parent 140e59810f
commit bf2072c3ea
16 changed files with 363 additions and 337 deletions

View File

@@ -281,27 +281,27 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
}
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
eventAddress, // eventAddress
neoDevice, // device
kernel, // dispatchInterface
ssh, // surfaceStateHeap
dsh, // dynamicStateHeap
reinterpret_cast<const void *>(threadGroupDimensions), // threadGroupDimensions
&additionalCommands, // additionalCommands
commandListPreemptionMode, // preemptionMode
this->partitionCount, // partitionCount
launchParams.isIndirect, // isIndirect
launchParams.isPredicate, // isPredicate
isTimestampEvent, // isTimestampEvent
uncachedMocsKernel, // requiresUncachedMocs
kernelDescriptor.kernelAttributes.flags.useGlobalAtomics, // useGlobalAtomics
internalUsage, // isInternal
launchParams.isCooperative, // isCooperative
isHostSignalScopeEvent, // isHostScopeSignalEvent
isKernelUsingSystemAllocation, // isKernelUsingSystemAllocation
cmdListType == CommandListType::TYPE_IMMEDIATE, // isKernelDispatchedFromImmediateCmdList
engineGroupType == NEO::EngineGroupType::RenderCompute, // isRcs
this->dcFlushSupport // dcFlushEnable
eventAddress, // eventAddress
neoDevice, // device
kernel, // dispatchInterface
ssh, // surfaceStateHeap
dsh, // dynamicStateHeap
reinterpret_cast<const void *>(threadGroupDimensions), // threadGroupDimensions
&additionalCommands, // additionalCommands
commandListPreemptionMode, // preemptionMode
this->partitionCount, // partitionCount
launchParams.isIndirect, // isIndirect
launchParams.isPredicate, // isPredicate
isTimestampEvent, // isTimestampEvent
uncachedMocsKernel, // requiresUncachedMocs
cmdListDefaultGlobalAtomics, // useGlobalAtomics
internalUsage, // isInternal
launchParams.isCooperative, // isCooperative
isHostSignalScopeEvent, // isHostScopeSignalEvent
isKernelUsingSystemAllocation, // isKernelUsingSystemAllocation
cmdListType == CommandListType::TYPE_IMMEDIATE, // isKernelDispatchedFromImmediateCmdList
engineGroupType == NEO::EngineGroupType::RenderCompute, // isRcs
this->dcFlushSupport // dcFlushEnable
};
NEO::EncodeDispatchKernel<GfxFamily>::encode(commandContainer, dispatchKernelArgs, getLogicalStateHelper());
if (!this->isFlushTaskSubmissionEnabled) {