diff --git a/core/device/device.cpp b/core/device/device.cpp index 787d418280..8f0282383a 100644 --- a/core/device/device.cpp +++ b/core/device/device.cpp @@ -115,12 +115,17 @@ bool Device::createEngine(uint32_t deviceCsrIndex, aub_stream::EngineType engine if (!commandStreamReceiver) { return false; } + + bool internalUsage = (deviceCsrIndex == HwHelper::internalUsageEngineIndex); + if (internalUsage) { + engineType = defaultEngineType; + } + if (commandStreamReceiver->needsPageTableManager(engineType)) { commandStreamReceiver->createPageTableManager(); } bool lowPriority = (deviceCsrIndex == HwHelper::lowPriorityGpgpuEngineIndex); - bool internalUsage = (deviceCsrIndex == HwHelper::internalUsageEngineIndex); auto osContext = executionEnvironment->memoryManager->createAndRegisterOsContext(commandStreamReceiver.get(), engineType, getDeviceBitfield(), preemptionMode, lowPriority); commandStreamReceiver->setupContext(*osContext); diff --git a/unit_tests/device/device_tests.cpp b/unit_tests/device/device_tests.cpp index 3698a40349..1323e4ffea 100644 --- a/unit_tests/device/device_tests.cpp +++ b/unit_tests/device/device_tests.cpp @@ -337,3 +337,11 @@ TEST(DeviceGenEngineTest, givenHwCsrModeWhenGetEngineThenDedicatedForInternalUsa auto internalEngineIndex = HwHelper::internalUsageEngineIndex; EXPECT_EQ(internalEngineIndex, internalEngine.osContext->getContextId()); } + +TEST(DeviceGenEngineTest, whenCreateDeviceThenInternalEngineHasDefaultType) { + auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(nullptr)); + + auto internalEngineType = device->getInternalEngine().osContext->getEngineType(); + auto defaultEngineType = getChosenEngineType(device->getHardwareInfo()); + EXPECT_EQ(defaultEngineType, internalEngineType); +}