diff --git a/shared/source/os_interface/windows/wddm/wddm.cpp b/shared/source/os_interface/windows/wddm/wddm.cpp index 7648bb110d..1503f55b5a 100644 --- a/shared/source/os_interface/windows/wddm/wddm.cpp +++ b/shared/source/os_interface/windows/wddm/wddm.cpp @@ -263,6 +263,9 @@ bool Wddm::queryAdapterInfo() { if (status == STATUS_SUCCESS) { memcpy_s(gtSystemInfo.get(), sizeof(GT_SYSTEM_INFO), &adapterInfo.SystemInfo, sizeof(GT_SYSTEM_INFO)); memcpy_s(gfxPlatform.get(), sizeof(PLATFORM_KMD), &adapterInfo.GfxPlatform, sizeof(PLATFORM_KMD)); + if (DebugManager.flags.ForceDeviceId.get() != "unk") { + gfxPlatform->usDeviceID = static_cast(std::stoi(DebugManager.flags.ForceDeviceId.get(), nullptr, 16)); + } SkuInfoReceiver::receiveFtrTableFromAdapterInfo(featureTable.get(), &adapterInfo); SkuInfoReceiver::receiveWaTableFromAdapterInfo(workaroundTable.get(), &adapterInfo); diff --git a/shared/test/unit_test/os_interface/windows/wddm20_tests.cpp b/shared/test/unit_test/os_interface/windows/wddm20_tests.cpp index 8a566ad780..b360405f79 100644 --- a/shared/test/unit_test/os_interface/windows/wddm20_tests.cpp +++ b/shared/test/unit_test/os_interface/windows/wddm20_tests.cpp @@ -1661,3 +1661,12 @@ TEST_F(WddmTestWithMockGdiDll, givenQueryAdapterInfoCallReturnsInvalidAdapterBDF EXPECT_EQ(pciBusInfo.pciDevice, PhysicalDevicePciBusInfo::invalidValue); EXPECT_EQ(pciBusInfo.pciFunction, PhysicalDevicePciBusInfo::invalidValue); } + +TEST_F(WddmTestWithMockGdiDll, givenForceDeviceIdWhenQueryAdapterInfoThenProperDeviceID) { + DebugManagerStateRestore restorer{}; + DebugManager.flags.ForceDeviceId.set("0x1234"); + + EXPECT_TRUE(wddm->queryAdapterInfo()); + uint16_t expectedDeviceId = 0x1234u; + EXPECT_EQ(expectedDeviceId, wddm->gfxPlatform->usDeviceID); +} \ No newline at end of file