From 3c230f630290b0b24628d875a16b2a0e0dbd0a5e Mon Sep 17 00:00:00 2001 From: "Mrozek, Michal" Date: Thu, 22 Feb 2018 14:19:08 +0100 Subject: [PATCH] Align createContext & createDevice DisableGpuTimeout flags. - Make sure we program the same value for both calls. Change-Id: I11b26fb56e60fff8f379827f6f6424a387b005d3 --- runtime/os_interface/windows/wddm.cpp | 5 +++++ unit_tests/os_interface/windows/wddm_tests.cpp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/runtime/os_interface/windows/wddm.cpp b/runtime/os_interface/windows/wddm.cpp index 614dd77ee9..eecfd1282a 100644 --- a/runtime/os_interface/windows/wddm.cpp +++ b/runtime/os_interface/windows/wddm.cpp @@ -696,6 +696,11 @@ D3DKMT_HANDLE Wddm::createContext() { CreateContext.EngineAffinity = 0; CreateContext.Flags.NullRendering = (UINT)DebugManager.flags.EnableNullHardware.get(); + + if (preemptionMode >= PreemptionMode::MidBatch) { + CreateContext.Flags.DisableGpuTimeout = readEnablePreemptionRegKey(); + } + CreateContext.PrivateDriverDataSize = sizeof(PrivateData); CreateContext.NodeOrdinal = node; CreateContext.pPrivateDriverData = &PrivateData; diff --git a/unit_tests/os_interface/windows/wddm_tests.cpp b/unit_tests/os_interface/windows/wddm_tests.cpp index 149b836243..09f13e034c 100644 --- a/unit_tests/os_interface/windows/wddm_tests.cpp +++ b/unit_tests/os_interface/windows/wddm_tests.cpp @@ -613,6 +613,7 @@ HWTEST_F(WddmPreemptionTests, givenDevicePreemptionEnabledDebugFlagDontForceWhen unsigned int expectedVal = 1u; createAndInitWddm(1u); EXPECT_EQ(expectedVal, getMockCreateDeviceParamsFcn().Flags.DisableGpuTimeout); + EXPECT_EQ(expectedVal, getCreateContextDataFcn()->Flags.DisableGpuTimeout); } HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagDontForceWhenPreemptionRegKeySetThenSetGpuTimeoutFlagOff) { @@ -621,6 +622,7 @@ HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagDontForceWhe unsigned int expectedVal = 0u; createAndInitWddm(1u); EXPECT_EQ(expectedVal, getMockCreateDeviceParamsFcn().Flags.DisableGpuTimeout); + EXPECT_EQ(expectedVal, getCreateContextDataFcn()->Flags.DisableGpuTimeout); } HWTEST_F(WddmPreemptionTests, givenDevicePreemptionEnabledDebugFlagDontForceWhenPreemptionRegKeyNotSetThenSetGpuTimeoutFlagOff) { @@ -629,6 +631,7 @@ HWTEST_F(WddmPreemptionTests, givenDevicePreemptionEnabledDebugFlagDontForceWhen unsigned int expectedVal = 0u; createAndInitWddm(0u); EXPECT_EQ(expectedVal, getMockCreateDeviceParamsFcn().Flags.DisableGpuTimeout); + EXPECT_EQ(expectedVal, getCreateContextDataFcn()->Flags.DisableGpuTimeout); } HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagDontForceWhenPreemptionRegKeyNotSetThenSetGpuTimeoutFlagOff) { @@ -637,6 +640,7 @@ HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagDontForceWhe unsigned int expectedVal = 0u; createAndInitWddm(0u); EXPECT_EQ(expectedVal, getMockCreateDeviceParamsFcn().Flags.DisableGpuTimeout); + EXPECT_EQ(expectedVal, getCreateContextDataFcn()->Flags.DisableGpuTimeout); } HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagForcePreemptionWhenPreemptionRegKeySetThenSetGpuTimeoutFlagOn) { @@ -645,6 +649,7 @@ HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagForcePreempt unsigned int expectedVal = 1u; createAndInitWddm(1u); EXPECT_EQ(expectedVal, getMockCreateDeviceParamsFcn().Flags.DisableGpuTimeout); + EXPECT_EQ(expectedVal, getCreateContextDataFcn()->Flags.DisableGpuTimeout); } HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagForcePreemptionWhenPreemptionRegKeyNotSetThenSetGpuTimeoutFlagOff) { @@ -653,6 +658,7 @@ HWTEST_F(WddmPreemptionTests, givenDevicePreemptionDisabledDebugFlagForcePreempt unsigned int expectedVal = 0u; createAndInitWddm(0u); EXPECT_EQ(expectedVal, getMockCreateDeviceParamsFcn().Flags.DisableGpuTimeout); + EXPECT_EQ(expectedVal, getCreateContextDataFcn()->Flags.DisableGpuTimeout); } HWTEST_F(WddmWithMockGdiTest, makeResidentMultipleHandles) {