fix: track registered CSR clients

In L0 its not possible to track objects relations. For example CmdList
may be removed before Event.
In such case, Event needs to safely skip unregister call, without
accessing CmdList/CmdQueue object.

Related-To: NEO-8884

Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz
2023-09-21 13:45:24 +00:00
committed by Compute-Runtime-Automation
parent ace5e67b51
commit 53f635e392
18 changed files with 127 additions and 77 deletions

View File

@@ -1254,11 +1254,12 @@ HWTEST_F(CommandQueueHwTest, givenRelaxedOrderingEnabledWhenCheckingIfAllowedByC
EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(0));
EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(1));
ultCsr.registerClient();
int client1, client2;
ultCsr.registerClient(&client1);
EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(0));
EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(1));
ultCsr.registerClient();
ultCsr.registerClient(&client2);
EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(0));
EXPECT_TRUE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(1));

View File

@@ -1138,8 +1138,9 @@ HWTEST2_F(RelaxedOrderingEnqueueKernelTests, givenEnqueueKernelWhenProgrammingDe
auto &ultCsr = pDevice->getUltCommandStreamReceiver<FamilyType>();
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(ultCsr);
ultCsr.directSubmission.reset(directSubmission);
ultCsr.registerClient();
ultCsr.registerClient();
int client1, client2;
ultCsr.registerClient(&client1);
ultCsr.registerClient(&client2);
MockCommandQueueHw<FamilyType> mockCmdQueueHw{context, pClDevice, nullptr};
@@ -1237,8 +1238,9 @@ HWTEST2_F(RelaxedOrderingEnqueueKernelTests, givenBarrierWithDependenciesWhenFlu
auto &ultCsr = pDevice->getUltCommandStreamReceiver<FamilyType>();
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(ultCsr);
ultCsr.directSubmission.reset(directSubmission);
ultCsr.registerClient();
ultCsr.registerClient();
int client1, client2;
ultCsr.registerClient(&client1);
ultCsr.registerClient(&client2);
MockCommandQueueHw<FamilyType> mockCmdQueueHw{context, pClDevice, nullptr};
@@ -1284,8 +1286,9 @@ HWTEST2_F(RelaxedOrderingEnqueueKernelTests, givenPipeControlForIoqDependencyRes
auto &ultCsr = pDevice->getUltCommandStreamReceiver<FamilyType>();
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(ultCsr);
ultCsr.directSubmission.reset(directSubmission);
ultCsr.registerClient();
ultCsr.registerClient();
int client1, client2;
ultCsr.registerClient(&client1);
ultCsr.registerClient(&client2);
MockKernelWithInternals mockKernel(*pClDevice);
@@ -1304,8 +1307,9 @@ HWTEST2_F(RelaxedOrderingEnqueueKernelTests, givenEnqueueWithPipeControlWhenSend
auto &ultCsr = pDevice->getUltCommandStreamReceiver<FamilyType>();
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(ultCsr);
ultCsr.directSubmission.reset(directSubmission);
ultCsr.registerClient();
ultCsr.registerClient();
int client1, client2;
ultCsr.registerClient(&client1);
ultCsr.registerClient(&client2);
ultCsr.recordFlusheBatchBuffer = true;