mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
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:

committed by
Compute-Runtime-Automation

parent
732fbe5c7f
commit
b6da6471f2
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user