fix: request for task count should enable monitor fence dispatch
Related-To: NEO-10356 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
fc770cacf2
commit
cd904269ed
|
@ -2238,6 +2238,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::handleImmediateFlushSendBatc
|
||||||
size_t chainedBatchBufferStartOffset = startFromCsr ? csrStream.getUsed() : 0;
|
size_t chainedBatchBufferStartOffset = startFromCsr ? csrStream.getUsed() : 0;
|
||||||
uint64_t taskStartAddress = immediateCommandStream.getGpuBase() + immediateCommandStreamStart;
|
uint64_t taskStartAddress = immediateCommandStream.getGpuBase() + immediateCommandStreamStart;
|
||||||
bool hasStallingCmds = (startFromCsr || dispatchFlags.blockingAppend || dispatchFlags.hasStallingCmds);
|
bool hasStallingCmds = (startFromCsr || dispatchFlags.blockingAppend || dispatchFlags.hasStallingCmds);
|
||||||
|
bool dispatchMonitorFence = dispatchFlags.blockingAppend || dispatchFlags.requireTaskCountUpdate;
|
||||||
|
|
||||||
constexpr bool immediateLowPriority = false;
|
constexpr bool immediateLowPriority = false;
|
||||||
const QueueThrottle immediateThrottle = getThrottleFromPowerSavingUint(this->getUmdPowerHintValue());
|
const QueueThrottle immediateThrottle = getThrottleFromPowerSavingUint(this->getUmdPowerHintValue());
|
||||||
|
@ -2246,7 +2247,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::handleImmediateFlushSendBatc
|
||||||
BatchBuffer batchBuffer{streamToSubmit.getGraphicsAllocation(), startOffset, chainedBatchBufferStartOffset, taskStartAddress, chainedBatchBuffer,
|
BatchBuffer batchBuffer{streamToSubmit.getGraphicsAllocation(), startOffset, chainedBatchBufferStartOffset, taskStartAddress, chainedBatchBuffer,
|
||||||
immediateLowPriority, immediateThrottle, immediateSliceCount,
|
immediateLowPriority, immediateThrottle, immediateSliceCount,
|
||||||
streamToSubmit.getUsed(), &streamToSubmit, flushData.endPtr, this->getNumClients(), hasStallingCmds,
|
streamToSubmit.getUsed(), &streamToSubmit, flushData.endPtr, this->getNumClients(), hasStallingCmds,
|
||||||
dispatchFlags.hasRelaxedOrderingDependencies, dispatchFlags.blockingAppend, false};
|
dispatchFlags.hasRelaxedOrderingDependencies, dispatchMonitorFence, false};
|
||||||
updateStreamTaskCount(streamToSubmit, taskCount + 1);
|
updateStreamTaskCount(streamToSubmit, taskCount + 1);
|
||||||
|
|
||||||
auto submissionStatus = flushHandler(batchBuffer, this->getResidencyAllocations());
|
auto submissionStatus = flushHandler(batchBuffer, this->getResidencyAllocations());
|
||||||
|
|
|
@ -6368,6 +6368,8 @@ HWTEST_F(CommandStreamReceiverHwTest, givenEpilogueStreamAvailableWhenFlushImmed
|
||||||
LinearStream epilogueStream(commandBuffer);
|
LinearStream epilogueStream(commandBuffer);
|
||||||
|
|
||||||
commandStreamReceiver.storeMakeResidentAllocations = true;
|
commandStreamReceiver.storeMakeResidentAllocations = true;
|
||||||
|
commandStreamReceiver.recordFlushedBatchBuffer = true;
|
||||||
|
|
||||||
immediateFlushTaskFlags.requireTaskCountUpdate = true;
|
immediateFlushTaskFlags.requireTaskCountUpdate = true;
|
||||||
immediateFlushTaskFlags.optionalEpilogueCmdStream = &epilogueStream;
|
immediateFlushTaskFlags.optionalEpilogueCmdStream = &epilogueStream;
|
||||||
|
|
||||||
|
@ -6377,6 +6379,7 @@ HWTEST_F(CommandStreamReceiverHwTest, givenEpilogueStreamAvailableWhenFlushImmed
|
||||||
*pDevice);
|
*pDevice);
|
||||||
|
|
||||||
EXPECT_TRUE(commandStreamReceiver.isMadeResident(commandBuffer));
|
EXPECT_TRUE(commandStreamReceiver.isMadeResident(commandBuffer));
|
||||||
|
EXPECT_TRUE(commandStreamReceiver.latestFlushedBatchBuffer.dispatchMonitorFence);
|
||||||
|
|
||||||
HardwareParse hwParser;
|
HardwareParse hwParser;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue