mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 22:12:59 +08:00
Allow to push all dependency types to CsrDependencies helper
Change-Id: I0ef5dd0f77ade7f02a03c787618d55a4fcfba17c Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com> Related-To: NEO-3020
This commit is contained in:
committed by
sys_ocldev
parent
875c9b7dcc
commit
cf78aab248
@@ -29,8 +29,11 @@ void CsrDependencies::fillFromEventsRequestAndMakeResident(const EventsRequest &
|
||||
|
||||
timestampPacketContainer->makeResident(currentCsr);
|
||||
auto sameCsr = (&event->getCommandQueue()->getCommandStreamReceiver() == ¤tCsr);
|
||||
bool pushDependency = (DependenciesType::OnCsr == depsType && sameCsr) ||
|
||||
(DependenciesType::OutOfCsr == depsType && !sameCsr) ||
|
||||
(DependenciesType::All == depsType);
|
||||
|
||||
if (depsType == (sameCsr ? DependenciesType::OnCsr : DependenciesType::OutOfCsr)) {
|
||||
if (pushDependency) {
|
||||
this->push_back(timestampPacketContainer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,8 @@ class CsrDependencies : public StackVec<TimestampPacketContainer *, 32> {
|
||||
public:
|
||||
enum class DependenciesType {
|
||||
OnCsr,
|
||||
OutOfCsr
|
||||
OutOfCsr,
|
||||
All
|
||||
};
|
||||
|
||||
void fillFromEventsRequestAndMakeResident(const EventsRequest &eventsRequest,
|
||||
|
||||
@@ -636,6 +636,36 @@ HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingThe
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenAllDependencyTypesModeWhenFillingFromDifferentCsrsThenPushEverything) {
|
||||
auto device2 = std::unique_ptr<MockDevice>(Device::create<MockDevice>(executionEnvironment, 1u));
|
||||
|
||||
auto &csr1 = device->getUltCommandStreamReceiver<FamilyType>();
|
||||
auto &csr2 = device2->getUltCommandStreamReceiver<FamilyType>();
|
||||
csr1.timestampPacketWriteEnabled = true;
|
||||
csr2.timestampPacketWriteEnabled = true;
|
||||
|
||||
MockContext context2(device2.get());
|
||||
|
||||
auto cmdQ1 = std::make_unique<MockCommandQueueHw<FamilyType>>(context, device.get(), nullptr);
|
||||
auto cmdQ2 = std::make_unique<MockCommandQueueHw<FamilyType>>(&context2, device2.get(), nullptr);
|
||||
|
||||
const cl_uint eventsOnWaitlist = 2;
|
||||
MockTimestampPacketContainer timestamp1(*csr1.getTimestampPacketAllocator(), 1);
|
||||
MockTimestampPacketContainer timestamp2(*csr2.getTimestampPacketAllocator(), 1);
|
||||
|
||||
Event event1(cmdQ1.get(), 0, 0, 0);
|
||||
event1.addTimestampPacketNodes(timestamp1);
|
||||
Event event2(cmdQ2.get(), 0, 0, 0);
|
||||
event2.addTimestampPacketNodes(timestamp2);
|
||||
|
||||
cl_event waitlist[] = {&event1, &event2};
|
||||
EventsRequest eventsRequest(eventsOnWaitlist, waitlist, nullptr);
|
||||
|
||||
CsrDependencies csrDependencies;
|
||||
csrDependencies.fillFromEventsRequestAndMakeResident(eventsRequest, csr1, CsrDependencies::DependenciesType::All);
|
||||
EXPECT_EQ(static_cast<size_t>(eventsOnWaitlist), csrDependencies.size());
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledOnDifferentCSRsFromOneDeviceWhenEnqueueingThenProgramSemaphoresOnCsrStream) {
|
||||
using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
|
||||
using MI_ATOMIC = typename FamilyType::MI_ATOMIC;
|
||||
|
||||
Reference in New Issue
Block a user