dotnet / wpf

WPF is a .NET Core UI framework for building Windows desktop applications.
MIT License
6.91k stars 1.15k forks source link

WPF applications will prevent Nvidia Control Panel to change display modes #9286

Open ShiinaRinne opened 1 week ago

ShiinaRinne commented 1 week ago

Description

We have identified a recurring issue with applications developed using the WPF, which prevents the NVIDIA Control Panel from changing display modes on laptops. Specifically, when the WPF-based application (v2rayN) is running, the NVIDIA Control Panel fails to automatically switch between integrated and dedicated GPUs. This issue has been observed across multiple versions of the v2rayN application and various laptop models and configurations  Attempts to resolve this issue by modifying hardware acceleration settings in the WPF application have been failed. https://github.com/2dust/v2rayN/pull/3493/files#diff-96773009aed874ddc50e8da8fb0d2a82ba83e862fb01c323de31a8e573bbadfdR203

Reproduction Steps

  1. Set the display mode of the NVIDIA control panel to automatic on the laptop;
  2. Start v2rayN or other WPF software;
  3. Attempt to start a game or software that can normally switch display modes on the NVIDIA control panel;
  4. You will see a pop-up message in the bottom left corner saying "Unable to change display mode". Click this message to enter the NVIDIA control panel, and a pop-up window will appear saying "Application blocking display mode change". v2rayN will be listed in the window. image image

This is a minimal example of creating a WPF program without any modifications using Visual Studio https://github.com/2dust/v2rayN/issues/5255#issuecomment-2182387585

Expected behavior

It should not have any impact on the automatic switching feature of this display mode

Actual behavior

See a pop-up message in the bottom left corner saying "Unable to change display mode"

Regression?

No response

Known Workarounds

No response

Impact

Probably a laptop with an Nvidia graphics card and an integrated graphics card. Although my previous laptop also had this configuration (R7 5800H, RTX 3060), but there were no relevant settings in the Nvidia Control Panel and I couldn't test them

Configuration

Other information

Related issue: https://github.com/2dust/v2rayN/issues/5255 https://github.com/2dust/v2rayN/issues/3695 https://github.com/2dust/v2rayN/issues/2981 https://github.com/QL-Win/QuickLook/issues/1126 https://github.com/microsoft/PowerToys/issues/31825 https://github.com/microsoft/PowerToys/issues/27684 https://github.com/microsoft/PowerToys/issues/14677

Closing Blocking Programs NVIDIA Advanced Optimus Overview Steamwebhelper.exe blocking Advanced Optimus notebook display mode switch

lindexi commented 1 week ago

I think a better way to solve this problem is to connect NVIDIA for help. We can keep gathering some more information and collect more reports while we wait to connect NVIDIA for help.

Prakyy commented 1 week ago

image Does this change anything?

miloush commented 1 week ago

I think the second to last link states it pretty clearly:

  • The display will not switch to discrete GPU in the following scenarios -
    • The display will not switch to discrete GPU if the application in allow list is a DirectX9 application.
    • The display will not switch to discrete GPU if there is a DirectX9 application already running. ...
  • If any DX9 application is running and a display switch is triggered using the NV Control Panel 'display mode' settings page, the DX9 app could crash or freeze.
lindexi commented 6 days ago

@miloush Yeah, but maybe Nvidia can fix it. And I test the empty wpf application with software render also can repro this issues.