Skip to content

Commit b6da647

Browse files
Add notify parameter to direct submission post sync operations
Related-To: NEO-5845 Signed-off-by: Zbigniew Zdanowicz <[email protected]>
1 parent 732fbe5 commit b6da647

File tree

13 files changed

+164
-56
lines changed

13 files changed

+164
-56
lines changed

opencl/test/unit_test/command_stream/command_stream_receiver_hw_2_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1375,7 +1375,7 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenProgrammingBlitterThen
13751375
csr.blitterDirectSubmission = std::make_unique<DirectSubmission>(*pDevice, *csr.osContext);
13761376
csr.recordFlusheBatchBuffer = true;
13771377
DirectSubmission *directSubmission = reinterpret_cast<DirectSubmission *>(csr.blitterDirectSubmission.get());
1378-
bool initRet = directSubmission->initialize(true);
1378+
bool initRet = directSubmission->initialize(true, false);
13791379
EXPECT_TRUE(initRet);
13801380

13811381
cl_int retVal = CL_SUCCESS;
@@ -1418,7 +1418,7 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenFlushTagUpdateThenBatc
14181418
csr.blitterDirectSubmission = std::make_unique<DirectSubmission>(*pDevice, *csr.osContext);
14191419
csr.recordFlusheBatchBuffer = true;
14201420
DirectSubmission *directSubmission = reinterpret_cast<DirectSubmission *>(csr.blitterDirectSubmission.get());
1421-
bool initRet = directSubmission->initialize(true);
1421+
bool initRet = directSubmission->initialize(true, false);
14221422
EXPECT_TRUE(initRet);
14231423

14241424
csr.flushTagUpdate();

opencl/test/unit_test/os_interface/windows/device_command_stream_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,12 @@ struct MockWddmCsr : public WddmCommandStreamReceiver<GfxFamily> {
124124
if (!initBlitterDirectSubmission) {
125125
directSubmission = std::make_unique<
126126
MockWddmDirectSubmission<GfxFamily, RenderDispatcher<GfxFamily>>>(device, osContext);
127-
ret = directSubmission->initialize(true);
127+
ret = directSubmission->initialize(true, false);
128128
this->dispatchMode = DispatchMode::ImmediateDispatch;
129129
} else {
130130
blitterDirectSubmission = std::make_unique<
131131
MockWddmDirectSubmission<GfxFamily, BlitterDispatcher<GfxFamily>>>(device, osContext);
132-
blitterDirectSubmission->initialize(true);
132+
blitterDirectSubmission->initialize(true, false);
133133
}
134134
}
135135
return ret;

shared/source/command_stream/command_stream_receiver_hw_base.inl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,11 +1431,11 @@ inline bool CommandStreamReceiverHw<GfxFamily>::initDirectSubmission(Device &dev
14311431
if (!this->isAnyDirectSubmissionEnabled()) {
14321432
if (EngineHelpers::isBcs(osContext.getEngineType())) {
14331433
blitterDirectSubmission = DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::create(device, osContext);
1434-
ret = blitterDirectSubmission->initialize(submitOnInit);
1434+
ret = blitterDirectSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync());
14351435

14361436
} else {
14371437
directSubmission = DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::create(device, osContext);
1438-
ret = directSubmission->initialize(submitOnInit);
1438+
ret = directSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync());
14391439
}
14401440
auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController();
14411441
if (directSubmissionController) {

shared/source/direct_submission/direct_submission_hw.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class DirectSubmissionHw {
5959

6060
virtual ~DirectSubmissionHw();
6161

62-
bool initialize(bool submitOnInit);
62+
bool initialize(bool submitOnInit, bool useNotify);
6363

6464
MOCKABLE_VIRTUAL bool stopRingBuffer();
6565

@@ -160,5 +160,6 @@ class DirectSubmissionHw {
160160
bool disableMonitorFence = false;
161161
bool partitionedMode = false;
162162
bool partitionConfigSet = true;
163+
bool useNotifyForPostSync = false;
163164
};
164165
} // namespace NEO

shared/source/direct_submission/direct_submission_hw.inl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ inline void DirectSubmissionHw<GfxFamily, Dispatcher>::cpuCachelineFlush(void *p
154154
}
155155

156156
template <typename GfxFamily, typename Dispatcher>
157-
bool DirectSubmissionHw<GfxFamily, Dispatcher>::initialize(bool submitOnInit) {
157+
bool DirectSubmissionHw<GfxFamily, Dispatcher>::initialize(bool submitOnInit, bool useNotify) {
158+
useNotifyForPostSync = useNotify;
158159
bool ret = allocateResources();
159160

160161
initDiagnostic(submitOnInit);
@@ -222,7 +223,7 @@ bool DirectSubmissionHw<GfxFamily, Dispatcher>::stopRingBuffer() {
222223
if (disableMonitorFence) {
223224
TagData currentTagData = {};
224225
getTagAddressValue(currentTagData);
225-
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, false, this->partitionedMode);
226+
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, this->useNotifyForPostSync, this->partitionedMode);
226227
}
227228
Dispatcher::dispatchStopCommandBuffer(ringCommandStream);
228229

@@ -277,7 +278,7 @@ inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchSwitchRingBufferS
277278
if (disableMonitorFence) {
278279
TagData currentTagData = {};
279280
getTagAddressValue(currentTagData);
280-
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, false, this->partitionedMode);
281+
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, this->useNotifyForPostSync, this->partitionedMode);
281282
}
282283
Dispatcher::dispatchStartCommandBuffer(ringCommandStream, nextBufferGpuAddress);
283284
}
@@ -375,7 +376,7 @@ void *DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchWorkloadSection(BatchBu
375376
if (!disableMonitorFence) {
376377
TagData currentTagData = {};
377378
getTagAddressValue(currentTagData);
378-
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, false, this->partitionedMode);
379+
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, this->useNotifyForPostSync, this->partitionedMode);
379380
}
380381

381382
dispatchSemaphoreSection(currentQueueWorkCount + 1);

shared/source/direct_submission/dispatchers/render_dispatcher.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ inline void RenderDispatcher<GfxFamily>::dispatchMonitorFence(LinearStream &cmdB
3535
PipeControlArgs args;
3636
args.dcFlushEnable = MemorySynchronizationCommands<GfxFamily>::isDcFlushAllowed(true, hwInfo);
3737
args.workloadPartitionOffset = partitionedWorkload;
38+
args.notifyEnable = useNotifyEnable;
3839
MemorySynchronizationCommands<GfxFamily>::addPipeControlAndProgramPostSyncOperation(
3940
cmdBuffer,
4041
POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA,

shared/test/common/mocks/mock_direct_submission_hw.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ struct MockDirectSubmissionHw : public DirectSubmissionHw<GfxFamily, Dispatcher>
6363
using BaseClass::startRingBuffer;
6464
using BaseClass::stopRingBuffer;
6565
using BaseClass::switchRingBuffersAllocations;
66+
using BaseClass::useNotifyForPostSync;
6667
using BaseClass::workloadMode;
6768
using BaseClass::workloadModeOneExpectedValue;
6869
using BaseClass::workloadModeOneStoreAddress;

shared/test/common/mocks/windows/mock_wddm_direct_submission.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ struct MockWddmDirectSubmission : public WddmDirectSubmission<GfxFamily, Dispatc
3535
using BaseClass::submit;
3636
using BaseClass::switchRingBuffers;
3737
using BaseClass::updateTagValue;
38+
using BaseClass::useNotifyForPostSync;
3839
using BaseClass::wddm;
3940
using BaseClass::WddmDirectSubmission;
4041
using typename BaseClass::RingBufferUse;

0 commit comments

Comments
 (0)