From e870643c41bbfcc8eb277687bfee4ffada70f699 Mon Sep 17 00:00:00 2001 From: Lukasz Jobczyk Date: Fri, 18 Mar 2022 14:59:16 +0000 Subject: [PATCH] Adapt direct submission controller to implicit scaling Signed-off-by: Lukasz Jobczyk --- .../direct_submission_controller.cpp | 4 +-- .../direct_submission_controller_tests.cpp | 31 ++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/shared/source/direct_submission/direct_submission_controller.cpp b/shared/source/direct_submission/direct_submission_controller.cpp index eda0f30569..0f2206b9c9 100644 --- a/shared/source/direct_submission/direct_submission_controller.cpp +++ b/shared/source/direct_submission/direct_submission_controller.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2021 Intel Corporation + * Copyright (C) 2019-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -78,7 +78,7 @@ void DirectSubmissionController::checkNewSubmissions() { auto &state = directSubmission.second; auto taskCount = csr->peekTaskCount(); - if (taskCount <= *csr->getTagAddress()) { + if (csr->testTaskCountReady(csr->getTagAddress(), taskCount)) { if (taskCount == state.taskCount) { if (state.isStopped) { continue; diff --git a/shared/test/unit_test/direct_submission/direct_submission_controller_tests.cpp b/shared/test/unit_test/direct_submission/direct_submission_controller_tests.cpp index 7a1252fdf7..ee7818d0f0 100644 --- a/shared/test/unit_test/direct_submission/direct_submission_controller_tests.cpp +++ b/shared/test/unit_test/direct_submission/direct_submission_controller_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2021 Intel Corporation + * Copyright (C) 2019-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -74,6 +74,35 @@ TEST(DirectSubmissionControllerTests, givenDirectSubmissionControllerWhenRegiste controller.unregisterDirectSubmission(&csr); } +TEST(DirectSubmissionControllerTests, givenDirectSubmissionWithMultiplePartitionsWhenCheckNewSubmissionThenCheckAllPartitions) { + MockExecutionEnvironment executionEnvironment; + executionEnvironment.prepareRootDeviceEnvironments(1); + executionEnvironment.initializeMemoryManager(); + + DeviceBitfield deviceBitfield(0b11); + MockCommandStreamReceiver csr(executionEnvironment, 0, deviceBitfield); + csr.postSyncWriteOffset = 32u; + csr.activePartitions = 2; + csr.initializeTagAllocation(); + *csr.tagAddress = 5u; + auto nextPartitionTagAddress = ptrOffset(csr.tagAddress, csr.getPostSyncWriteOffset()); + *nextPartitionTagAddress = 2u; + csr.taskCount.store(5u); + + DirectSubmissionControllerMock controller; + controller.keepControlling.store(false); + controller.directSubmissionControllingThread->join(); + controller.directSubmissionControllingThread.reset(); + controller.registerDirectSubmission(&csr); + + controller.checkNewSubmissions(); + + EXPECT_FALSE(controller.directSubmissions[&csr].isStopped); + EXPECT_EQ(controller.directSubmissions[&csr].taskCount, 0u); + + controller.unregisterDirectSubmission(&csr); +} + TEST(DirectSubmissionControllerTests, givenDirectSubmissionControllerWhenTimeoutThenDirectSubmissionsAreChecked) { MockExecutionEnvironment executionEnvironment; executionEnvironment.prepareRootDeviceEnvironments(1);