mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 15:53:45 +08:00
performance: use dedicated flag to dispatch monitor fence
Related-To: NEO-8395 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
054d4d04fa
commit
7dfd3e5e59
@@ -114,8 +114,8 @@ class DirectSubmissionHw {
|
||||
virtual uint64_t switchRingBuffers();
|
||||
virtual void handleSwitchRingBuffers() = 0;
|
||||
GraphicsAllocation *switchRingBuffersAllocations();
|
||||
virtual uint64_t updateTagValue(bool hasStallingCmds) = 0;
|
||||
virtual bool dispatchMonitorFenceRequired(bool hasStallingCmds);
|
||||
virtual uint64_t updateTagValue(bool requireMonitorFence) = 0;
|
||||
virtual bool dispatchMonitorFenceRequired(bool requireMonitorFence);
|
||||
virtual void getTagAddressValue(TagData &tagData) = 0;
|
||||
void unblockGpu();
|
||||
bool copyCommandBufferIntoRing(BatchBuffer &batchBuffer);
|
||||
|
||||
@@ -938,7 +938,7 @@ bool DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchCommandBuffer(BatchBuffe
|
||||
this->startRingBuffer();
|
||||
|
||||
bool relaxedOrderingSchedulerWillBeNeeded = (this->relaxedOrderingSchedulerRequired || batchBuffer.hasRelaxedOrderingDependencies);
|
||||
bool dispatchMonitorFence = this->dispatchMonitorFenceRequired(batchBuffer.hasStallingCmds);
|
||||
bool dispatchMonitorFence = this->dispatchMonitorFenceRequired(batchBuffer.dispatchMonitorFence);
|
||||
|
||||
size_t dispatchSize = getSizeDispatch(relaxedOrderingSchedulerWillBeNeeded, batchBuffer.hasRelaxedOrderingDependencies, dispatchMonitorFence);
|
||||
|
||||
@@ -980,7 +980,7 @@ bool DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchCommandBuffer(BatchBuffe
|
||||
currentQueueWorkCount++;
|
||||
DirectSubmissionDiagnostics::diagnosticModeOneSubmit(diagnostic.get());
|
||||
|
||||
uint64_t flushValue = updateTagValue(batchBuffer.hasStallingCmds);
|
||||
uint64_t flushValue = updateTagValue(batchBuffer.dispatchMonitorFence);
|
||||
flushStamp.setStamp(flushValue);
|
||||
|
||||
return ringStart;
|
||||
@@ -1087,7 +1087,7 @@ inline GraphicsAllocation *DirectSubmissionHw<GfxFamily, Dispatcher>::switchRing
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
bool DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchMonitorFenceRequired(bool hasStallingCmds) {
|
||||
bool DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchMonitorFenceRequired(bool requireMonitorFence) {
|
||||
return !this->disableMonitorFence;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ class DrmDirectSubmission : public DirectSubmissionHw<GfxFamily, Dispatcher> {
|
||||
|
||||
void ensureRingCompletion() override;
|
||||
void handleSwitchRingBuffers() override;
|
||||
uint64_t updateTagValue(bool hasStallingCmds) override;
|
||||
uint64_t updateTagValue(bool requireMonitorFence) override;
|
||||
void getTagAddressValue(TagData &tagData) override;
|
||||
bool isCompleted(uint32_t ringBufferIndex) override;
|
||||
bool isCompletionFenceSupported();
|
||||
|
||||
@@ -211,7 +211,7 @@ void DrmDirectSubmission<GfxFamily, Dispatcher>::handleSwitchRingBuffers() {
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
uint64_t DrmDirectSubmission<GfxFamily, Dispatcher>::updateTagValue(bool hasStallingCmds) {
|
||||
uint64_t DrmDirectSubmission<GfxFamily, Dispatcher>::updateTagValue(bool requireMonitorFence) {
|
||||
if (!this->disableMonitorFence) {
|
||||
this->currentTagData.tagValue++;
|
||||
this->ringBuffers[this->currentRingBuffer].completionFence = this->currentTagData.tagValue;
|
||||
|
||||
@@ -34,8 +34,8 @@ class WddmDirectSubmission : public DirectSubmissionHw<GfxFamily, Dispatcher> {
|
||||
void ensureRingCompletion() override;
|
||||
void handleSwitchRingBuffers() override;
|
||||
void handleStopRingBuffer() override;
|
||||
uint64_t updateTagValue(bool hasStallingCmds) override;
|
||||
bool dispatchMonitorFenceRequired(bool hasStallingCmds) override;
|
||||
uint64_t updateTagValue(bool requireMonitorFence) override;
|
||||
bool dispatchMonitorFenceRequired(bool requireMonitorFence) override;
|
||||
uint64_t updateTagValueImpl();
|
||||
void getTagAddressValue(TagData &tagData) override;
|
||||
bool isCompleted(uint32_t ringBufferIndex) override;
|
||||
|
||||
@@ -142,16 +142,16 @@ void WddmDirectSubmission<GfxFamily, Dispatcher>::handleSwitchRingBuffers() {
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
uint64_t WddmDirectSubmission<GfxFamily, Dispatcher>::updateTagValue(bool hasStallingCmds) {
|
||||
if (!this->disableMonitorFence || hasStallingCmds) {
|
||||
uint64_t WddmDirectSubmission<GfxFamily, Dispatcher>::updateTagValue(bool requireMonitorFence) {
|
||||
if (!this->disableMonitorFence || requireMonitorFence) {
|
||||
return this->updateTagValueImpl();
|
||||
}
|
||||
return 0ull;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
bool WddmDirectSubmission<GfxFamily, Dispatcher>::dispatchMonitorFenceRequired(bool hasStallingCmds) {
|
||||
return !this->disableMonitorFence || hasStallingCmds;
|
||||
bool WddmDirectSubmission<GfxFamily, Dispatcher>::dispatchMonitorFenceRequired(bool requireMonitorFence) {
|
||||
return !this->disableMonitorFence || requireMonitorFence;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
|
||||
Reference in New Issue
Block a user