@@ -84,6 +84,46 @@ HWTEST2_F(CommandQueuePvcAndLaterTests, givenAdditionalBcsWhenCreatingCommandQue
8484 EXPECT_EQ (1u , queue->countBcsEngines ());
8585}
8686
87+ HWTEST2_F (CommandQueuePvcAndLaterTests, givenDeferCmdQBcsInitializationEnabledWhenCreateCommandQueueThenBcsCountIsZero, IsAtLeastXeHpcCore) {
88+ DebugManagerStateRestore restorer;
89+ DebugManager.flags .DeferCmdQBcsInitialization .set (1u );
90+
91+ HardwareInfo hwInfo = *defaultHwInfo;
92+ hwInfo.featureTable .ftrBcsInfo = maxNBitValue (9 );
93+ hwInfo.capabilityTable .blitterOperationsSupported = true ;
94+ MockDevice *device = MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo, 0 );
95+ MockClDevice clDevice{device};
96+ cl_device_id clDeviceId = static_cast <cl_device_id>(&clDevice);
97+ ClDeviceVector clDevices{&clDeviceId, 1u };
98+ cl_int retVal{};
99+ auto context = std::unique_ptr<Context>{Context::create<Context>(nullptr , clDevices, nullptr , nullptr , retVal)};
100+ EXPECT_EQ (CL_SUCCESS, retVal);
101+
102+ auto queue = std::make_unique<MockCommandQueue>(*context);
103+
104+ EXPECT_EQ (0u , queue->countBcsEngines ());
105+ }
106+
107+ HWTEST2_F (CommandQueuePvcAndLaterTests, givenDeferCmdQBcsInitializationDisabledWhenCreateCommandQueueThenBcsIsInitialized, IsAtLeastXeHpcCore) {
108+ DebugManagerStateRestore restorer;
109+ DebugManager.flags .DeferCmdQBcsInitialization .set (0u );
110+
111+ HardwareInfo hwInfo = *defaultHwInfo;
112+ hwInfo.featureTable .ftrBcsInfo = maxNBitValue (9 );
113+ hwInfo.capabilityTable .blitterOperationsSupported = true ;
114+ MockDevice *device = MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo, 0 );
115+ MockClDevice clDevice{device};
116+ cl_device_id clDeviceId = static_cast <cl_device_id>(&clDevice);
117+ ClDeviceVector clDevices{&clDeviceId, 1u };
118+ cl_int retVal{};
119+ auto context = std::unique_ptr<Context>{Context::create<Context>(nullptr , clDevices, nullptr , nullptr , retVal)};
120+ EXPECT_EQ (CL_SUCCESS, retVal);
121+
122+ auto queue = std::make_unique<MockCommandQueue>(*context);
123+
124+ EXPECT_NE (0u , queue->countBcsEngines ());
125+ }
126+
87127HWTEST2_F (CommandQueuePvcAndLaterTests, givenQueueWithMainBcsIsReleasedWhenNewQueueIsCreatedThenMainBcsCanBeUsedAgain, IsAtLeastXeHpcCore) {
88128 HardwareInfo hwInfo = *defaultHwInfo;
89129 hwInfo.featureTable .ftrBcsInfo = maxNBitValue (9 );
@@ -102,9 +142,9 @@ HWTEST2_F(CommandQueuePvcAndLaterTests, givenQueueWithMainBcsIsReleasedWhenNewQu
102142 auto queue4 = std::make_unique<MockCommandQueue>(*context);
103143
104144 EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS, queue1->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS)->getOsContext ().getEngineType ());
105- EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS1 , queue2->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1 )->getOsContext ().getEngineType ());
106- EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS2 , queue3->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS2 )->getOsContext ().getEngineType ());
107- EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS1 , queue4->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1 )->getOsContext ().getEngineType ());
145+ EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS2 , queue2->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS2 )->getOsContext ().getEngineType ());
146+ EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS1 , queue3->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1 )->getOsContext ().getEngineType ());
147+ EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS2 , queue4->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS2 )->getOsContext ().getEngineType ());
108148
109149 // Releasing main BCS. Next creation should be able to grab it
110150 queue1.reset ();
@@ -114,7 +154,7 @@ HWTEST2_F(CommandQueuePvcAndLaterTests, givenQueueWithMainBcsIsReleasedWhenNewQu
114154 // Releasing link BCS. Shouldn't change anything
115155 queue2.reset ();
116156 queue2 = std::make_unique<MockCommandQueue>(*context);
117- EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS2 , queue2->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS2 )->getOsContext ().getEngineType ());
157+ EXPECT_EQ (aub_stream::EngineType::ENGINE_BCS1 , queue2->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1 )->getOsContext ().getEngineType ());
118158}
119159
120160HWTEST2_F (CommandQueuePvcAndLaterTests, givenCooperativeEngineUsageHintAndCcsWhenCreatingCommandQueueThenCreateQueueWithCooperativeEngine, IsAtLeastXeHpcCore) {
@@ -491,10 +531,10 @@ HWTEST2_F(BcsCsrSelectionCommandQueueTests, givenMultipleEnginesInQueueWhenSelec
491531 aub_stream::ENGINE_BCS7,
492532 aub_stream::ENGINE_BCS8,
493533 });
494- EXPECT_EQ (queue->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1), &queue->selectCsrForBuiltinOperation (args));
495534 EXPECT_EQ (queue->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS2), &queue->selectCsrForBuiltinOperation (args));
496535 EXPECT_EQ (queue->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1), &queue->selectCsrForBuiltinOperation (args));
497536 EXPECT_EQ (queue->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS2), &queue->selectCsrForBuiltinOperation (args));
537+ EXPECT_EQ (queue->getBcsCommandStreamReceiver (aub_stream::ENGINE_BCS1), &queue->selectCsrForBuiltinOperation (args));
498538 }
499539}
500540
0 commit comments