@@ -333,11 +333,17 @@ TEST(SubDevicesTest, givenDebugFlagSetAndSingleCcsWhenCreatingRootDeviceWithoutG
333333 EXPECT_FALSE (rootDevice->getDeviceById (0 )->isSubDevice ());
334334}
335335
336- TEST (SubDevicesTest, givenDebugFlagSetWhenCreatingRootDeviceWithGenericSubDevicesThenDontCreateEngineInstanced ) {
336+ TEST (SubDevicesTest, givenDebugFlagSetWhenCreatingRootDeviceWithGenericSubDevicesAndSingleCcsThenDontCreateEngineInstanced ) {
337337 DebugManagerStateRestore restorer;
338338 DebugManager.flags .EngineInstancedSubDevices .set (true );
339339
340- UltDeviceFactory deviceFactory (1 , 2 );
340+ auto executionEnvironment = new ExecutionEnvironment ();
341+ executionEnvironment->prepareRootDeviceEnvironments (1 );
342+
343+ executionEnvironment->rootDeviceEnvironments [0 ]->setHwInfo (defaultHwInfo.get ());
344+ executionEnvironment->rootDeviceEnvironments [0 ]->getMutableHardwareInfo ()->gtSystemInfo .CCSInfo .NumberOfCCSEnabled = 1 ;
345+
346+ UltDeviceFactory deviceFactory (1 , 2 , *executionEnvironment);
341347
342348 auto &rootDevice = deviceFactory.rootDevices [0 ];
343349
@@ -351,6 +357,44 @@ TEST(SubDevicesTest, givenDebugFlagSetWhenCreatingRootDeviceWithGenericSubDevice
351357 }
352358}
353359
360+ TEST (SubDevicesTest, givenDebugFlagSetWhenCreatingRootDeviceWithGenericSubDevicesThenCreateEngineInstanced) {
361+ DebugManagerStateRestore restorer;
362+ DebugManager.flags .EngineInstancedSubDevices .set (true );
363+
364+ uint32_t ccsCount = 2 ;
365+
366+ auto executionEnvironment = new ExecutionEnvironment ();
367+ executionEnvironment->prepareRootDeviceEnvironments (1 );
368+
369+ executionEnvironment->rootDeviceEnvironments [0 ]->setHwInfo (defaultHwInfo.get ());
370+ executionEnvironment->rootDeviceEnvironments [0 ]->getMutableHardwareInfo ()->gtSystemInfo .CCSInfo .NumberOfCCSEnabled = ccsCount;
371+
372+ UltDeviceFactory deviceFactory (1 , 2 , *executionEnvironment);
373+
374+ auto &rootDevice = deviceFactory.rootDevices [0 ];
375+
376+ for (uint32_t i = 0 ; i < 2 ; i++) {
377+ auto subDevice = static_cast <MockSubDevice *>(rootDevice->getDeviceById (i));
378+ ASSERT_NE (nullptr , subDevice);
379+
380+ EXPECT_FALSE (subDevice->engineInstanced );
381+ EXPECT_EQ (ccsCount, subDevice->getNumAvailableDevices ());
382+ EXPECT_EQ (aub_stream::EngineType::NUM_ENGINES, subDevice->engineType );
383+
384+ for (uint32_t j = 0 ; j < ccsCount; j++) {
385+ auto engineType = static_cast <aub_stream::EngineType>(aub_stream::EngineType::ENGINE_CCS + j);
386+ auto engineSubDevice = static_cast <MockSubDevice *>(subDevice->getDeviceById (j));
387+ ASSERT_NE (nullptr , engineSubDevice);
388+
389+ EXPECT_TRUE (engineSubDevice->engineInstanced );
390+ EXPECT_EQ (1u , engineSubDevice->getNumAvailableDevices ());
391+ EXPECT_EQ (engineType, engineSubDevice->engineType );
392+ EXPECT_EQ (subDevice->getSubDeviceIndex (), engineSubDevice->getSubDeviceIndex ());
393+ EXPECT_EQ (subDevice->getDeviceBitfield (), engineSubDevice->getDeviceBitfield ());
394+ }
395+ }
396+ }
397+
354398TEST (SubDevicesTest, whenInitializeRootCsrThenDirectSubmissionIsNotInitialized) {
355399 auto device = std::make_unique<MockDevice>();
356400 device->initializeRootCommandStreamReceiver ();
0 commit comments