mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
fix: skip walker in-order signaling when closing PC is required
Related-To: NEO-7966 Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
b1c01fc933
commit
607832a8e6
@@ -48,6 +48,7 @@ struct CmdListKernelLaunchParams {
|
||||
bool isDestinationAllocationInSystemMemory = false;
|
||||
bool isHostSignalScopeEvent = false;
|
||||
bool skipInOrderNonWalkerSignaling = false;
|
||||
bool pipeControlSignalling = false;
|
||||
};
|
||||
|
||||
struct CmdListReturnPoint {
|
||||
|
||||
@@ -1456,6 +1456,8 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopy(void *dstptr,
|
||||
launchParams.isKernelSplitOperation = kernelCounter > 1;
|
||||
bool singlePipeControlPacket = eventSignalPipeControl(launchParams.isKernelSplitOperation, dcFlush);
|
||||
|
||||
launchParams.pipeControlSignalling = (signalEvent && singlePipeControlPacket) || dstAllocationStruct.needsFlush;
|
||||
|
||||
appendEventForProfilingAllWalkers(signalEvent, true, singlePipeControlPacket);
|
||||
|
||||
if (isCopyOnly()) {
|
||||
@@ -1525,7 +1527,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopy(void *dstptr,
|
||||
addToMappedEventList(signalEvent);
|
||||
|
||||
if (this->isInOrderExecutionEnabled()) {
|
||||
bool emitPipeControl = !isCopyOnly() && eventSignalPipeControl(launchParams.isKernelSplitOperation, signalEvent ? getDcFlushRequired(signalEvent->isSignalScope()) : false);
|
||||
bool emitPipeControl = !isCopyOnly() && launchParams.pipeControlSignalling;
|
||||
|
||||
if (launchParams.isKernelSplitOperation || inOrderCopyOnlySignalingAllowed || emitPipeControl) {
|
||||
if (!signalEvent && !isCopyOnly()) {
|
||||
|
||||
@@ -277,7 +277,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
|
||||
appendEventForProfilingAllWalkers(compactEvent, true, true);
|
||||
}
|
||||
|
||||
bool inOrderExecSignalRequired = (this->isInOrderExecutionEnabled() && !launchParams.isKernelSplitOperation);
|
||||
bool inOrderExecSignalRequired = (this->isInOrderExecutionEnabled() && !launchParams.isKernelSplitOperation && !launchParams.pipeControlSignalling);
|
||||
bool inOrderNonWalkerSignalling = isInOrderNonWalkerSignalingRequired(eventForInOrderExec);
|
||||
|
||||
uint64_t inOrderCounterValue = 0;
|
||||
|
||||
Reference in New Issue
Block a user