Add notify parameter to direct submission post sync operations

Related-To: NEO-5845

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2021-12-22 19:28:02 +00:00
committed by Compute-Runtime-Automation
parent 732fbe5c7f
commit b6da6471f2
13 changed files with 164 additions and 56 deletions

View File

@ -1375,7 +1375,7 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenProgrammingBlitterThen
csr.blitterDirectSubmission = std::make_unique<DirectSubmission>(*pDevice, *csr.osContext); csr.blitterDirectSubmission = std::make_unique<DirectSubmission>(*pDevice, *csr.osContext);
csr.recordFlusheBatchBuffer = true; csr.recordFlusheBatchBuffer = true;
DirectSubmission *directSubmission = reinterpret_cast<DirectSubmission *>(csr.blitterDirectSubmission.get()); DirectSubmission *directSubmission = reinterpret_cast<DirectSubmission *>(csr.blitterDirectSubmission.get());
bool initRet = directSubmission->initialize(true); bool initRet = directSubmission->initialize(true, false);
EXPECT_TRUE(initRet); EXPECT_TRUE(initRet);
cl_int retVal = CL_SUCCESS; cl_int retVal = CL_SUCCESS;
@ -1418,7 +1418,7 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenFlushTagUpdateThenBatc
csr.blitterDirectSubmission = std::make_unique<DirectSubmission>(*pDevice, *csr.osContext); csr.blitterDirectSubmission = std::make_unique<DirectSubmission>(*pDevice, *csr.osContext);
csr.recordFlusheBatchBuffer = true; csr.recordFlusheBatchBuffer = true;
DirectSubmission *directSubmission = reinterpret_cast<DirectSubmission *>(csr.blitterDirectSubmission.get()); DirectSubmission *directSubmission = reinterpret_cast<DirectSubmission *>(csr.blitterDirectSubmission.get());
bool initRet = directSubmission->initialize(true); bool initRet = directSubmission->initialize(true, false);
EXPECT_TRUE(initRet); EXPECT_TRUE(initRet);
csr.flushTagUpdate(); csr.flushTagUpdate();

View File

@ -124,12 +124,12 @@ struct MockWddmCsr : public WddmCommandStreamReceiver<GfxFamily> {
if (!initBlitterDirectSubmission) { if (!initBlitterDirectSubmission) {
directSubmission = std::make_unique< directSubmission = std::make_unique<
MockWddmDirectSubmission<GfxFamily, RenderDispatcher<GfxFamily>>>(device, osContext); MockWddmDirectSubmission<GfxFamily, RenderDispatcher<GfxFamily>>>(device, osContext);
ret = directSubmission->initialize(true); ret = directSubmission->initialize(true, false);
this->dispatchMode = DispatchMode::ImmediateDispatch; this->dispatchMode = DispatchMode::ImmediateDispatch;
} else { } else {
blitterDirectSubmission = std::make_unique< blitterDirectSubmission = std::make_unique<
MockWddmDirectSubmission<GfxFamily, BlitterDispatcher<GfxFamily>>>(device, osContext); MockWddmDirectSubmission<GfxFamily, BlitterDispatcher<GfxFamily>>>(device, osContext);
blitterDirectSubmission->initialize(true); blitterDirectSubmission->initialize(true, false);
} }
} }
return ret; return ret;

View File

@ -1431,11 +1431,11 @@ inline bool CommandStreamReceiverHw<GfxFamily>::initDirectSubmission(Device &dev
if (!this->isAnyDirectSubmissionEnabled()) { if (!this->isAnyDirectSubmissionEnabled()) {
if (EngineHelpers::isBcs(osContext.getEngineType())) { if (EngineHelpers::isBcs(osContext.getEngineType())) {
blitterDirectSubmission = DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::create(device, osContext); blitterDirectSubmission = DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::create(device, osContext);
ret = blitterDirectSubmission->initialize(submitOnInit); ret = blitterDirectSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync());
} else { } else {
directSubmission = DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::create(device, osContext); directSubmission = DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::create(device, osContext);
ret = directSubmission->initialize(submitOnInit); ret = directSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync());
} }
auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController(); auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController();
if (directSubmissionController) { if (directSubmissionController) {

View File

@ -59,7 +59,7 @@ class DirectSubmissionHw {
virtual ~DirectSubmissionHw(); virtual ~DirectSubmissionHw();
bool initialize(bool submitOnInit); bool initialize(bool submitOnInit, bool useNotify);
MOCKABLE_VIRTUAL bool stopRingBuffer(); MOCKABLE_VIRTUAL bool stopRingBuffer();
@ -160,5 +160,6 @@ class DirectSubmissionHw {
bool disableMonitorFence = false; bool disableMonitorFence = false;
bool partitionedMode = false; bool partitionedMode = false;
bool partitionConfigSet = true; bool partitionConfigSet = true;
bool useNotifyForPostSync = false;
}; };
} // namespace NEO } // namespace NEO

View File

@ -154,7 +154,8 @@ inline void DirectSubmissionHw<GfxFamily, Dispatcher>::cpuCachelineFlush(void *p
} }
template <typename GfxFamily, typename Dispatcher> template <typename GfxFamily, typename Dispatcher>
bool DirectSubmissionHw<GfxFamily, Dispatcher>::initialize(bool submitOnInit) { bool DirectSubmissionHw<GfxFamily, Dispatcher>::initialize(bool submitOnInit, bool useNotify) {
useNotifyForPostSync = useNotify;
bool ret = allocateResources(); bool ret = allocateResources();
initDiagnostic(submitOnInit); initDiagnostic(submitOnInit);
@ -222,7 +223,7 @@ bool DirectSubmissionHw<GfxFamily, Dispatcher>::stopRingBuffer() {
if (disableMonitorFence) { if (disableMonitorFence) {
TagData currentTagData = {}; TagData currentTagData = {};
getTagAddressValue(currentTagData); getTagAddressValue(currentTagData);
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, false, this->partitionedMode); Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, this->useNotifyForPostSync, this->partitionedMode);
} }
Dispatcher::dispatchStopCommandBuffer(ringCommandStream); Dispatcher::dispatchStopCommandBuffer(ringCommandStream);
@ -277,7 +278,7 @@ inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchSwitchRingBufferS
if (disableMonitorFence) { if (disableMonitorFence) {
TagData currentTagData = {}; TagData currentTagData = {};
getTagAddressValue(currentTagData); getTagAddressValue(currentTagData);
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, false, this->partitionedMode); Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, this->useNotifyForPostSync, this->partitionedMode);
} }
Dispatcher::dispatchStartCommandBuffer(ringCommandStream, nextBufferGpuAddress); Dispatcher::dispatchStartCommandBuffer(ringCommandStream, nextBufferGpuAddress);
} }
@ -375,7 +376,7 @@ void *DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchWorkloadSection(BatchBu
if (!disableMonitorFence) { if (!disableMonitorFence) {
TagData currentTagData = {}; TagData currentTagData = {};
getTagAddressValue(currentTagData); getTagAddressValue(currentTagData);
Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, false, this->partitionedMode); Dispatcher::dispatchMonitorFence(ringCommandStream, currentTagData.tagAddress, currentTagData.tagValue, *hwInfo, this->useNotifyForPostSync, this->partitionedMode);
} }
dispatchSemaphoreSection(currentQueueWorkCount + 1); dispatchSemaphoreSection(currentQueueWorkCount + 1);

View File

@ -35,6 +35,7 @@ inline void RenderDispatcher<GfxFamily>::dispatchMonitorFence(LinearStream &cmdB
PipeControlArgs args; PipeControlArgs args;
args.dcFlushEnable = MemorySynchronizationCommands<GfxFamily>::isDcFlushAllowed(true, hwInfo); args.dcFlushEnable = MemorySynchronizationCommands<GfxFamily>::isDcFlushAllowed(true, hwInfo);
args.workloadPartitionOffset = partitionedWorkload; args.workloadPartitionOffset = partitionedWorkload;
args.notifyEnable = useNotifyEnable;
MemorySynchronizationCommands<GfxFamily>::addPipeControlAndProgramPostSyncOperation( MemorySynchronizationCommands<GfxFamily>::addPipeControlAndProgramPostSyncOperation(
cmdBuffer, cmdBuffer,
POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA, POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA,

View File

@ -63,6 +63,7 @@ struct MockDirectSubmissionHw : public DirectSubmissionHw<GfxFamily, Dispatcher>
using BaseClass::startRingBuffer; using BaseClass::startRingBuffer;
using BaseClass::stopRingBuffer; using BaseClass::stopRingBuffer;
using BaseClass::switchRingBuffersAllocations; using BaseClass::switchRingBuffersAllocations;
using BaseClass::useNotifyForPostSync;
using BaseClass::workloadMode; using BaseClass::workloadMode;
using BaseClass::workloadModeOneExpectedValue; using BaseClass::workloadModeOneExpectedValue;
using BaseClass::workloadModeOneStoreAddress; using BaseClass::workloadModeOneStoreAddress;

View File

@ -35,6 +35,7 @@ struct MockWddmDirectSubmission : public WddmDirectSubmission<GfxFamily, Dispatc
using BaseClass::submit; using BaseClass::submit;
using BaseClass::switchRingBuffers; using BaseClass::switchRingBuffers;
using BaseClass::updateTagValue; using BaseClass::updateTagValue;
using BaseClass::useNotifyForPostSync;
using BaseClass::wddm; using BaseClass::wddm;
using BaseClass::WddmDirectSubmission; using BaseClass::WddmDirectSubmission;
using typename BaseClass::RingBufferUse; using typename BaseClass::RingBufferUse;

View File

@ -67,7 +67,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenStopThenRingIsNotStarted
auto &csr = pDevice->getUltCommandStreamReceiver<FamilyType>(); auto &csr = pDevice->getUltCommandStreamReceiver<FamilyType>();
csr.directSubmission.reset(&directSubmission); csr.directSubmission.reset(&directSubmission);
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.ringStart); EXPECT_TRUE(directSubmission.ringStart);
@ -87,7 +87,7 @@ HWTEST_F(DirectSubmissionTest, givenBlitterDirectSubmissionWhenStopThenRingIsNot
csr.blitterDirectSubmission.reset(&directSubmission); csr.blitterDirectSubmission.reset(&directSubmission);
csr.setupContext(*osContext.get()); csr.setupContext(*osContext.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.ringStart); EXPECT_TRUE(directSubmission.ringStart);
@ -114,7 +114,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenMakingResourcesResidentT
csr.directSubmission.reset(&directSubmission); csr.directSubmission.reset(&directSubmission);
csr.setupContext(*osContext2.get()); csr.setupContext(*osContext2.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed());
GraphicsAllocation *alloc = directSubmission.ringCommandStream.getGraphicsAllocation(); GraphicsAllocation *alloc = directSubmission.ringCommandStream.getGraphicsAllocation();
@ -137,7 +137,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionInitializedWhenRingIsStarted
*osContext.get()); *osContext.get());
EXPECT_TRUE(directSubmission.disableCpuCacheFlush); EXPECT_TRUE(directSubmission.disableCpuCacheFlush);
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.ringStart); EXPECT_TRUE(directSubmission.ringStart);
@ -152,7 +152,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionInitializedWhenRingIsNotStar
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_FALSE(directSubmission.ringStart); EXPECT_FALSE(directSubmission.ringStart);
@ -168,7 +168,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSwitchBuffersWhenCurrentIsPr
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_EQ(RingBufferUse::FirstBuffer, directSubmission.currentRingBuffer); EXPECT_EQ(RingBufferUse::FirstBuffer, directSubmission.currentRingBuffer);
@ -182,7 +182,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSwitchBuffersWhenCurrentIsSe
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_EQ(RingBufferUse::FirstBuffer, directSubmission.currentRingBuffer); EXPECT_EQ(RingBufferUse::FirstBuffer, directSubmission.currentRingBuffer);
@ -200,7 +200,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionAllocateFailWhenRingIsStarte
EXPECT_TRUE(directSubmission.disableCpuCacheFlush); EXPECT_TRUE(directSubmission.disableCpuCacheFlush);
directSubmission.allocateOsResourcesReturn = false; directSubmission.allocateOsResourcesReturn = false;
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_FALSE(ret); EXPECT_FALSE(ret);
EXPECT_FALSE(directSubmission.ringStart); EXPECT_FALSE(directSubmission.ringStart);
@ -212,7 +212,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSubmitFailWhenRingIsStartedT
*osContext.get()); *osContext.get());
directSubmission.submitReturn = false; directSubmission.submitReturn = false;
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_FALSE(ret); EXPECT_FALSE(ret);
EXPECT_FALSE(directSubmission.ringStart); EXPECT_FALSE(directSubmission.ringStart);
@ -223,7 +223,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsStartedThenEx
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t usedSize = directSubmission.ringCommandStream.getUsed(); size_t usedSize = directSubmission.ringCommandStream.getUsed();
@ -236,7 +236,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedThe
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t usedSize = directSubmission.ringCommandStream.getUsed(); size_t usedSize = directSubmission.ringCommandStream.getUsed();
@ -250,7 +250,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedSub
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t usedSize = directSubmission.ringCommandStream.getUsed(); size_t usedSize = directSubmission.ringCommandStream.getUsed();
@ -265,7 +265,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedAnd
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
auto expectedRingBuffer = directSubmission.currentRingBuffer; auto expectedRingBuffer = directSubmission.currentRingBuffer;
GraphicsAllocation *oldRingBuffer = directSubmission.ringCommandStream.getGraphicsAllocation(); GraphicsAllocation *oldRingBuffer = directSubmission.ringCommandStream.getGraphicsAllocation();
@ -287,7 +287,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStopWhenStopRingIsCalledThen
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t alreadyDispatchedSize = directSubmission.ringCommandStream.getUsed(); size_t alreadyDispatchedSize = directSubmission.ringCommandStream.getUsed();
uint32_t oldQueueCount = directSubmission.semaphoreData->QueueWorkCount; uint32_t oldQueueCount = directSubmission.semaphoreData->QueueWorkCount;
@ -355,7 +355,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSemaphoreThenExp
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
directSubmission.dispatchSemaphoreSection(1u); directSubmission.dispatchSemaphoreSection(1u);
@ -366,7 +366,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchStartSectionThen
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
directSubmission.dispatchStartSection(1ull); directSubmission.dispatchStartSection(1ull);
@ -376,7 +376,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchStartSectionThen
HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSwitchRingBufferSectionThenExpectCorrectSizeUsed) { HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSwitchRingBufferSectionThenExpectCorrectSizeUsed) {
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, *osContext.get()); MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
directSubmission.dispatchSwitchRingBufferSection(1ull); directSubmission.dispatchSwitchRingBufferSection(1ull);
@ -388,7 +388,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchFlushSectionThen
MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
Dispatcher::dispatchCacheFlush(directSubmission.ringCommandStream, *directSubmission.hwInfo, 0ull); Dispatcher::dispatchCacheFlush(directSubmission.ringCommandStream, *directSubmission.hwInfo, 0ull);
@ -400,7 +400,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchTagUpdateSection
MockDirectSubmissionHw<FamilyType, Dispatcher> MockDirectSubmissionHw<FamilyType, Dispatcher>
directSubmission(*pDevice, *osContext.get()); directSubmission(*pDevice, *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
Dispatcher::dispatchMonitorFence(directSubmission.ringCommandStream, 0ull, 0ull, *directSubmission.hwInfo, false, false); Dispatcher::dispatchMonitorFence(directSubmission.ringCommandStream, 0ull, 0ull, *directSubmission.hwInfo, false, false);
EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed());
@ -412,7 +412,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchEndingSectionThe
MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
Dispatcher::dispatchStopCommandBuffer(directSubmission.ringCommandStream); Dispatcher::dispatchStopCommandBuffer(directSubmission.ringCommandStream);
@ -517,7 +517,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenSettingAddressInReturnCo
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
uint64_t returnAddress = 0x1A2BF000; uint64_t returnAddress = 0x1A2BF000;
@ -533,7 +533,7 @@ HWTEST_F(DirectSubmissionTest, whenDirectSubmissionInitializedThenExpectCreatedA
std::unique_ptr<MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>> directSubmission = std::unique_ptr<MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>> directSubmission =
std::make_unique<MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>>(*pDevice, std::make_unique<MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>>(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission->initialize(false); bool ret = directSubmission->initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
GraphicsAllocation *nulledAllocation = directSubmission->ringBuffer; GraphicsAllocation *nulledAllocation = directSubmission->ringBuffer;
@ -544,7 +544,7 @@ HWTEST_F(DirectSubmissionTest, whenDirectSubmissionInitializedThenExpectCreatedA
directSubmission = std::make_unique< directSubmission = std::make_unique<
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>>(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>>(*pDevice,
*osContext.get()); *osContext.get());
ret = directSubmission->initialize(false); ret = directSubmission->initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
nulledAllocation = directSubmission->ringBuffer2; nulledAllocation = directSubmission->ringBuffer2;
@ -555,7 +555,7 @@ HWTEST_F(DirectSubmissionTest, whenDirectSubmissionInitializedThenExpectCreatedA
directSubmission = std::make_unique< directSubmission = std::make_unique<
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>>(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>>(*pDevice,
*osContext.get()); *osContext.get());
ret = directSubmission->initialize(false); ret = directSubmission->initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
nulledAllocation = directSubmission->semaphores; nulledAllocation = directSubmission->semaphores;
directSubmission->semaphores = nullptr; directSubmission->semaphores = nullptr;
@ -642,7 +642,7 @@ HWTEST_F(DirectSubmissionTest,
EXPECT_FALSE(directSubmission.disableMonitorFence); EXPECT_FALSE(directSubmission.disableMonitorFence);
EXPECT_EQ(0u, directSubmission.workloadMode); EXPECT_EQ(0u, directSubmission.workloadMode);
EXPECT_EQ(nullptr, directSubmission.diagnostic.get()); EXPECT_EQ(nullptr, directSubmission.diagnostic.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_FALSE(directSubmission.ringStart); EXPECT_FALSE(directSubmission.ringStart);
EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled); EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled);
@ -677,7 +677,7 @@ HWTEST_F(DirectSubmissionTest,
EXPECT_FALSE(directSubmission.disableMonitorFence); EXPECT_FALSE(directSubmission.disableMonitorFence);
EXPECT_EQ(0u, directSubmission.workloadMode); EXPECT_EQ(0u, directSubmission.workloadMode);
EXPECT_EQ(nullptr, directSubmission.diagnostic.get()); EXPECT_EQ(nullptr, directSubmission.diagnostic.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.ringStart); EXPECT_TRUE(directSubmission.ringStart);
EXPECT_EQ(1u, directSubmission.disabledDiagnosticCalled); EXPECT_EQ(1u, directSubmission.disabledDiagnosticCalled);
@ -712,7 +712,7 @@ HWTEST_F(DirectSubmissionTest,
EXPECT_FALSE(directSubmission.disableMonitorFence); EXPECT_FALSE(directSubmission.disableMonitorFence);
EXPECT_EQ(0u, directSubmission.workloadMode); EXPECT_EQ(0u, directSubmission.workloadMode);
EXPECT_EQ(nullptr, directSubmission.diagnostic.get()); EXPECT_EQ(nullptr, directSubmission.diagnostic.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_FALSE(directSubmission.ringStart); EXPECT_FALSE(directSubmission.ringStart);
EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled); EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled);
@ -761,7 +761,7 @@ HWTEST_F(DirectSubmissionTest,
directSubmission.getDiagnosticModeSection(); directSubmission.getDiagnosticModeSection();
expectedSize += expectedExecCount * directSubmission.getSizeDispatch(); expectedSize += expectedExecCount * directSubmission.getSizeDispatch();
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.ringStart); EXPECT_TRUE(directSubmission.ringStart);
EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled); EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled);
@ -849,7 +849,7 @@ HWTEST_F(DirectSubmissionTest,
EXPECT_EQ(expectedDispatch, directSubmission.getSizeDispatch()); EXPECT_EQ(expectedDispatch, directSubmission.getSizeDispatch());
expectedSize += expectedExecCount * expectedDispatch; expectedSize += expectedExecCount * expectedDispatch;
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.ringStart); EXPECT_TRUE(directSubmission.ringStart);
EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled); EXPECT_EQ(0u, directSubmission.disabledDiagnosticCalled);
@ -944,7 +944,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, DirectSubmissionTest,
MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t usedSize = directSubmission.ringCommandStream.getUsed(); size_t usedSize = directSubmission.ringCommandStream.getUsed();

View File

@ -51,7 +51,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest,
directSubmission.partitionedMode = true; directSubmission.partitionedMode = true;
directSubmission.workPartitionAllocation = ultCsr->getWorkPartitionAllocation(); directSubmission.workPartitionAllocation = ultCsr->getWorkPartitionAllocation();
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.partitionConfigSet); EXPECT_TRUE(directSubmission.partitionConfigSet);
EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed());
@ -303,7 +303,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed());
GraphicsAllocation *oldRingAllocation = directSubmission.ringCommandStream.getGraphicsAllocation(); GraphicsAllocation *oldRingAllocation = directSubmission.ringCommandStream.getGraphicsAllocation();
@ -342,7 +342,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_EQ(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_EQ(0x0u, directSubmission.ringCommandStream.getUsed());
GraphicsAllocation *oldRingAllocation = directSubmission.ringCommandStream.getGraphicsAllocation(); GraphicsAllocation *oldRingAllocation = directSubmission.ringCommandStream.getGraphicsAllocation();
@ -374,7 +374,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed());
GraphicsAllocation *oldRingAllocation = directSubmission.ringCommandStream.getGraphicsAllocation(); GraphicsAllocation *oldRingAllocation = directSubmission.ringCommandStream.getGraphicsAllocation();
@ -410,7 +410,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest,
MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice, MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>> directSubmission(*pDevice,
*osContext.get()); *osContext.get());
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_EQ(0u, directSubmission.semaphoreData->QueueWorkCount); EXPECT_EQ(0u, directSubmission.semaphoreData->QueueWorkCount);
EXPECT_EQ(1u, directSubmission.currentQueueWorkCount); EXPECT_EQ(1u, directSubmission.currentQueueWorkCount);
@ -445,7 +445,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDirectSubmissionPrintBuffersWh
testing::internal::CaptureStdout(); testing::internal::CaptureStdout();
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
ret = directSubmission.dispatchCommandBuffer(batchBuffer, flushStamp); ret = directSubmission.dispatchCommandBuffer(batchBuffer, flushStamp);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
@ -482,7 +482,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest,
directSubmission.partitionConfigSet = false; directSubmission.partitionConfigSet = false;
directSubmission.workPartitionAllocation = ultCsr->getWorkPartitionAllocation(); directSubmission.workPartitionAllocation = ultCsr->getWorkPartitionAllocation();
bool ret = directSubmission.initialize(true); bool ret = directSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.partitionConfigSet); EXPECT_TRUE(directSubmission.partitionConfigSet);
EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed()); EXPECT_NE(0x0u, directSubmission.ringCommandStream.getUsed());
@ -543,7 +543,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest,
directSubmission.partitionConfigSet = false; directSubmission.partitionConfigSet = false;
directSubmission.workPartitionAllocation = ultCsr->getWorkPartitionAllocation(); directSubmission.workPartitionAllocation = ultCsr->getWorkPartitionAllocation();
bool ret = directSubmission.initialize(false); bool ret = directSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_FALSE(directSubmission.partitionConfigSet); EXPECT_FALSE(directSubmission.partitionConfigSet);
EXPECT_FALSE(directSubmission.ringStart); EXPECT_FALSE(directSubmission.ringStart);
@ -578,3 +578,76 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest,
uint64_t gpuAddress = ultCsr->getWorkPartitionAllocation()->getGpuAddress(); uint64_t gpuAddress = ultCsr->getWorkPartitionAllocation()->getGpuAddress();
EXPECT_EQ(gpuAddress, loadRegisterMem->getMemoryAddress()); EXPECT_EQ(gpuAddress, loadRegisterMem->getMemoryAddress());
} }
HWTEST_F(DirectSubmissionDispatchBufferTest,
givenRenderDirectSubmissionUsingNotifyEnabledWhenDispatchWorkloadCalledWithMonitorFenceThenExpectPostSyncOperationWithNotifyFlag) {
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
using Dispatcher = RenderDispatcher<FamilyType>;
FlushStampTracker flushStamp(true);
MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice,
*osContext.get());
directSubmission.disableMonitorFence = false;
bool ret = directSubmission.initialize(true, true);
EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.useNotifyForPostSync);
size_t sizeUsedBefore = directSubmission.ringCommandStream.getUsed();
ret = directSubmission.dispatchCommandBuffer(batchBuffer, flushStamp);
EXPECT_TRUE(ret);
HardwareParse hwParse;
hwParse.parsePipeControl = true;
hwParse.parseCommands<FamilyType>(directSubmission.ringCommandStream, sizeUsedBefore);
hwParse.findHardwareCommands<FamilyType>();
bool foundFenceUpdate = false;
for (auto it = hwParse.pipeControlList.begin(); it != hwParse.pipeControlList.end(); it++) {
auto pipeControl = genCmdCast<PIPE_CONTROL *>(*it);
if (pipeControl->getPostSyncOperation() == POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA) {
foundFenceUpdate = true;
EXPECT_TRUE(pipeControl->getNotifyEnable());
break;
}
}
EXPECT_TRUE(foundFenceUpdate);
}
HWTEST_F(DirectSubmissionDispatchBufferTest,
givenBlitterDirectSubmissionUsingNotifyEnabledWhenDispatchWorkloadCalledWithMonitorFenceThenExpectPostSyncOperationWithNotifyFlag) {
using MI_FLUSH_DW = typename FamilyType::MI_FLUSH_DW;
using Dispatcher = BlitterDispatcher<FamilyType>;
FlushStampTracker flushStamp(true);
MockDirectSubmissionHw<FamilyType, Dispatcher> directSubmission(*pDevice,
*osContext.get());
directSubmission.disableMonitorFence = false;
bool ret = directSubmission.initialize(true, true);
EXPECT_TRUE(ret);
EXPECT_TRUE(directSubmission.useNotifyForPostSync);
size_t sizeUsedBefore = directSubmission.ringCommandStream.getUsed();
ret = directSubmission.dispatchCommandBuffer(batchBuffer, flushStamp);
EXPECT_TRUE(ret);
HardwareParse hwParse;
hwParse.parseCommands<FamilyType>(directSubmission.ringCommandStream, sizeUsedBefore);
hwParse.findHardwareCommands<FamilyType>();
auto miFlushList = hwParse.getCommandsList<MI_FLUSH_DW>();
bool foundFenceUpdate = false;
for (auto it = miFlushList.begin(); it != miFlushList.end(); it++) {
auto miFlush = genCmdCast<MI_FLUSH_DW *>(*it);
if (miFlush->getPostSyncOperation() == MI_FLUSH_DW::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA_QWORD) {
foundFenceUpdate = true;
EXPECT_TRUE(miFlush->getNotifyEnable());
break;
}
}
EXPECT_TRUE(foundFenceUpdate);
}

View File

@ -148,3 +148,32 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, RenderDispatcherTest,
HWTEST_F(RenderDispatcherTest, givenRenderWhenCheckingForMultiTileSynchronizationSupportThenExpectTrue) { HWTEST_F(RenderDispatcherTest, givenRenderWhenCheckingForMultiTileSynchronizationSupportThenExpectTrue) {
EXPECT_TRUE(RenderDispatcher<FamilyType>::isMultiTileSynchronizationSupported()); EXPECT_TRUE(RenderDispatcher<FamilyType>::isMultiTileSynchronizationSupported());
} }
HWCMDTEST_F(IGFX_XE_HP_CORE, RenderDispatcherTest,
givenRenderDispatcherNotifyFlagTrueWhenAddingMonitorFenceCmdThenExpectPipeControlWithProperAddressAndValueAndNotifyParameter) {
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
using POST_SYNC_OPERATION = typename FamilyType::PIPE_CONTROL::POST_SYNC_OPERATION;
uint64_t gpuAddress = 0xADD35500ull;
uint64_t value = 0x102030;
RenderDispatcher<FamilyType>::dispatchMonitorFence(cmdBuffer, gpuAddress, value, hardwareInfo, true, false);
HardwareParse hwParse;
hwParse.parsePipeControl = true;
hwParse.parseCommands<FamilyType>(cmdBuffer);
hwParse.findHardwareCommands<FamilyType>();
bool foundMonitorFence = false;
for (auto &it : hwParse.pipeControlList) {
PIPE_CONTROL *pipeControl = reinterpret_cast<PIPE_CONTROL *>(it);
if (pipeControl->getPostSyncOperation() == POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA) {
foundMonitorFence = true;
EXPECT_EQ(gpuAddress, NEO::UnitTestHelper<FamilyType>::getPipeControlPostSyncAddress(*pipeControl));
EXPECT_EQ(value, pipeControl->getImmediateData());
EXPECT_TRUE(pipeControl->getNotifyEnable());
break;
}
}
EXPECT_TRUE(foundMonitorFence);
}

View File

@ -74,6 +74,7 @@ struct MockDrmDirectSubmission : public DrmDirectSubmission<GfxFamily, Dispatche
using BaseClass::switchRingBuffers; using BaseClass::switchRingBuffers;
using BaseClass::tagAddress; using BaseClass::tagAddress;
using BaseClass::updateTagValue; using BaseClass::updateTagValue;
using BaseClass::useNotifyForPostSync;
using BaseClass::wait; using BaseClass::wait;
using BaseClass::workPartitionAllocation; using BaseClass::workPartitionAllocation;
@ -116,7 +117,7 @@ HWTEST_F(DrmDirectSubmissionTest, whenCreateDirectSubmissionThenValidObjectIsRet
*osContext.get()); *osContext.get());
EXPECT_NE(directSubmission.get(), nullptr); EXPECT_NE(directSubmission.get(), nullptr);
bool ret = directSubmission->initialize(false); bool ret = directSubmission->initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
} }

View File

@ -55,7 +55,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndStartedThe
EXPECT_EQ(1u, wddmDirectSubmission->commandBufferHeader->NeedsMidBatchPreEmptionSupport); EXPECT_EQ(1u, wddmDirectSubmission->commandBufferHeader->NeedsMidBatchPreEmptionSupport);
bool ret = wddmDirectSubmission->initialize(true); bool ret = wddmDirectSubmission->initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_TRUE(wddmDirectSubmission->ringStart); EXPECT_TRUE(wddmDirectSubmission->ringStart);
EXPECT_NE(nullptr, wddmDirectSubmission->ringBuffer); EXPECT_NE(nullptr, wddmDirectSubmission->ringBuffer);
@ -87,7 +87,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndNotStarted
EXPECT_EQ(0u, wddmDirectSubmission->commandBufferHeader->NeedsMidBatchPreEmptionSupport); EXPECT_EQ(0u, wddmDirectSubmission->commandBufferHeader->NeedsMidBatchPreEmptionSupport);
bool ret = wddmDirectSubmission->initialize(false); bool ret = wddmDirectSubmission->initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
EXPECT_FALSE(wddmDirectSubmission->ringStart); EXPECT_FALSE(wddmDirectSubmission->ringStart);
EXPECT_NE(nullptr, wddmDirectSubmission->ringBuffer); EXPECT_NE(nullptr, wddmDirectSubmission->ringBuffer);
@ -112,7 +112,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSubmitingCmdBufferThenExpectPass
MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(), MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(),
*osContext.get()); *osContext.get());
bool ret = wddmDirectSubmission.initialize(false); bool ret = wddmDirectSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
uint64_t gpuAddress = 0xFF00FF000; uint64_t gpuAddress = 0xFF00FF000;
@ -231,7 +231,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferStartedThenEx
MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(), MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(),
*osContext.get()); *osContext.get());
bool ret = wddmDirectSubmission.initialize(true); bool ret = wddmDirectSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t usedSpace = wddmDirectSubmission.ringCommandStream.getUsed(); size_t usedSpace = wddmDirectSubmission.ringCommandStream.getUsed();
uint64_t expectedGpuVa = wddmDirectSubmission.ringBuffer->getGpuAddress() + usedSpace; uint64_t expectedGpuVa = wddmDirectSubmission.ringBuffer->getGpuAddress() + usedSpace;
@ -257,7 +257,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferNotStartedThe
MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(), MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(),
*osContext.get()); *osContext.get());
bool ret = wddmDirectSubmission.initialize(false); bool ret = wddmDirectSubmission.initialize(false, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
size_t usedSpace = wddmDirectSubmission.ringCommandStream.getUsed(); size_t usedSpace = wddmDirectSubmission.ringCommandStream.getUsed();
@ -284,7 +284,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferStartedAndWai
MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(), MockWddmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> wddmDirectSubmission(*device.get(),
*osContext.get()); *osContext.get());
bool ret = wddmDirectSubmission.initialize(true); bool ret = wddmDirectSubmission.initialize(true, false);
EXPECT_TRUE(ret); EXPECT_TRUE(ret);
uint64_t expectedWaitFence = 0x10ull; uint64_t expectedWaitFence = 0x10ull;
wddmDirectSubmission.completionRingBuffers[RingBufferUse::SecondBuffer] = expectedWaitFence; wddmDirectSubmission.completionRingBuffers[RingBufferUse::SecondBuffer] = expectedWaitFence;