diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index e9a5ebc822..c499192d4c 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -1152,7 +1152,7 @@ unsigned int Drm::bindDrmContext(uint32_t drmContextId, uint32_t deviceIndex, au for (auto engineIndex = 0u; engineIndex < engineCount; engineIndex++) { if (useVirtualEnginesForBcs && engine->engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy)) { - auto mappedBcsEngineType = this->getBcsTypeToBind(engineIndex, includeMainCopyEngineInGroup); + auto mappedBcsEngineType = static_cast(EngineHelpers::mapBcsIndexToEngineType(engineIndex, includeMainCopyEngineInGroup)); bool isBcsEnabled = rootDeviceEnvironment.getHardwareInfo()->featureTable.ftrBcsInfo.test(EngineHelpers::getBcsIndex(mappedBcsEngineType)); if (!isBcsEnabled) { @@ -1185,22 +1185,6 @@ unsigned int Drm::bindDrmContext(uint32_t drmContextId, uint32_t deviceIndex, au return retVal; } -constexpr std::array optimalBcsSequence = {aub_stream::ENGINE_BCS2, aub_stream::ENGINE_BCS3, - aub_stream::ENGINE_BCS4, aub_stream::ENGINE_BCS7, - aub_stream::ENGINE_BCS1, aub_stream::ENGINE_BCS5, - aub_stream::ENGINE_BCS6, aub_stream::ENGINE_BCS8}; - -aub_stream::EngineType Drm::getBcsTypeToBind(unsigned int engineIndex, bool includeMain) { - if (engineIndex == 0 && includeMain) { - return aub_stream::EngineType::ENGINE_BCS; - } else { - if (includeMain) { - engineIndex--; - } - return optimalBcsSequence[engineIndex]; - } -} - void Drm::waitForBind(uint32_t vmHandleId) { if (pagingFence[vmHandleId] >= fenceVal[vmHandleId]) { return; diff --git a/shared/source/os_interface/linux/drm_neo.h b/shared/source/os_interface/linux/drm_neo.h index 1331e4a4f3..e8499daff2 100644 --- a/shared/source/os_interface/linux/drm_neo.h +++ b/shared/source/os_interface/linux/drm_neo.h @@ -112,7 +112,6 @@ class Drm : public DriverModel { void setLowPriorityContextParam(uint32_t drmContextId); unsigned int bindDrmContext(uint32_t drmContextId, uint32_t deviceIndex, aub_stream::EngineType engineType, bool engineInstancedDevice); - aub_stream::EngineType getBcsTypeToBind(unsigned int engineIndex, bool includeMain); MOCKABLE_VIRTUAL int getErrno(); bool setQueueSliceCount(uint64_t sliceCount); diff --git a/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp index e5dcbb7932..9a05dcf5ed 100644 --- a/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp @@ -193,7 +193,7 @@ static void givenBcsEngineTypeWhenBindingDrmContextThenContextParamEngineIsSet(s EXPECT_EQ(numBcsSiblings, drm->receivedContextEnginesLoadBalance.num_siblings); for (auto balancedEngine = 0u; balancedEngine < numBcsSiblings; balancedEngine++) { EXPECT_EQ(I915_ENGINE_CLASS_COPY, drm->receivedContextEnginesLoadBalance.engines[balancedEngine].engine_class); - auto engineInstance = EngineHelpers::getBcsIndex(drm->getBcsTypeToBind(balancedEngine, engineIndex == 0)); + auto engineInstance = engineIndex ? balancedEngine + 1 : balancedEngine; EXPECT_EQ(engineInstance, DrmMockHelper::getIdFromEngineOrMemoryInstance(drm->receivedContextEnginesLoadBalance.engines[balancedEngine].engine_instance)); EXPECT_EQ(I915_ENGINE_CLASS_COPY, drm->receivedContextParamEngines.engines[1 + balancedEngine].engine_class); EXPECT_EQ(engineInstance, DrmMockHelper::getIdFromEngineOrMemoryInstance(drm->receivedContextParamEngines.engines[1 + balancedEngine].engine_instance)); diff --git a/shared/test/unit_test/os_interface/linux/drm_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_tests.cpp index 8561c9d5ce..1853c4fb8a 100644 --- a/shared/test/unit_test/os_interface/linux/drm_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_tests.cpp @@ -102,36 +102,6 @@ TEST(DrmTest, GivenInvalidPciPathWhenFrequencyIsQueriedThenReturnError) { EXPECT_EQ(0, maxFrequency); } -TEST(DrmTest, whenGetBcsTypeToBindThenReturnOptimalSequence) { - auto executionEnvironment = std::make_unique(); - executionEnvironment->prepareRootDeviceEnvironments(1); - DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]}; - - { - auto includeMain = false; - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS2, drm.getBcsTypeToBind(0, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS3, drm.getBcsTypeToBind(1, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS4, drm.getBcsTypeToBind(2, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS7, drm.getBcsTypeToBind(3, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS1, drm.getBcsTypeToBind(4, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS5, drm.getBcsTypeToBind(5, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS6, drm.getBcsTypeToBind(6, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS8, drm.getBcsTypeToBind(7, includeMain)); - } - { - auto includeMain = true; - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, drm.getBcsTypeToBind(0, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS2, drm.getBcsTypeToBind(1, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS3, drm.getBcsTypeToBind(2, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS4, drm.getBcsTypeToBind(3, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS7, drm.getBcsTypeToBind(4, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS1, drm.getBcsTypeToBind(5, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS5, drm.getBcsTypeToBind(6, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS6, drm.getBcsTypeToBind(7, includeMain)); - EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS8, drm.getBcsTypeToBind(8, includeMain)); - } -} - TEST(DrmTest, WhenGettingRevisionIdThenCorrectIdIsReturned) { auto executionEnvironment = std::make_unique(); executionEnvironment->prepareRootDeviceEnvironments(1);