diff --git a/level_zero/core/source/cmdqueue/cmdqueue.cpp b/level_zero/core/source/cmdqueue/cmdqueue.cpp index 34f1db52af..4a6454cd96 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue.cpp +++ b/level_zero/core/source/cmdqueue/cmdqueue.cpp @@ -184,7 +184,7 @@ CommandQueue *CommandQueue::create(uint32_t productFamily, Device *device, NEO:: osContext.reInitializeContext(); } osContext.ensureContextInitialized(); - csr->initDirectSubmission(*device->getNEODevice(), osContext); + csr->initDirectSubmission(); return commandQueue; } diff --git a/opencl/source/command_queue/command_queue_hw.h b/opencl/source/command_queue/command_queue_hw.h index ec46f998fb..4ef0d60b66 100644 --- a/opencl/source/command_queue/command_queue_hw.h +++ b/opencl/source/command_queue/command_queue_hw.h @@ -103,11 +103,11 @@ class CommandQueueHw : public CommandQueue { } gpgpuEngine->osContext->ensureContextInitialized(); - gpgpuEngine->commandStreamReceiver->initDirectSubmission(device->getDevice(), *gpgpuEngine->osContext); + gpgpuEngine->commandStreamReceiver->initDirectSubmission(); for (const EngineControl *engine : bcsEngines) { if (engine != nullptr) { engine->osContext->ensureContextInitialized(); - engine->commandStreamReceiver->initDirectSubmission(device->getDevice(), *engine->osContext); + engine->commandStreamReceiver->initDirectSubmission(); } } } diff --git a/opencl/test/unit_test/command_stream/command_stream_receiver_hw_2_tests.cpp b/opencl/test/unit_test/command_stream/command_stream_receiver_hw_2_tests.cpp index 1f75543a59..ab3b03aecd 100644 --- a/opencl/test/unit_test/command_stream/command_stream_receiver_hw_2_tests.cpp +++ b/opencl/test/unit_test/command_stream/command_stream_receiver_hw_2_tests.cpp @@ -1374,7 +1374,7 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenProgrammingBlitterThen auto &csr = pDevice->getUltCommandStreamReceiver(); using DirectSubmission = MockDirectSubmissionHw>; - csr.blitterDirectSubmission = std::make_unique(*pDevice, *csr.osContext, csr.getGlobalFenceAllocation()); + csr.blitterDirectSubmission = std::make_unique(csr); csr.recordFlusheBatchBuffer = true; DirectSubmission *directSubmission = reinterpret_cast(csr.blitterDirectSubmission.get()); bool initRet = directSubmission->initialize(true, false); @@ -1417,7 +1417,7 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenFlushTagUpdateThenBatc auto &csr = pDevice->getUltCommandStreamReceiver(); using DirectSubmission = MockDirectSubmissionHw>; - csr.blitterDirectSubmission = std::make_unique(*pDevice, *csr.osContext, csr.getGlobalFenceAllocation()); + csr.blitterDirectSubmission = std::make_unique(csr); csr.recordFlusheBatchBuffer = true; DirectSubmission *directSubmission = reinterpret_cast(csr.blitterDirectSubmission.get()); bool initRet = directSubmission->initialize(true, false); diff --git a/opencl/test/unit_test/os_interface/linux/drm_command_stream_tests_1.cpp b/opencl/test/unit_test/os_interface/linux/drm_command_stream_tests_1.cpp index 824634387a..3e2bcde186 100644 --- a/opencl/test/unit_test/os_interface/linux/drm_command_stream_tests_1.cpp +++ b/opencl/test/unit_test/os_interface/linux/drm_command_stream_tests_1.cpp @@ -608,7 +608,7 @@ struct DrmCommandStreamDirectSubmissionTest : public DrmCommandStreamEnhancedTes auto hwInfo = device->getRootDeviceEnvironment().getMutableHardwareInfo(); auto engineType = device->getDefaultEngine().osContext->getEngineType(); hwInfo->capabilityTable.directSubmissionEngines.data[engineType].engineSupported = true; - csr->initDirectSubmission(*device.get(), *device->getDefaultEngine().osContext); + csr->initDirectSubmission(); } template @@ -628,19 +628,22 @@ struct DrmCommandStreamBlitterDirectSubmissionTest : public DrmCommandStreamDire DebugManager.flags.DirectSubmissionOverrideComputeSupport.set(0u); DrmCommandStreamDirectSubmissionTest::SetUpT(); + executionEnvironment->incRefInternal(); osContext.reset(OsContext::create(device->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), 0, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS, EngineUsage::Regular}, PreemptionMode::ThreadGroup, device->getDeviceBitfield()))); osContext->ensureContextInitialized(); device->allEngines.emplace_back(csr, osContext.get()); - - csr->initDirectSubmission(*device.get(), *osContext.get()); + csr->setupContext(*osContext); + csr->initDirectSubmission(); } template void TearDownT() { DrmCommandStreamDirectSubmissionTest::TearDownT(); + osContext.reset(); + executionEnvironment->decRefInternal(); } std::unique_ptr osContext; @@ -654,8 +657,8 @@ struct DrmDirectSubmissionFunctionsCalled { template struct MockDrmDirectSubmissionToTestDtor : public DrmDirectSubmission> { - MockDrmDirectSubmissionToTestDtor(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation, DrmDirectSubmissionFunctionsCalled &functionsCalled) - : DrmDirectSubmission>(device, osContext, globalFenceAllocation), functionsCalled(functionsCalled) { + MockDrmDirectSubmissionToTestDtor(const CommandStreamReceiver &commandStreamReceiver, DrmDirectSubmissionFunctionsCalled &functionsCalled) + : DrmDirectSubmission>(commandStreamReceiver), functionsCalled(functionsCalled) { } ~MockDrmDirectSubmissionToTestDtor() override { if (ringStart) { @@ -680,8 +683,7 @@ struct MockDrmDirectSubmissionToTestDtor : public DrmDirectSubmission>(*device.get(), *device->getDefaultEngine().osContext, - device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation(), functionsCalled); + auto directSubmission = std::make_unique>(*device->getDefaultEngine().commandStreamReceiver, functionsCalled); ASSERT_NE(nullptr, directSubmission); EXPECT_FALSE(directSubmission->ringStart); @@ -695,15 +697,14 @@ HWTEST_TEMPLATED_F(DrmCommandStreamDirectSubmissionTest, givenEnabledDirectSubmi template struct MockDrmDirectSubmissionToTestRingStop : public DrmDirectSubmission> { - MockDrmDirectSubmissionToTestRingStop(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : DrmDirectSubmission>(device, osContext, globalFenceAllocation) { + MockDrmDirectSubmissionToTestRingStop(const CommandStreamReceiver &commandStreamReceiver) + : DrmDirectSubmission>(commandStreamReceiver) { } using DrmDirectSubmission>::ringStart; }; HWTEST_TEMPLATED_F(DrmCommandStreamDirectSubmissionTest, givenEnabledDirectSubmissionWhenStopRingBufferIsCalledThenClearRingStart) { - auto directSubmission = std::make_unique>(*device.get(), *device->getDefaultEngine().osContext, - device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + auto directSubmission = std::make_unique>(*device->getDefaultEngine().commandStreamReceiver); ASSERT_NE(nullptr, directSubmission); directSubmission->stopRingBuffer(); @@ -712,8 +713,8 @@ HWTEST_TEMPLATED_F(DrmCommandStreamDirectSubmissionTest, givenEnabledDirectSubmi template struct MockDrmDirectSubmissionDispatchCommandBuffer : public DrmDirectSubmission> { - MockDrmDirectSubmissionDispatchCommandBuffer(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : DrmDirectSubmission>(device, osContext, globalFenceAllocation) { + MockDrmDirectSubmissionDispatchCommandBuffer(const CommandStreamReceiver &commandStreamReceiver) + : DrmDirectSubmission>(commandStreamReceiver) { } ADDMETHOD_NOBASE(dispatchCommandBuffer, bool, false, @@ -722,8 +723,8 @@ struct MockDrmDirectSubmissionDispatchCommandBuffer : public DrmDirectSubmission template struct MockDrmBlitterDirectSubmissionDispatchCommandBuffer : public DrmDirectSubmission> { - MockDrmBlitterDirectSubmissionDispatchCommandBuffer(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : DrmDirectSubmission>(device, osContext, globalFenceAllocation) { + MockDrmBlitterDirectSubmissionDispatchCommandBuffer(const CommandStreamReceiver &commandStreamReceiver) + : DrmDirectSubmission>(commandStreamReceiver) { } ADDMETHOD_NOBASE(dispatchCommandBuffer, bool, false, @@ -731,8 +732,7 @@ struct MockDrmBlitterDirectSubmissionDispatchCommandBuffer : public DrmDirectSub }; HWTEST_TEMPLATED_F(DrmCommandStreamDirectSubmissionTest, givenDirectSubmissionFailsThenFlushReturnsError) { - static_cast *>(csr)->directSubmission = std::make_unique>(*device.get(), *device->getDefaultEngine().osContext, - device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + static_cast *>(csr)->directSubmission = std::make_unique>(*device->getDefaultEngine().commandStreamReceiver); auto directSubmission = static_cast *>(csr)->directSubmission.get(); static_cast *>(directSubmission)->dispatchCommandBufferResult = false; @@ -749,9 +749,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamDirectSubmissionTest, givenDirectSubmissionFa } HWTEST_TEMPLATED_F(DrmCommandStreamBlitterDirectSubmissionTest, givenBlitterDirectSubmissionFailsThenFlushReturnsError) { - static_cast *>(csr)->blitterDirectSubmission = std::make_unique>(*device.get(), - *device->getDefaultEngine().osContext, - device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + static_cast *>(csr)->blitterDirectSubmission = std::make_unique>(*csr); auto blitterDirectSubmission = static_cast *>(csr)->blitterDirectSubmission.get(); static_cast *>(blitterDirectSubmission)->dispatchCommandBufferResult = false; diff --git a/opencl/test/unit_test/os_interface/windows/device_command_stream_tests.cpp b/opencl/test/unit_test/os_interface/windows/device_command_stream_tests.cpp index 2dc4b11451..35ae7ef855 100644 --- a/opencl/test/unit_test/os_interface/windows/device_command_stream_tests.cpp +++ b/opencl/test/unit_test/os_interface/windows/device_command_stream_tests.cpp @@ -111,20 +111,20 @@ struct MockWddmCsr : public WddmCommandStreamReceiver { recordedCommandBuffer = std::unique_ptr(new CommandBuffer(device)); } - bool initDirectSubmission(Device &device, OsContext &osContext) override { + bool initDirectSubmission() override { if (callParentInitDirectSubmission) { - return WddmCommandStreamReceiver::initDirectSubmission(device, osContext); + return WddmCommandStreamReceiver::initDirectSubmission(); } bool ret = true; if (DebugManager.flags.EnableDirectSubmission.get() == 1) { if (!initBlitterDirectSubmission) { directSubmission = std::make_unique< - MockWddmDirectSubmission>>(device, osContext, globalFenceAllocation); + MockWddmDirectSubmission>>(*this); ret = directSubmission->initialize(true, false); this->dispatchMode = DispatchMode::ImmediateDispatch; } else { blitterDirectSubmission = std::make_unique< - MockWddmDirectSubmission>>(device, osContext, globalFenceAllocation); + MockWddmDirectSubmission>>(*this); blitterDirectSubmission->initialize(true, false); } } @@ -1059,8 +1059,8 @@ HWTEST_F(WddmCsrCompressionTests, givenDisabledCompressionWhenFlushingThenDontIn template struct MockWddmDrmDirectSubmissionDispatchCommandBuffer : public MockWddmDirectSubmission> { - MockWddmDrmDirectSubmissionDispatchCommandBuffer(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : MockWddmDirectSubmission>(device, osContext, globalFenceAllocation) { + MockWddmDrmDirectSubmissionDispatchCommandBuffer(const CommandStreamReceiver &commandStreamReceiver) + : MockWddmDirectSubmission>(commandStreamReceiver) { } bool dispatchCommandBuffer(BatchBuffer &batchBuffer, FlushStampTracker &flushStamp) override { @@ -1080,11 +1080,9 @@ HWTEST_TEMPLATED_F(WddmCommandStreamMockGdiTest, givenDirectSubmissionFailsThenF auto hwInfo = device->getRootDeviceEnvironment().getMutableHardwareInfo(); hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; - auto osContext = device->getDefaultEngine().osContext; - mockCsr->callParentInitDirectSubmission = false; - bool ret = csr->initDirectSubmission(*device.get(), *osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); @@ -1096,7 +1094,7 @@ HWTEST_TEMPLATED_F(WddmCommandStreamMockGdiTest, givenDirectSubmissionFailsThenF nullptr, false, false, QueueThrottle::MEDIUM, QueueSliceCount::defaultSliceCount, cs.getUsed(), &cs, commandBuffer->getUnderlyingBuffer(), false}; - mockCsr->directSubmission = std::make_unique(*device.get(), *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + mockCsr->directSubmission = std::make_unique(*device->getDefaultEngine().commandStreamReceiver); auto res = csr->flush(batchBuffer, csr->getResidencyAllocations()); EXPECT_EQ(NEO::SubmissionStatus::FAILED, res); @@ -1118,10 +1116,8 @@ HWTEST_TEMPLATED_F(WddmCommandStreamMockGdiTest, givenDirectSubmissionEnabledOnR auto hwInfo = device->getRootDeviceEnvironment().getMutableHardwareInfo(); hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; - auto osContext = device->getDefaultEngine().osContext; - mockCsr->callParentInitDirectSubmission = false; - bool ret = csr->initDirectSubmission(*device.get(), *osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); @@ -1160,11 +1156,9 @@ HWTEST_TEMPLATED_F(WddmCommandStreamMockGdiTest, givenDirectSubmissionEnabledOnB auto hwInfo = device->getRootDeviceEnvironment().getMutableHardwareInfo(); hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].engineSupported = true; - auto osContext = device->getDefaultEngine().osContext; - mockCsr->callParentInitDirectSubmission = false; mockCsr->initBlitterDirectSubmission = true; - bool ret = csr->initDirectSubmission(*device.get(), *osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); EXPECT_TRUE(csr->isBlitterDirectSubmissionEnabled()); diff --git a/shared/source/command_stream/command_stream_receiver.cpp b/shared/source/command_stream/command_stream_receiver.cpp index fc9bd2b109..8be72c900c 100644 --- a/shared/source/command_stream/command_stream_receiver.cpp +++ b/shared/source/command_stream/command_stream_receiver.cpp @@ -835,7 +835,11 @@ bool CommandStreamReceiver::testTaskCountReady(volatile uint32_t *pollAddress, u } const HardwareInfo &CommandStreamReceiver::peekHwInfo() const { - return *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo(); + return *peekRootDeviceEnvironment().getHardwareInfo(); +} + +const RootDeviceEnvironment &CommandStreamReceiver::peekRootDeviceEnvironment() const { + return *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]; } } // namespace NEO diff --git a/shared/source/command_stream/command_stream_receiver.h b/shared/source/command_stream/command_stream_receiver.h index 8c136507bb..a2adf04a1a 100644 --- a/shared/source/command_stream/command_stream_receiver.h +++ b/shared/source/command_stream/command_stream_receiver.h @@ -245,7 +245,7 @@ class CommandStreamReceiver { bool isLocalMemoryEnabled() const { return localMemoryEnabled; } - uint32_t getRootDeviceIndex() { return rootDeviceIndex; } + uint32_t getRootDeviceIndex() const { return rootDeviceIndex; } void startControllingDirectSubmissions(); @@ -253,7 +253,7 @@ class CommandStreamReceiver { return this->isDirectSubmissionEnabled() || isBlitterDirectSubmissionEnabled(); } - virtual bool initDirectSubmission(Device &device, OsContext &osContext) { + virtual bool initDirectSubmission() { return true; } @@ -317,6 +317,7 @@ class CommandStreamReceiver { virtual size_t getCmdsSizeForComputeBarrierCommand() const = 0; const HardwareInfo &peekHwInfo() const; + const RootDeviceEnvironment &peekRootDeviceEnvironment() const; MOCKABLE_VIRTUAL bool isGpuHangDetected() const; diff --git a/shared/source/command_stream/command_stream_receiver_hw.h b/shared/source/command_stream/command_stream_receiver_hw.h index 75828bc3ca..575cfe2206 100644 --- a/shared/source/command_stream/command_stream_receiver_hw.h +++ b/shared/source/command_stream/command_stream_receiver_hw.h @@ -124,7 +124,7 @@ class CommandStreamReceiverHw : public CommandStreamReceiver { virtual bool isKmdWaitModeActive() { return true; } - bool initDirectSubmission(Device &device, OsContext &osContext) override; + bool initDirectSubmission() override; GraphicsAllocation *getClearColorAllocation() override; TagAllocatorBase *getTimestampPacketAllocator() override; diff --git a/shared/source/command_stream/command_stream_receiver_hw_base.inl b/shared/source/command_stream/command_stream_receiver_hw_base.inl index 41aca7e924..d12caa5e53 100644 --- a/shared/source/command_stream/command_stream_receiver_hw_base.inl +++ b/shared/source/command_stream/command_stream_receiver_hw_base.inl @@ -1017,7 +1017,7 @@ uint32_t CommandStreamReceiverHw::flushBcsTask(const BlitPropertiesCo latestSentTaskCount = newTaskCount; getOsContext().ensureContextInitialized(); - this->initDirectSubmission(device, getOsContext()); + this->initDirectSubmission(); const auto &hwInfo = this->peekHwInfo(); if (PauseOnGpuProperties::pauseModeAllowed(DebugManager.flags.PauseOnBlitCopy.get(), taskCount, PauseOnGpuProperties::PauseMode::BeforeWorkload)) { @@ -1307,21 +1307,21 @@ inline void CommandStreamReceiverHw::stopDirectSubmission() { } template -inline bool CommandStreamReceiverHw::initDirectSubmission(Device &device, OsContext &osContext) { +inline bool CommandStreamReceiverHw::initDirectSubmission() { bool ret = true; bool submitOnInit = false; - auto startDirect = osContext.isDirectSubmissionAvailable(device.getHardwareInfo(), submitOnInit); + auto startDirect = this->osContext->isDirectSubmissionAvailable(peekHwInfo(), submitOnInit); if (startDirect) { auto lock = this->obtainUniqueOwnership(); if (!this->isAnyDirectSubmissionEnabled()) { - if (EngineHelpers::isBcs(osContext.getEngineType())) { - blitterDirectSubmission = DirectSubmissionHw>::create(device, osContext, this->globalFenceAllocation); + if (EngineHelpers::isBcs(this->osContext->getEngineType())) { + blitterDirectSubmission = DirectSubmissionHw>::create(*this); ret = blitterDirectSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync()); } else { - directSubmission = DirectSubmissionHw>::create(device, osContext, this->globalFenceAllocation); + directSubmission = DirectSubmissionHw>::create(*this); ret = directSubmission->initialize(submitOnInit, this->isUsedNotifyEnableForPostSync()); } auto directSubmissionController = executionEnvironment.initializeDirectSubmissionController(); @@ -1332,7 +1332,7 @@ inline bool CommandStreamReceiverHw::initDirectSubmission(Device &dev this->overrideDispatchPolicy(DispatchMode::ImmediateDispatch); } } - osContext.setDirectSubmissionActive(); + this->osContext->setDirectSubmissionActive(); } return ret; } diff --git a/shared/source/direct_submission/create_direct_submission_drm/create_direct_submission_hw.inl b/shared/source/direct_submission/create_direct_submission_drm/create_direct_submission_hw.inl index 84279eb524..9ad33a865e 100644 --- a/shared/source/direct_submission/create_direct_submission_drm/create_direct_submission_hw.inl +++ b/shared/source/direct_submission/create_direct_submission_drm/create_direct_submission_hw.inl @@ -9,7 +9,7 @@ namespace NEO { template -inline std::unique_ptr> DirectSubmissionHw::create(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) { - return std::make_unique>(device, osContext, globalFenceAllocation); +inline std::unique_ptr> DirectSubmissionHw::create(const CommandStreamReceiver &commandStreamReceiver) { + return std::make_unique>(commandStreamReceiver); } } // namespace NEO diff --git a/shared/source/direct_submission/create_direct_submission_drm_or_wddm/create_direct_submission_hw.inl b/shared/source/direct_submission/create_direct_submission_drm_or_wddm/create_direct_submission_hw.inl index f845296917..8a049a99e8 100644 --- a/shared/source/direct_submission/create_direct_submission_drm_or_wddm/create_direct_submission_hw.inl +++ b/shared/source/direct_submission/create_direct_submission_drm_or_wddm/create_direct_submission_hw.inl @@ -10,11 +10,11 @@ namespace NEO { template -inline std::unique_ptr> DirectSubmissionHw::create(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) { - if (device.getRootDeviceEnvironment().osInterface->getDriverModel()->getDriverModelType() == DriverModelType::DRM) { - return std::make_unique>(device, osContext, globalFenceAllocation); +inline std::unique_ptr> DirectSubmissionHw::create(const CommandStreamReceiver &commandStreamReceiver) { + if (commandStreamReceiver.peekRootDeviceEnvironment().osInterface->getDriverModel()->getDriverModelType() == DriverModelType::DRM) { + return std::make_unique>(commandStreamReceiver); } else { - return std::make_unique>(device, osContext, globalFenceAllocation); + return std::make_unique>(commandStreamReceiver); } } } // namespace NEO diff --git a/shared/source/direct_submission/create_direct_submission_wddm/create_direct_submission_hw.inl b/shared/source/direct_submission/create_direct_submission_wddm/create_direct_submission_hw.inl index f7b6a758e8..0c35342de5 100644 --- a/shared/source/direct_submission/create_direct_submission_wddm/create_direct_submission_hw.inl +++ b/shared/source/direct_submission/create_direct_submission_wddm/create_direct_submission_hw.inl @@ -9,7 +9,7 @@ namespace NEO { template -inline std::unique_ptr> DirectSubmissionHw::create(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) { - return std::make_unique>(device, osContext, globalFenceAllocation); +inline std::unique_ptr> DirectSubmissionHw::create(const CommandStreamReceiver &commandStreamReceiver) { + return std::make_unique>(commandStreamReceiver); } } // namespace NEO diff --git a/shared/source/direct_submission/direct_submission_hw.h b/shared/source/direct_submission/direct_submission_hw.h index 3da2823c72..e0320b1d67 100644 --- a/shared/source/direct_submission/direct_submission_hw.h +++ b/shared/source/direct_submission/direct_submission_hw.h @@ -54,13 +54,12 @@ class DirectSubmissionDiagnosticsCollector; class FlushStampTracker; class GraphicsAllocation; struct HardwareInfo; -class Device; class OsContext; template class DirectSubmissionHw { public: - DirectSubmissionHw(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation); + DirectSubmissionHw(const CommandStreamReceiver &commandStreamReceiver); virtual ~DirectSubmissionHw(); @@ -72,7 +71,7 @@ class DirectSubmissionHw { MOCKABLE_VIRTUAL bool dispatchCommandBuffer(BatchBuffer &batchBuffer, FlushStampTracker &flushStamp); - static std::unique_ptr> create(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation); + static std::unique_ptr> create(const CommandStreamReceiver &commandStreamReceiver); protected: static constexpr size_t prefetchSize = 8 * MemoryConstants::cacheLineSize; @@ -144,7 +143,7 @@ class DirectSubmissionHw { uint64_t semaphoreGpuVa = 0u; uint64_t gpuVaForMiFlush = 0u; - Device &device; + const CommandStreamReceiver &commandStreamReceiver; OsContext &osContext; const HardwareInfo *hwInfo = nullptr; const GraphicsAllocation *globalFenceAllocation = nullptr; diff --git a/shared/source/direct_submission/direct_submission_hw.inl b/shared/source/direct_submission/direct_submission_hw.inl index 639c1a2423..38a1360f91 100644 --- a/shared/source/direct_submission/direct_submission_hw.inl +++ b/shared/source/direct_submission/direct_submission_hw.inl @@ -30,9 +30,9 @@ namespace NEO { template -DirectSubmissionHw::DirectSubmissionHw(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : device(device), osContext(osContext), globalFenceAllocation(globalFenceAllocation) { - hwInfo = &device.getHardwareInfo(); +DirectSubmissionHw::DirectSubmissionHw(const CommandStreamReceiver &commandStreamReceiver) + : commandStreamReceiver(commandStreamReceiver), osContext(commandStreamReceiver.getOsContext()), globalFenceAllocation(commandStreamReceiver.getGlobalFenceAllocation()) { + hwInfo = &commandStreamReceiver.peekHwInfo(); auto hwInfoConfig = HwInfoConfig::get(hwInfo->platform.eProductFamily); @@ -70,11 +70,11 @@ bool DirectSubmissionHw::allocateResources() { DirectSubmissionAllocations allocations; bool isMultiOsContextCapable = osContext.getNumSupportedDevices() > 1u; - MemoryManager *memoryManager = device.getExecutionEnvironment()->memoryManager.get(); + MemoryManager *memoryManager = commandStreamReceiver.getMemoryManager(); constexpr size_t minimumRequiredSize = 256 * MemoryConstants::kiloByte; constexpr size_t additionalAllocationSize = MemoryConstants::pageSize; const auto allocationSize = alignUp(minimumRequiredSize + additionalAllocationSize, MemoryConstants::pageSize64k); - const AllocationProperties commandStreamAllocationProperties{device.getRootDeviceIndex(), + const AllocationProperties commandStreamAllocationProperties{commandStreamReceiver.getRootDeviceIndex(), true, allocationSize, AllocationType::RING_BUFFER, isMultiOsContextCapable, false, osContext.getDeviceBitfield()}; @@ -86,7 +86,7 @@ bool DirectSubmissionHw::allocateResources() { UNRECOVERABLE_IF(ringBuffer2 == nullptr); allocations.push_back(ringBuffer2); - const AllocationProperties semaphoreAllocationProperties{device.getRootDeviceIndex(), + const AllocationProperties semaphoreAllocationProperties{commandStreamReceiver.getRootDeviceIndex(), true, MemoryConstants::pageSize, AllocationType::SEMAPHORE_BUFFER, isMultiOsContextCapable, false, osContext.getDeviceBitfield()}; @@ -138,7 +138,7 @@ bool DirectSubmissionHw::allocateResources() { template bool DirectSubmissionHw::makeResourcesResident(DirectSubmissionAllocations &allocations) { - auto memoryInterface = this->device.getRootDeviceEnvironment().memoryOperationsInterface.get(); + auto memoryInterface = commandStreamReceiver.peekRootDeviceEnvironment().memoryOperationsInterface.get(); auto ret = memoryInterface->makeResidentWithinOsContext(&this->osContext, ArrayRef(allocations), false) == MemoryOperationsStatus::SUCCESS; @@ -280,7 +280,7 @@ inline void DirectSubmissionHw::dispatchSemaphoreSection( COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD); if (miMemFenceRequired) { - MemorySynchronizationCommands::addAdditionalSynchronization(ringCommandStream, 0, true, this->device.getHardwareInfo()); + MemorySynchronizationCommands::addAdditionalSynchronization(ringCommandStream, 0, true, *hwInfo); } dispatchPrefetchMitigation(); @@ -294,7 +294,7 @@ inline size_t DirectSubmissionHw::getSizeSemaphoreSection semaphoreSize += 2 * getSizeDisablePrefetcher(); if (miMemFenceRequired) { - semaphoreSize += MemorySynchronizationCommands::getSizeForSingleAdditionalSynchronization(this->device.getHardwareInfo()); + semaphoreSize += MemorySynchronizationCommands::getSizeForSingleAdditionalSynchronization(*hwInfo); } return semaphoreSize; @@ -532,7 +532,7 @@ inline GraphicsAllocation *DirectSubmissionHw::switchRing template void DirectSubmissionHw::deallocateResources() { - MemoryManager *memoryManager = device.getExecutionEnvironment()->memoryManager.get(); + MemoryManager *memoryManager = commandStreamReceiver.getMemoryManager(); if (ringBuffer) { memoryManager->freeGraphicsMemory(ringBuffer); diff --git a/shared/source/direct_submission/linux/drm_direct_submission.h b/shared/source/direct_submission/linux/drm_direct_submission.h index 87e04ae62f..30fb676418 100644 --- a/shared/source/direct_submission/linux/drm_direct_submission.h +++ b/shared/source/direct_submission/linux/drm_direct_submission.h @@ -16,7 +16,7 @@ class DrmDirectSubmission : public DirectSubmissionHw { using DirectSubmissionHw::ringCommandStream; using DirectSubmissionHw::switchRingBuffersAllocations; - DrmDirectSubmission(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation); + DrmDirectSubmission(const CommandStreamReceiver &commandStreamReceiver); ~DrmDirectSubmission(); diff --git a/shared/source/direct_submission/linux/drm_direct_submission.inl b/shared/source/direct_submission/linux/drm_direct_submission.inl index bd6092052c..0c7ead7c15 100644 --- a/shared/source/direct_submission/linux/drm_direct_submission.inl +++ b/shared/source/direct_submission/linux/drm_direct_submission.inl @@ -20,8 +20,8 @@ namespace NEO { template -DrmDirectSubmission::DrmDirectSubmission(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : DirectSubmissionHw(device, osContext, globalFenceAllocation) { +DrmDirectSubmission::DrmDirectSubmission(const CommandStreamReceiver &commandStreamReceiver) + : DirectSubmissionHw(commandStreamReceiver) { this->disableMonitorFence = true; @@ -42,7 +42,7 @@ DrmDirectSubmission::DrmDirectSubmission(Device &device, osContextLinux->getDrm().setDirectSubmissionActive(true); if (this->partitionedMode) { - this->workPartitionAllocation = device.getDefaultEngine().commandStreamReceiver->getWorkPartitionAllocation(); + this->workPartitionAllocation = commandStreamReceiver.getWorkPartitionAllocation(); UNRECOVERABLE_IF(this->workPartitionAllocation == nullptr); } } diff --git a/shared/source/direct_submission/windows/wddm_direct_submission.h b/shared/source/direct_submission/windows/wddm_direct_submission.h index 779c5a6afa..5fa6a02f15 100644 --- a/shared/source/direct_submission/windows/wddm_direct_submission.h +++ b/shared/source/direct_submission/windows/wddm_direct_submission.h @@ -19,7 +19,7 @@ class Wddm; template class WddmDirectSubmission : public DirectSubmissionHw { public: - WddmDirectSubmission(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation); + WddmDirectSubmission(const CommandStreamReceiver &commandStreamReceiver); ~WddmDirectSubmission(); diff --git a/shared/source/direct_submission/windows/wddm_direct_submission.inl b/shared/source/direct_submission/windows/wddm_direct_submission.inl index 745a8a2d5b..6f7890050f 100644 --- a/shared/source/direct_submission/windows/wddm_direct_submission.inl +++ b/shared/source/direct_submission/windows/wddm_direct_submission.inl @@ -23,13 +23,13 @@ namespace NEO { DECLARE_COMMAND_BUFFER(CommandBufferHeader, UMD_OCL, FALSE, FALSE, PERFTAG_OCL); template -WddmDirectSubmission::WddmDirectSubmission(Device &device, OsContext &osContext, const GraphicsAllocation *globalFenceAllocation) - : DirectSubmissionHw(device, osContext, globalFenceAllocation) { - osContextWin = reinterpret_cast(&osContext); +WddmDirectSubmission::WddmDirectSubmission(const CommandStreamReceiver &commandStreamReceiver) + : DirectSubmissionHw(commandStreamReceiver) { + osContextWin = reinterpret_cast(&this->osContext); wddm = osContextWin->getWddm(); commandBufferHeader = std::make_unique(); *(commandBufferHeader.get()) = CommandBufferHeader; - if (device.getPreemptionMode() != PreemptionMode::Disabled) { + if (osContextWin->getPreemptionMode() != PreemptionMode::Disabled) { commandBufferHeader->NeedsMidBatchPreEmptionSupport = true; } perfLogResidencyVariadicLog(wddm->getResidencyLogger(), "Starting Wddm ULLS. Placement ring buffer: %d semaphore %d\n", diff --git a/shared/source/helpers/blit_commands_helper.cpp b/shared/source/helpers/blit_commands_helper.cpp index deae5f8fb9..e439fe0905 100644 --- a/shared/source/helpers/blit_commands_helper.cpp +++ b/shared/source/helpers/blit_commands_helper.cpp @@ -198,7 +198,7 @@ BlitOperationResult BlitHelper::blitMemoryToAllocationBanks(const Device &device } bcsEngine->osContext->ensureContextInitialized(); - bcsEngine->commandStreamReceiver->initDirectSubmission(*pDeviceForBlit, *bcsEngine->osContext); + bcsEngine->commandStreamReceiver->initDirectSubmission(); BlitPropertiesContainer blitPropertiesContainer; blitPropertiesContainer.push_back( BlitProperties::constructPropertiesForReadWrite(BlitterConstants::BlitDirection::HostPtrToBuffer, diff --git a/shared/test/common/libult/ult_command_stream_receiver.h b/shared/test/common/libult/ult_command_stream_receiver.h index 607e7a04f0..c5fcc013da 100644 --- a/shared/test/common/libult/ult_command_stream_receiver.h +++ b/shared/test/common/libult/ult_command_stream_receiver.h @@ -291,12 +291,12 @@ class UltCommandStreamReceiver : public CommandStreamReceiverHw, publ return multiOsContextCapable; } - bool initDirectSubmission(Device &device, OsContext &osContext) override { + bool initDirectSubmission() override { if (ultHwConfig.csrFailInitDirectSubmission) { return false; } initDirectSubmissionCalled++; - return BaseClass::CommandStreamReceiver::initDirectSubmission(device, osContext); + return BaseClass::CommandStreamReceiver::initDirectSubmission(); } bool isDirectSubmissionEnabled() const override { diff --git a/shared/test/common/mocks/mock_direct_submission_hw.h b/shared/test/common/mocks/mock_direct_submission_hw.h index ddb50a99b4..b0883e1cd8 100644 --- a/shared/test/common/mocks/mock_direct_submission_hw.h +++ b/shared/test/common/mocks/mock_direct_submission_hw.h @@ -17,12 +17,12 @@ struct MockDirectSubmissionHw : public DirectSubmissionHw using BaseClass = DirectSubmissionHw; using BaseClass::activeTiles; using BaseClass::allocateResources; + using BaseClass::commandStreamReceiver; using BaseClass::completionRingBuffers; using BaseClass::cpuCachelineFlush; using BaseClass::currentQueueWorkCount; using BaseClass::currentRingBuffer; using BaseClass::deallocateResources; - using BaseClass::device; using BaseClass::diagnostic; using BaseClass::DirectSubmissionHw; using BaseClass::disableCacheFlush; diff --git a/shared/test/common/os_interface/linux/drm_command_stream_fixture.h b/shared/test/common/os_interface/linux/drm_command_stream_fixture.h index 1740dc0431..57ac6d27c1 100644 --- a/shared/test/common/os_interface/linux/drm_command_stream_fixture.h +++ b/shared/test/common/os_interface/linux/drm_command_stream_fixture.h @@ -131,6 +131,7 @@ class DrmCommandStreamEnhancedTemplate : public ::testing::Test { template void TearDownT() { executionEnvironment->decRefInternal(); + device.reset(); } template diff --git a/shared/test/unit_test/command_stream/command_stream_receiver_tests.cpp b/shared/test/unit_test/command_stream/command_stream_receiver_tests.cpp index 2e95ecd9d4..dbdc8f8e36 100644 --- a/shared/test/unit_test/command_stream/command_stream_receiver_tests.cpp +++ b/shared/test/unit_test/command_stream/command_stream_receiver_tests.cpp @@ -549,7 +549,8 @@ HWTEST_F(CommandStreamReceiverTest, whenDirectSubmissionDisabledThenExpectNoFeat EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Regular}, PreemptionMode::ThreadGroup, pDevice->getDeviceBitfield()))); osContext->setDefaultContext(true); - bool ret = csr.initDirectSubmission(*pDevice, *osContext.get()); + csr.setupContext(*osContext); + bool ret = csr.initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr.isDirectSubmissionEnabled()); EXPECT_FALSE(csr.isBlitterDirectSubmissionEnabled()); @@ -647,8 +648,9 @@ HWTEST_F(InitDirectSubmissionTest, givenDirectSubmissionControllerEnabledWhenIni auto hwInfo = device->getRootDeviceEnvironment().getMutableHardwareInfo(); hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; + csr->setupContext(*osContext); - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); @@ -675,7 +677,8 @@ HWTEST_F(InitDirectSubmissionTest, givenDirectSubmissionControllerDisabledWhenIn hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); @@ -698,7 +701,8 @@ HWTEST_F(InitDirectSubmissionTest, givenSetCsrFlagSetWhenInitDirectSubmissionThe hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); @@ -717,7 +721,8 @@ HWTEST_F(InitDirectSubmissionTest, whenDirectSubmissionEnabledOnRcsThenExpectFea hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); @@ -749,13 +754,14 @@ HWTEST_F(InitDirectSubmissionTest, whenCallInitDirectSubmissionAgainThenItIsNotR hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); auto directSubmission = csr->directSubmission.get(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); - ret = csr->initDirectSubmission(*device, *osContext.get()); + ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); @@ -774,7 +780,8 @@ HWTEST_F(InitDirectSubmissionTest, whenCallInitDirectSubmissionThenObtainLock) { auto hwInfo = device->getRootDeviceEnvironment().getMutableHardwareInfo(); hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + csr->initDirectSubmission(); EXPECT_EQ(1u, csr->recursiveLockCounter); csr.reset(); @@ -790,7 +797,8 @@ HWTEST_F(InitDirectSubmissionTest, givenDirectSubmissionEnabledWhenPlatformNotSu hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); @@ -809,7 +817,8 @@ HWTEST_F(InitDirectSubmissionTest, whenDirectSubmissionEnabledOnBcsThenExpectFea hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); EXPECT_TRUE(csr->isBlitterDirectSubmissionEnabled()); @@ -829,7 +838,8 @@ HWTEST_F(InitDirectSubmissionTest, givenDirectSubmissionEnabledWhenPlatformNotSu hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].engineSupported = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); EXPECT_FALSE(csr->isBlitterDirectSubmissionEnabled()); @@ -850,7 +860,8 @@ HWTEST_F(InitDirectSubmissionTest, givenLowPriorityContextWhenDirectSubmissionDi hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useLowPriority = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); @@ -868,7 +879,8 @@ HWTEST_F(InitDirectSubmissionTest, givenLowPriorityContextWhenDirectSubmissionEn hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].engineSupported = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useLowPriority = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); @@ -888,7 +900,8 @@ HWTEST_F(InitDirectSubmissionTest, givenInternalContextWhenDirectSubmissionDisab hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useInternal = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); @@ -907,7 +920,8 @@ HWTEST_F(InitDirectSubmissionTest, givenInternalContextWhenDirectSubmissionEnabl hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useInternal = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); @@ -927,7 +941,8 @@ HWTEST_F(InitDirectSubmissionTest, givenRootDeviceContextWhenDirectSubmissionDis hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useRootDevice = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); @@ -946,7 +961,8 @@ HWTEST_F(InitDirectSubmissionTest, givenRootDeviceContextWhenDirectSubmissionEna hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useRootDevice = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); @@ -966,7 +982,8 @@ HWTEST_F(InitDirectSubmissionTest, givenNonDefaultContextWhenDirectSubmissionDis hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useNonDefault = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); @@ -986,7 +1003,8 @@ HWTEST_F(InitDirectSubmissionTest, givenNonDefaultContextContextWhenDirectSubmis hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].useNonDefault = true; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_RCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_TRUE(csr->isDirectSubmissionEnabled()); @@ -1010,7 +1028,8 @@ HWTEST_F(InitDirectSubmissionTest, GivenBlitterOverrideEnabledWhenBlitterIsNonDe hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].useNonDefault = false; hwInfo->capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_BCS].submitOnInit = false; - bool ret = csr->initDirectSubmission(*device, *osContext.get()); + csr->setupContext(*osContext); + bool ret = csr->initDirectSubmission(); EXPECT_TRUE(ret); EXPECT_FALSE(csr->isDirectSubmissionEnabled()); EXPECT_TRUE(csr->isBlitterDirectSubmissionEnabled()); diff --git a/shared/test/unit_test/direct_submission/direct_submission_tests_1.cpp b/shared/test/unit_test/direct_submission/direct_submission_tests_1.cpp index 08ac8773d5..261ab1b744 100644 --- a/shared/test/unit_test/direct_submission/direct_submission_tests_1.cpp +++ b/shared/test/unit_test/direct_submission/direct_submission_tests_1.cpp @@ -30,8 +30,7 @@ HWTEST_F(DirectSubmissionTest, whenDebugCacheFlushDisabledSetThenExpectNoCpuCach DebugManagerStateRestore restore; DebugManager.flags.DirectSubmissionDisableCpuCacheFlush.set(1); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.disableCpuCacheFlush); uintptr_t expectedPtrVal = 0; @@ -50,8 +49,7 @@ HWTEST_F(DirectSubmissionTest, whenDebugCacheFlushDisabledNotSetThenExpectCpuCac DebugManagerStateRestore restore; DebugManager.flags.DirectSubmissionDisableCpuCacheFlush.set(0); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_FALSE(directSubmission.disableCpuCacheFlush); uintptr_t expectedPtrVal = 0xABCD00u; @@ -63,8 +61,7 @@ HWTEST_F(DirectSubmissionTest, whenDebugCacheFlushDisabledNotSetThenExpectCpuCac } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenStopThenRingIsNotStarted) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); auto &csr = pDevice->getUltCommandStreamReceiver(); csr.directSubmission.reset(&directSubmission); @@ -79,8 +76,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenStopThenRingIsNotStarted } HWTEST_F(DirectSubmissionTest, givenBlitterDirectSubmissionWhenStopThenRingIsNotStarted) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); auto &csr = pDevice->getUltCommandStreamReceiver(); std::unique_ptr osContext(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), 0, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS, EngineUsage::Regular}, @@ -103,7 +99,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenMakingResourcesResidentT pDevice->getRootDeviceEnvironmentRef().memoryOperationsInterface.reset(mockMemoryOperations.get()); - MockDirectSubmissionHw> directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -123,8 +119,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenMakingResourcesResidentT } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionInitializedWhenRingIsStartedThenExpectAllocationsCreatedAndCommandsDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.disableCpuCacheFlush); bool ret = directSubmission.initialize(true, false); @@ -139,8 +134,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionInitializedWhenRingIsStarted } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionInitializedWhenRingIsNotStartedThenExpectAllocationsCreatedAndCommandsNotDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -155,8 +149,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionInitializedWhenRingIsNotStar HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSwitchBuffersWhenCurrentIsPrimaryThenExpectNextSecondary) { using RingBufferUse = typename MockDirectSubmissionHw>::RingBufferUse; - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -169,8 +162,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSwitchBuffersWhenCurrentIsPr HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSwitchBuffersWhenCurrentIsSecondaryThenExpectNextPrimary) { using RingBufferUse = typename MockDirectSubmissionHw>::RingBufferUse; - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -185,8 +177,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSwitchBuffersWhenCurrentIsSe EXPECT_EQ(RingBufferUse::FirstBuffer, directSubmission.currentRingBuffer); } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionAllocateFailWhenRingIsStartedThenExpectRingNotStarted) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.disableCpuCacheFlush); directSubmission.allocateOsResourcesReturn = false; @@ -198,8 +189,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionAllocateFailWhenRingIsStarte } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSubmitFailWhenRingIsStartedThenExpectRingNotStartedCommandsDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.submitReturn = false; bool ret = directSubmission.initialize(true, false); @@ -210,8 +200,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionSubmitFailWhenRingIsStartedT } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsStartedThenExpectNoStartCommandsDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -223,8 +212,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsStartedThenEx } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedThenExpectStartCommandsDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -237,8 +225,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedThe } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedSubmitFailThenExpectStartCommandsDispatchedRingNotStarted) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -252,8 +239,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedSub } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedAndSwitchBufferIsNeededThenExpectRingAllocationChangedStartCommandsDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -279,8 +265,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStartWhenRingIsNotStartedAnd } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionStopWhenStopRingIsCalledThenExpectStopCommandDispatched) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -301,12 +286,10 @@ HWTEST_F(DirectSubmissionTest, using MI_BATCH_BUFFER_END = typename FamilyType::MI_BATCH_BUFFER_END; using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw regularDirectSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw regularDirectSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t regularSizeEnd = regularDirectSubmission.getSizeEnd(); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.allocateResources(); directSubmission.disableMonitorFence = true; @@ -347,8 +330,7 @@ HWTEST_F(DirectSubmissionTest, } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSemaphoreThenExpectCorrectSizeUsed) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -358,8 +340,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSemaphoreThenExp } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchStartSectionThenExpectCorrectSizeUsed) { - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -369,7 +350,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchStartSectionThen } HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSwitchRingBufferSectionThenExpectCorrectSizeUsed) { - MockDirectSubmissionHw> directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -380,8 +361,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchSwitchRingBuffer HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchFlushSectionThenExpectCorrectSizeUsed) { using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -393,7 +373,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchFlushSectionThen HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchTagUpdateSectionThenExpectCorrectSizeUsed) { using Dispatcher = RenderDispatcher; MockDirectSubmissionHw - directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -404,8 +384,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchTagUpdateSection HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenDispatchEndingSectionThenExpectCorrectSizeUsed) { using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -419,8 +398,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenGetDispatchSizeThenExpec using Dispatcher = RenderDispatcher; DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionDisableCacheFlush.set(0); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t expectedSize = directSubmission.getSizeStartSection() + Dispatcher::getSizeCacheFlush(*directSubmission.hwInfo) + @@ -435,8 +413,7 @@ HWTEST_F(DirectSubmissionTest, using Dispatcher = RenderDispatcher; DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionDisableCacheFlush.set(0); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.workloadMode = 1; size_t expectedSize = Dispatcher::getSizeStoreDwordCommand() + @@ -453,8 +430,7 @@ HWTEST_F(DirectSubmissionTest, DebugManager.flags.DirectSubmissionDisableCacheFlush.set(0); using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.workloadMode = 2; size_t expectedSize = Dispatcher::getSizeCacheFlush(*directSubmission.hwInfo) + Dispatcher::getSizeMonitorFence(*directSubmission.hwInfo) + @@ -467,8 +443,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionDisableCacheFlushWhenGetDispatchSizeThenExpectCorrectSizeReturned) { using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.disableCacheFlush = true; size_t expectedSize = directSubmission.getSizeStartSection() + Dispatcher::getSizeMonitorFence(*directSubmission.hwInfo) + @@ -482,8 +457,7 @@ HWTEST_F(DirectSubmissionTest, using Dispatcher = RenderDispatcher; DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionDisableCacheFlush.set(0); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.disableMonitorFence = true; size_t expectedSize = directSubmission.getSizeStartSection() + Dispatcher::getSizeCacheFlush(*directSubmission.hwInfo) + @@ -495,8 +469,7 @@ HWTEST_F(DirectSubmissionTest, HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenGetEndSizeThenExpectCorrectSizeReturned) { using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t expectedSize = Dispatcher::getSizeStopCommandBuffer() + Dispatcher::getSizeCacheFlush(*directSubmission.hwInfo) + @@ -509,8 +482,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenGetEndSizeThenExpectCorr HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenSettingAddressInReturnCommandThenVerifyCorrectlySet) { using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START; - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -525,9 +497,7 @@ HWTEST_F(DirectSubmissionTest, givenDirectSubmissionWhenSettingAddressInReturnCo HWTEST_F(DirectSubmissionTest, whenDirectSubmissionInitializedThenExpectCreatedAllocationsFreed) { MemoryManager *memoryManager = pDevice->getExecutionEnvironment()->memoryManager.get(); - std::unique_ptr>> directSubmission = - std::make_unique>>(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + auto directSubmission = std::make_unique>>(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission->initialize(false, false); EXPECT_TRUE(ret); @@ -537,8 +507,7 @@ HWTEST_F(DirectSubmissionTest, whenDirectSubmissionInitializedThenExpectCreatedA memoryManager->freeGraphicsMemory(nulledAllocation); directSubmission = std::make_unique< - MockDirectSubmissionHw>>(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw>>(*pDevice->getDefaultEngine().commandStreamReceiver); ret = directSubmission->initialize(false, false); EXPECT_TRUE(ret); @@ -548,8 +517,7 @@ HWTEST_F(DirectSubmissionTest, whenDirectSubmissionInitializedThenExpectCreatedA memoryManager->freeGraphicsMemory(nulledAllocation); directSubmission = std::make_unique< - MockDirectSubmissionHw>>(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw>>(*pDevice->getDefaultEngine().commandStreamReceiver); ret = directSubmission->initialize(false, false); EXPECT_TRUE(ret); nulledAllocation = directSubmission->semaphores; @@ -676,8 +644,7 @@ HWTEST_F(DirectSubmissionTest, NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(UllsDefaults::defaultDisableCacheFlush); EXPECT_FALSE(UllsDefaults::defaultDisableMonitorFence); EXPECT_TRUE(directSubmission.disableCacheFlush); @@ -711,8 +678,7 @@ HWTEST_F(DirectSubmissionTest, NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(UllsDefaults::defaultDisableCacheFlush); EXPECT_FALSE(UllsDefaults::defaultDisableMonitorFence); EXPECT_TRUE(directSubmission.disableCacheFlush); @@ -749,8 +715,7 @@ HWTEST_F(DirectSubmissionTest, NEO::IoFunctions::mockFopenCalled = 0u; NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(UllsDefaults::defaultDisableCacheFlush); EXPECT_FALSE(UllsDefaults::defaultDisableMonitorFence); EXPECT_TRUE(directSubmission.disableCacheFlush); @@ -789,8 +754,7 @@ HWTEST_F(DirectSubmissionTest, NEO::IoFunctions::mockFopenCalled = 0u; NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); uint32_t expectedSemaphoreValue = directSubmission.currentQueueWorkCount; EXPECT_TRUE(UllsDefaults::defaultDisableCacheFlush); EXPECT_FALSE(UllsDefaults::defaultDisableMonitorFence); @@ -885,8 +849,7 @@ HWTEST_F(DirectSubmissionTest, NEO::IoFunctions::mockFopenCalled = 0u; NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); uint32_t expectedSemaphoreValue = directSubmission.currentQueueWorkCount; EXPECT_TRUE(UllsDefaults::defaultDisableCacheFlush); EXPECT_FALSE(UllsDefaults::defaultDisableMonitorFence); @@ -948,8 +911,7 @@ HWTEST_F(DirectSubmissionTest, NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_NE(nullptr, directSubmission.diagnostic.get()); EXPECT_EQ(1u, NEO::IoFunctions::mockFopenCalled); @@ -999,8 +961,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, DirectSubmissionTest, givenLegacyPlatformsWhenProgrammingPartitionRegisterThenExpectNoAction) { using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -1022,7 +983,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionTest, givenDebugFlagSetWhenDispatch using MI_ARB_CHECK = typename FamilyType::MI_ARB_CHECK; using Dispatcher = BlitterDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.allocateResources(); EXPECT_TRUE(ret); diff --git a/shared/test/unit_test/direct_submission/direct_submission_tests_2.cpp b/shared/test/unit_test/direct_submission/direct_submission_tests_2.cpp index bfb565f73d..95e52f6a51 100644 --- a/shared/test/unit_test/direct_submission/direct_submission_tests_2.cpp +++ b/shared/test/unit_test/direct_submission/direct_submission_tests_2.cpp @@ -95,7 +95,7 @@ struct DirectSubmissionDispatchMiMemFenceTest : public DirectSubmissionDispatchB }; HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenMiMemFenceSupportedWhenInitializingDirectSubmissionThenEnableMiMemFenceProgramming) { - MockDirectSubmissionHw> directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(miMemFenceSupported, directSubmission.miMemFenceRequired); EXPECT_FALSE(directSubmission.systemMemoryFenceAddressSet); @@ -108,7 +108,7 @@ HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenMiMemFenceSupportedWhenIni } HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenMiMemFenceSupportedWhenDispatchingWithoutInitThenEnableMiMemFenceProgramming) { - MockDirectSubmissionHw> directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); FlushStampTracker flushStamp(true); EXPECT_EQ(miMemFenceSupported, directSubmission.miMemFenceRequired); @@ -126,7 +126,7 @@ HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenMiMemFenceSupportedWhenDis } HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenMiMemFenceSupportedWhenSysMemFenceIsAlreadySentThenDontReprogram) { - MockDirectSubmissionHw> directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); FlushStampTracker flushStamp(true); EXPECT_EQ(miMemFenceSupported, directSubmission.miMemFenceRequired); @@ -145,7 +145,7 @@ HWTEST_F(DirectSubmissionDispatchMiMemFenceTest, givenDebugFlagSetWhenCreatingDi DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionInsertExtraMiMemFenceCommands.set(0); - MockDirectSubmissionHw> directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_FALSE(directSubmission.miMemFenceRequired); EXPECT_FALSE(directSubmission.systemMemoryFenceAddressSet); @@ -171,8 +171,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest, ultCsr->staticWorkPartitioningEnabled = true; ultCsr->createWorkPartitionAllocation(*pDevice); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.partitionConfigSet); directSubmission.partitionConfigSet = false; directSubmission.disableMonitorFence = false; @@ -244,12 +243,10 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionDisableCacheFlush.set(0); - MockDirectSubmissionHw regularDirectSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw regularDirectSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t regularSizeDispatch = regularDirectSubmission.getSizeDispatch(); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.disableMonitorFence = true; bool ret = directSubmission.allocateResources(); @@ -295,12 +292,10 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionDisableCacheFlush.set(0); - MockDirectSubmissionHw regularDirectSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw regularDirectSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t regularSizeDispatch = regularDirectSubmission.getSizeDispatch(); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.disableCacheFlush = true; bool ret = directSubmission.allocateResources(); @@ -344,13 +339,11 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM; using Dispatcher = RenderDispatcher; - MockDirectSubmissionHw regularDirectSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw regularDirectSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t regularSizeDispatch = regularDirectSubmission.getSizeDispatch(); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.workloadMode = 1; bool ret = directSubmission.allocateResources(); @@ -391,12 +384,10 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START; using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM; - MockDirectSubmissionHw> regularDirectSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> regularDirectSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); size_t regularSizeDispatch = regularDirectSubmission.getSizeDispatch(); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.workloadMode = 2; bool ret = directSubmission.allocateResources(); @@ -431,8 +422,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -473,8 +463,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDirectSubmissionRingNotStartAndSwitchBuffersWhenDispatchingCommandBufferThenExpectDispatchInCommandBufferQueueCountIncreaseAndSubmitToGpu) { FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -510,8 +499,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDirectSubmissionRingStartWhenDispatchingCommandBufferThenExpectDispatchInCommandBufferAndQueueCountIncrease) { FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -549,8 +537,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDirectSubmissionRingNotStartWhenDispatchingCommandBufferThenExpectDispatchInCommandBufferQueueCountIncreaseAndSubmitToGpu) { FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -587,8 +574,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDirectSubmissionPrintBuffersWh DebugManager.flags.DirectSubmissionPrintBuffers.set(true); FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); testing::internal::CaptureStdout(); @@ -621,8 +607,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.partitionConfigSet); directSubmission.activeTiles = 2; directSubmission.partitionedMode = true; @@ -685,8 +670,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw> directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw> directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.partitionConfigSet); directSubmission.activeTiles = 2; directSubmission.partitionedMode = true; @@ -737,8 +721,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.disableMonitorFence = false; bool ret = directSubmission.initialize(true, true); @@ -773,8 +756,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); directSubmission.disableMonitorFence = false; bool ret = directSubmission.initialize(true, true); @@ -812,8 +794,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, true); EXPECT_TRUE(ret); @@ -837,8 +818,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, FlushStampTracker flushStamp(true); - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.initialize(true, true); EXPECT_TRUE(ret); @@ -860,7 +840,7 @@ HWTEST_F(DirectSubmissionDispatchBufferTest, givenDebugFlagSetWhenDispatchingWor for (int32_t debugFlag : {-1, 0, 1, 2}) { DebugManager.flags.DirectSubmissionInsertSfenceInstructionPriorToSubmission.set(debugFlag); - MockDirectSubmissionHw directSubmission(*pDevice, *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_TRUE(directSubmission.initialize(true, true)); auto initialCounterValue = CpuIntrinsicsTests::sfenceCounter.load(); diff --git a/shared/test/unit_test/direct_submission/direct_submission_tests_xe_hp_core.cpp b/shared/test/unit_test/direct_submission/direct_submission_tests_xe_hp_core.cpp index 6a55b24074..739ed8b0fa 100644 --- a/shared/test/unit_test/direct_submission/direct_submission_tests_xe_hp_core.cpp +++ b/shared/test/unit_test/direct_submission/direct_submission_tests_xe_hp_core.cpp @@ -19,8 +19,7 @@ XE_HP_CORE_TEST_F(DirectSubmissionTestXE_HP_CORE, givenBlitterUsedWhenDispatchin using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START; using Dispatcher = BlitterDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(sizeof(MI_BATCH_BUFFER_START), directSubmission.getSizePrefetchMitigation()); @@ -44,8 +43,7 @@ XE_HP_CORE_TEST_F(DirectSubmissionTestXE_HP_CORE, givenBlitterUsedWhenDispatchin using MI_ARB_CHECK = typename FamilyType::MI_ARB_CHECK; using Dispatcher = BlitterDispatcher; - MockDirectSubmissionHw directSubmission(*pDevice, - *osContext, pDevice->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDirectSubmissionHw directSubmission(*pDevice->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(sizeof(MI_ARB_CHECK), directSubmission.getSizeDisablePrefetcher()); diff --git a/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp b/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp index ba43c6c190..69ddb5c344 100644 --- a/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp +++ b/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp @@ -41,6 +41,7 @@ struct DrmDirectSubmissionTest : public DrmMemoryManagerBasic { EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Regular}, PreemptionMode::ThreadGroup, device->getDeviceBitfield())); osContext->ensureContextInitialized(); + device->getDefaultEngine().commandStreamReceiver->setupContext(*osContext); } void TearDown() override { @@ -77,17 +78,12 @@ struct MockDrmDirectSubmission : public DrmDirectSubmission(device, osContext, globalFenceAllocation) { - this->disableMonitorFence = false; - } }; using namespace NEO; HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenCallingLinuxImplementationThenExpectInitialImplementationValues) { - MockDrmDirectSubmission> drmDirectSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission> drmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); auto drm = static_cast(executionEnvironment.rootDeviceEnvironments[0]->osInterface->getDriverModel()->as()); EXPECT_TRUE(drm->isDirectSubmissionActive()); @@ -113,8 +109,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenCallingLinuxImplem } HWTEST_F(DrmDirectSubmissionTest, whenCreateDirectSubmissionThenValidObjectIsReturned) { - auto directSubmission = DirectSubmissionHw>::create(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + auto directSubmission = DirectSubmissionHw>::create(*device->getDefaultEngine().commandStreamReceiver); EXPECT_NE(directSubmission.get(), nullptr); bool ret = directSubmission->initialize(false, false); @@ -125,8 +120,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenDisabledMonitorFenceWhenDispatchSwitchRin using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; using Dispatcher = RenderDispatcher; - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); directSubmission.disableMonitorFence = true; directSubmission.ringStart = true; @@ -152,8 +146,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenDisabledMonitorFenceWhenUpdateTagValueThe using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; using Dispatcher = RenderDispatcher; - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); directSubmission.disableMonitorFence = true; directSubmission.ringStart = true; @@ -184,8 +177,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenDirectSubmissionNewResourceTlbFlushWhenDi DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionNewResourceTlbFlush.set(1); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.allocateResources(); EXPECT_TRUE(ret); @@ -212,8 +204,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenNewResourceBoundhWhenDispatchCommandBuffe DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionNewResourceTlbFlush.set(-1); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.allocateResources(); EXPECT_TRUE(ret); @@ -243,8 +234,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenNoNewResourceBoundhWhenDispatchCommandBuf DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionNewResourceTlbFlush.set(-1); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.allocateResources(); EXPECT_TRUE(ret); @@ -273,8 +263,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenDirectSubmissionNewResourceTlbFlusZeroAnd DebugManagerStateRestore restorer; DebugManager.flags.DirectSubmissionNewResourceTlbFlush.set(0); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = directSubmission.allocateResources(); EXPECT_TRUE(ret); @@ -299,8 +288,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenDirectSubmissionNewResourceTlbFlusZeroAnd HWCMDTEST_F(IGFX_XE_HP_CORE, DrmDirectSubmissionTest, givenMultipleActiveTilesWhenWaitingForTagUpdateThenQueryAllActiveTiles) { using Dispatcher = RenderDispatcher; - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); uint32_t offset = directSubmission.postSyncOffset; EXPECT_NE(0u, offset); @@ -337,8 +325,8 @@ HWTEST_F(DrmDirectSubmissionTest, ultCsr->staticWorkPartitioningEnabled = true; ultCsr->createWorkPartitionAllocation(*device); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + device->getDefaultEngine().commandStreamReceiver->setupContext(*osContext); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(2u, directSubmission.activeTiles); EXPECT_TRUE(directSubmission.partitionedMode); @@ -362,8 +350,7 @@ HWTEST_F(DrmDirectSubmissionTest, givenRenderDispatcherAndMultiTileDeviceWhenCre ultCsr->staticWorkPartitioningEnabled = true; ultCsr->createWorkPartitionAllocation(*device); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(1u, directSubmission.activeTiles); EXPECT_FALSE(directSubmission.partitionedMode); @@ -385,8 +372,8 @@ HWTEST_F(DrmDirectSubmissionTest, givenBlitterDispatcherAndMultiTileDeviceWhenCr osContext->ensureContextInitialized(); EXPECT_EQ(2u, osContext->getDeviceBitfield().count()); - MockDrmDirectSubmission directSubmission(*device.get(), - *osContext.get(), device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + device->getDefaultEngine().commandStreamReceiver->setupContext(*osContext); + MockDrmDirectSubmission directSubmission(*device->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(1u, directSubmission.activeTiles); EXPECT_FALSE(directSubmission.partitionedMode); diff --git a/shared/test/unit_test/direct_submission/windows/wddm_direct_submission_tests.cpp b/shared/test/unit_test/direct_submission/windows/wddm_direct_submission_tests.cpp index 7902088053..8382258b4a 100644 --- a/shared/test/unit_test/direct_submission/windows/wddm_direct_submission_tests.cpp +++ b/shared/test/unit_test/direct_submission/windows/wddm_direct_submission_tests.cpp @@ -22,10 +22,12 @@ using namespace NEO; +template struct WddmDirectSubmissionFixture : public WddmFixture { void SetUp() override { VariableBackup backupHwInfo(defaultHwInfo.get()); defaultHwInfo->capabilityTable.blitterOperationsSupported = true; + DebugManager.flags.ForcePreemptionMode.set(preemptionMode); WddmFixture::SetUp(); @@ -38,21 +40,19 @@ struct WddmDirectSubmissionFixture : public WddmFixture { osContext = static_cast(device->getDefaultEngine().osContext); wddmMockInterface->createMonitoredFence(*osContext); - - device->setPreemptionMode(PreemptionMode::ThreadGroup); } + DebugManagerStateRestore restorer; WddmMockInterface20 *wddmMockInterface; OsContextWin *osContext = nullptr; std::unique_ptr device; }; -using WddmDirectSubmissionTest = WddmDirectSubmissionFixture; +using WddmDirectSubmissionTest = WddmDirectSubmissionFixture; HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndStartedThenExpectProperCommandsDispatched) { std::unique_ptr>> wddmDirectSubmission = - std::make_unique>>(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + std::make_unique>>(*device->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(1u, wddmDirectSubmission->commandBufferHeader->NeedsMidBatchPreEmptionSupport); @@ -80,11 +80,10 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndStartedThe EXPECT_EQ(1u, wddmMockInterface->destroyMonitorFenceCalled); } -HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndNotStartedThenExpectNoCommandsDispatched) { - device->setPreemptionMode(PreemptionMode::Disabled); +using WddmDirectSubmissionNoPreemptionTest = WddmDirectSubmissionFixture; +HWTEST_F(WddmDirectSubmissionNoPreemptionTest, givenWddmWhenDirectIsInitializedAndNotStartedThenExpectNoCommandsDispatched) { std::unique_ptr>> wddmDirectSubmission = - std::make_unique>>(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + std::make_unique>>(*device->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(0u, wddmDirectSubmission->commandBufferHeader->NeedsMidBatchPreEmptionSupport); @@ -110,8 +109,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenDirectIsInitializedAndNotStarted } HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSubmitingCmdBufferThenExpectPassWddmContextAndProperHeader) { - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = wddmDirectSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -129,8 +127,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSubmitingCmdBufferThenExpectPass } HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenAllocateOsResourcesThenExpectRingMonitorFenceCreatedAndAllocationsResident) { - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = wddmDirectSubmission.allocateResources(); EXPECT_TRUE(ret); @@ -148,8 +145,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenAllocateOsResourcesFenceCreation GraphicsAllocation *ringBuffer = memoryManager->allocateGraphicsMemoryWithProperties(commandStreamAllocationProperties); ASSERT_NE(nullptr, ringBuffer); - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); DirectSubmissionAllocations allocations; allocations.push_back(ringBuffer); @@ -167,8 +163,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenAllocateOsResourcesFenceCreation } HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenAllocateOsResourcesResidencyFailsThenExpectRingMonitorFenceCreatedAndAllocationsNotResident) { - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); wddm->callBaseMakeResident = false; wddm->makeResidentStatus = false; @@ -189,8 +184,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenGettingTagDataThenExpectContextM contextFence.gpuAddress = address; contextFence.currentFenceValue = value; - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); TagData tagData; wddmDirectSubmission.getTagAddressValue(tagData); @@ -200,8 +194,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenGettingTagDataThenExpectContextM } HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenHandleResidencyThenExpectWddmWaitOnPaginfFenceFromCpuCalled) { - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); wddmDirectSubmission.handleResidency(); @@ -215,8 +208,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenHandlingRingBufferCompletionThen contextFence.gpuAddress = address; contextFence.currentFenceValue = value; - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); uint64_t completionValue = 0x12345679ull; wddmDirectSubmission.handleCompletionRingBuffer(completionValue, contextFence); @@ -229,8 +221,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenHandlingRingBufferCompletionThen HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferStartedThenExpectDispatchSwitchCommandsLinearStreamUpdated) { using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START; - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = wddmDirectSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -255,8 +246,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferStartedThenEx HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferNotStartedThenExpectNoSwitchCommandsLinearStreamUpdated) { using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START; - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = wddmDirectSubmission.initialize(false, false); EXPECT_TRUE(ret); @@ -282,8 +272,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferNotStartedThe HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenSwitchingRingBufferStartedAndWaitFenceUpdateThenExpectWaitCalled) { using RingBufferUse = typename MockWddmDirectSubmission>::RingBufferUse; using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START; - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); bool ret = wddmDirectSubmission.initialize(true, false); EXPECT_TRUE(ret); @@ -318,8 +307,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmWhenUpdatingTagValueThenExpectComple contextFence.gpuAddress = address; contextFence.currentFenceValue = value; - MockWddmDirectSubmission> wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission> wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); uint64_t actualTagValue = wddmDirectSubmission.updateTagValue(); EXPECT_EQ(value, actualTagValue); @@ -347,8 +335,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmResidencyEnabledWhenCreatingDestroyi EXPECT_EQ(0u, NEO::IoFunctions::mockFcloseCalled); std::unique_ptr> wddmSubmission = - std::make_unique>(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + std::make_unique>(*device->getDefaultEngine().commandStreamReceiver); EXPECT_EQ(1u, NEO::IoFunctions::mockFopenCalled); EXPECT_EQ(2u, NEO::IoFunctions::mockVfptrinfCalled); @@ -374,8 +361,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmResidencyEnabledWhenAllocatingResour NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockWddmDirectSubmission wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); wddm->callBaseMakeResident = true; wddm->createPagingFenceLogger(); @@ -405,8 +391,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmResidencyEnabledWhenHandleResidencyT NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockWddmDirectSubmission wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); wddm->createPagingFenceLogger(); EXPECT_EQ(1u, NEO::IoFunctions::mockFopenCalled); @@ -434,8 +419,7 @@ HWTEST_F(WddmDirectSubmissionTest, givenWddmResidencyEnabledWhenSubmitToGpuThenS NEO::IoFunctions::mockVfptrinfCalled = 0u; NEO::IoFunctions::mockFcloseCalled = 0u; - MockWddmDirectSubmission wddmDirectSubmission(*device.get(), - *osContext, device->getDefaultEngine().commandStreamReceiver->getGlobalFenceAllocation()); + MockWddmDirectSubmission wddmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver); wddm->createPagingFenceLogger(); EXPECT_EQ(1u, NEO::IoFunctions::mockFopenCalled); diff --git a/shared/test/unit_test/os_interface/windows/wddm_command_stream_l0_tests.cpp b/shared/test/unit_test/os_interface/windows/wddm_command_stream_l0_tests.cpp index 3b14101449..0e7ccbebbd 100644 --- a/shared/test/unit_test/os_interface/windows/wddm_command_stream_l0_tests.cpp +++ b/shared/test/unit_test/os_interface/windows/wddm_command_stream_l0_tests.cpp @@ -73,20 +73,20 @@ struct MockWddmCsrL0 : public WddmCommandStreamReceiver { recordedCommandBuffer = std::unique_ptr(new CommandBuffer(device)); } - bool initDirectSubmission(Device &device, OsContext &osContext) override { + bool initDirectSubmission() override { if (callParentInitDirectSubmission) { - return WddmCommandStreamReceiver::initDirectSubmission(device, osContext); + return WddmCommandStreamReceiver::initDirectSubmission(); } bool ret = true; if (DebugManager.flags.EnableDirectSubmission.get() == 1) { if (!initBlitterDirectSubmission) { directSubmission = std::make_unique< - MockWddmDirectSubmission>>(device, osContext, globalFenceAllocation); + MockWddmDirectSubmission>>(*this); ret = directSubmission->initialize(true, false); this->dispatchMode = DispatchMode::ImmediateDispatch; } else { blitterDirectSubmission = std::make_unique< - MockWddmDirectSubmission>>(device, osContext, globalFenceAllocation); + MockWddmDirectSubmission>>(*this); blitterDirectSubmission->initialize(true, false); } }