godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.54k stars 21.08k forks source link

Blank Window when running with NVIDIA Optimus graphics due to Nahimic service #13208

Open jaykyburz opened 6 years ago

jaykyburz commented 6 years ago

Windows 10 Laptop. GTX 1060. 6GB - Driver 382.05 There is also an an intel graphics in there as well. (May be related)

Godot 3 Alpha 2

Issue description: When I have the editor open on my external second monitor and I launch the game (F5) I get a blank screen. If I drag the blank window down onto my primary monitor I can see the game as I should. If I then drag the window back to the external monitor, I can see the game as I should.

Also note: If I make my external monitor my "main display" using the windows display settings, the problem goes away and I cann't reproduce the issue on any monitor.

Also note: I am also experiencing the bug where sometimes the game is launched as an editor window instead of my game, and I get a black screen for that as well.

Steps to reproduce: Run a project from the editor on a secondary monitor on my laptop.

Calinou commented 6 years ago

Are you running Godot on the integrated Intel graphics, or on the dedicated NVIDIA GPU? By default, it will run on the integrated graphics unless forced by right-clicking the executable then selecting the dedicated GPU in the Run with graphics processor dropdown.

jaykyburz commented 6 years ago

In my Nvidia control panel I had it "auto selecting" in the Preferred Graphics Processor section.

It seems that its the Nvidia card that has the problem. When I forced it to used the integrated graphics the problem goes away.

amirea commented 6 years ago

Windows 10 desktop, GTX 1050 + GT440. On either of the 4 monitors I move the game window, it displays normally. I don't know how to make the window start by default on an arbitrary monitor, though.

jaykyburz commented 6 years ago

I find that the game window always starts on the same monitor as the editor is open on. Example, if the editor is maximised on monitor 2, the game will start there.

akien-mga commented 6 years ago

I find that the game window always starts on the same monitor as the editor is open on. Example, if the editor is maximised on monitor 2, the game will start there.

That can be configured in the editor settings.

amirea commented 6 years ago

OK. Tested starting on either of the two nVidia cards, on each monitor, I can't reproduce the issue. EDIT: also tested with each card owning the primary display (driver 385.41 for both cards).

ghost commented 5 years ago

Same problem with a slightly different config : Tested on Godot 3.0 and 3.1.Beta10

Desktop Computer OS : Windows 7 Professional GPU : NVidia GTX 970 (No integrated shipset)

Don't know if that can help ^^'

drewrotunno commented 4 years ago

just about the same issue on my laptop (one monitor). Right-click running with the integrated Intel graphics 620 (up to openGL 4.4) will let it run fine. but by default or forcing it to use the dedicated graphics card GeForce 940MX (upto openGL 4.6) gives a white screen for the project select box (pic 1). If I resize this box vertically, it will look okay (pic 2). Then the editor also starts blank, and has to resize to show anything, but then stays with a black border, and the window doesn't visually respond to clicks, full screen, F1/F2, anything. Only by resizing window larger, vertically or horizontally does it update. I can F2, then change size and it'll be the right screen. Hope this helps!

load resize

LethargicDeveloper commented 4 years ago

Same issue for me. Laptop hooked up to a secondary monitor.

Godot 3.2.1 Win10 Intel UHD Graphics 630 NVIDIA GeForce GTX 1070 with Max-Q

1) Load Godot (it loads on my laptop monitor) 2) Load the game file 3) F5 (run the game) Everything works fine

4) Close game 5) Drag the Godot editor to my secondary monitor 6) F5 (run the game) White screen the game doesn't load.

Calinou commented 4 years ago

@LethargicDeveloper Does it work if you force Godot to run on the integrated GPU or dedicated GPU?

LethargicDeveloper commented 4 years ago

@Calinou Nope. The only place I know to do that is the NVIDIA Control Panel. I've tried changing my Global Settings to both Integrated Graphics and High-performance NVIDIA processor with no apparent effect. I've also tried setting just the Godot program to both in the Program Settings Tab.

Tryptex00 commented 4 years ago

I'm having the same problem with an almost exact setup to jaykyburz, is this being worked on?

Calinou commented 4 years ago

@Gamegenorator As far as I know, nobody has found a solution to this bug yet.

Tryptex00 commented 4 years ago

@Calinou Sad to hear, thanks for letting me know.

AlexeyGrishin commented 4 years ago

I have same problem. Win10 GeForce GTX 1650 MaxQ. I've tried with both intergated graphics and nvidia one, it shows white window when run scene on second monitor.

AlexeyGrishin commented 4 years ago

My workaround is to run editor on second monitor and run scene on laptop's monitor. It is not so convenient, but at least I have editor and running scene on different monitors.

Saadies commented 3 years ago

I don't have exactly that issue but my second screen would always go black if I am in Godot, no matter if I am running my game or not. My problem was that I have GSync set up for windowed applications as well as full-screen in the nvidia settings. Once I switched to only apply GSync on fullscreen the problem went away, as well as the flickering I had.

rafaelgdp commented 2 years ago

I'm here to report that I'm also experiencing this issue on Godot 3.4.4 Mono stable version. My project is mostly written in C# now (I started out only using GDScript and slowly ported it to C#). This issue was annoying me because there were no compilation errors. When I move the Godot Editor to my main monitor, the game runs normally. If I run it on my secondary monitor, the spawned game window freezes with a white background. I'm on a Windows 11 laptop with an Nvidia GeForce RTX 3060 GPU.

darkconsole commented 2 years ago

yep having this on my 3060 too. no discreet, my internal intel is disabled in bios. additionally i cant get it to actually spawn ever on the 2nd screen even if i move it there, close it there, and click my desktop icon there. so i can't even just make it work on the 2nd screen to work.

no errors on the console or anything. just freezes up the play window until i mash x enough that it finally gets kilt by windows.

since i do not personally care, and the way i have my laptop sitting and 2nd screen setup at work, i just told windows to use the laptop screen as the "primary display" so that godot will go there, which is where i wanted it anyway since the laptop is turned such that others cant see what im doing on that screen. windows' multi-display handling even in 2022 is so bad anyway it really changes nothing about the experience of just using the pc lol.

tl;dr set the display you want to work on godot with as the primary display in windows and deal with having to use one screen for both editor and preview until the magic gets found.

darkconsole commented 2 years ago

follow up: if you use vscode you can use the godot-tools extension to work around this.

1) run godot editor itself onto the one screen it works on. if this is not the screen you want godot on, set that screen as primary in windows and try it again.

2) run and move vscode to the screen you actually want to type at.

3) when you want to actually run the game, do it from vscode. command palette, godot tools: run workspace as godot project aka "run the game" - when you do this, godot will pop up on its screen, not on top of vscode. i also set this to F5 in vscode just like it was in godot editor.

4) ???

5) profit.

its actually kind of nice, because vscode's output pane gets filled with the things from the CLI window, which appears to get around that other stupid crap where godot editor output pane decides not to show you all of your print() because you print()'d "too many times".

qaptoR commented 2 years ago

Posting to add this bug is present on my system: 3090, 10900K, Windows 10-64

editor opens fine on any monitor, running a scene/program on any other monitor other than whichever is set to be main causes white-screen freeze of that program/scene.

when it runs successfully on main monitor, the scene/program can be dragged around to any other monitor without issue.

dandeliondino commented 2 years ago

Posting to report the same issue here. If it's relevant, I am running Godot on a laptop with Nvidia Optimus but I disabled Optimus in the BIOS, so Godot has no choice but to run on the dedicated GPU (RTX 3080).

Windows 11 Godot 3.5

Thanks for the vscode workaround above, I will try that.

bobmagicii commented 2 years ago

For me the fix was to disable Nahamic services. I noticed with my 3D printing that Prusa Slicer poppped up a warning on launch...

paraphrasing here: "disable nahamic services, its injecting a dll into every app, and it is known to screw with Prusa Slicer on a second monitor."

This had me going "hmmmmmm"

Nahamic services, is some dumb stuff that comes on many "Gamer" and "High-End" computers. The main thing it does is render an overlay in games that "shows" you where sounds are coming from like a radar. The thing is, nobody actually uses it, because it never actually works, and on top of that Anti-Cheat things hate it as well. So they just inject this stuff for basically no reason these days. If you have Alienware software on your machine (non-Alienware stuff uses it now too, like Dell's G Series), you also likely have Nahamic crap being run and injected. Disabling it, you should lose pretty much zero features.

Start > Run > services.msc Stop the service. Then disable the service. image

After dealing with this, Godot (and a few other apps) stop being absolutely insane about the 2nd screen.

This does not negate that disabling Optimus may also be needed. But you should always disable Optimus it was such a bad implementation. Your gamer laptop only gets 1hr on battery anyway lol.

dandeliondino commented 2 years ago

Good call -- disabled Nahimic per your directions and now Godot is running/playing on the second monitor as expected. Really appreciate the quick reply and solution! I'd never heard of it before. Hope others find this as well.

And, yes, absolutely agree with disabling Optimus. The intel GPU on this laptop couldn't handle opening the start menu without stuttering.

Zireael07 commented 1 year ago

Is this documented somewhere?

mickeyordog commented 10 months ago

Having a similar problem, switching Godot to my other monitor seemed to solve it Edit: Never mind still having the same issue