#1952 closed defect (fixed)
Graphics card detection fails with NVIDIA Optimus on Windows
Reported by: | Evans | Owned by: | ben |
---|---|---|---|
Priority: | Must Have | Milestone: | Alpha 14 |
Component: | Core engine | Keywords: | crashlog |
Cc: | Jan Wassenberg | Patch: |
Description
I have both Intel Integrated Graphics as well as NVIDIA GT 630M on my laptop. With Integrapted Intel graphics the game works fine, but when I switch to the NVIDIA card, it crashes on startup.
Details: unhandled exception (Access violation reading 0x00000000)
Location: unknown:0 (?)
Call stack:
61007600
errno = 0 (No error reported here) OS error = 126 (The specified module could not be found.)
Attachments (3)
Change History (18)
by , 11 years ago
Attachment: | crashlog.txt added |
---|
by , 11 years ago
Attachment: | crashlog.dmp added |
---|
comment:1 by , 11 years ago
Cc: | added |
---|
comment:2 by , 11 years ago
Interesting that WMI calls the graphics driver directly, I would have thought they only do that once and cache the result. heh, we'd like to check for that particular card/driver combo, but that's exactly what's failing :P Could use the GL_RENDERER etc. to detect this case and avoid the WMI call and return less-specific information.
Does it help to completely disable your Intel card, not just enable the NVidia?
by , 11 years ago
Attachment: | graphics.jpg added |
---|
comment:3 by , 11 years ago
I don't really have an option to disable the Intel card. I can either set one of the cards to handle 3D rendering for all applications, or I can choose individually, per application. I tried disabling the Intel card in device manager, but that screws up the display on the entire OS. I have attached a screenshot of the NVIDA control panel.
comment:4 by , 11 years ago
Ooh, sounds like an unhealthy hybrid. I was thinking of disabling at the BIOS level - that's the only way to truly hide it from the OS. Do you have that possibility? Why use integrated graphics at all when a decent graphics card is there? (I suppose the answer is power usage, and hope you aren't actually roaming.)
follow-up: 7 comment:5 by , 11 years ago
The card being enabled per application is standard for NVIDIA Optimus cards. The card still uses integrated graphics to output the final image, so we can't ask people to disable the latter.
comment:6 by , 11 years ago
Definitely an unhealthy hybrid.. yikes. I guess we need to skip this code on Windows 8 (ideally only after consulting the other mechanisms in wgfx.cpp and finding both NVidia and Intel driver files). Alternatively, anyone up for reporting this to NVidia and/or MS? I really don't think this is our bug.
comment:7 by , 11 years ago
evans, since this is a Dell laptop, are you using the latest drivers from the Dell support site? If you enter your service tag there, it looks like the latest they offer are older than what you're currently using. Maybe there is some incompatibility with NVIDIA's generic drivers, if you're using those? You could try uninstalling your current NVIDIA+Intel drivers and installing the ones from Dell instead. It's a shot in the dark, but worth a try IMO.
Replying to zoot:
The card being enabled per application is standard for NVIDIA Optimus cards. It still uses integrated graphics to output the final image, so we can't ask people to disable the latter.
I still think it's worth looking in the BIOS for a setting to disable Optimus or something, so we can narrow down the problem.
follow-up: 9 comment:8 by , 11 years ago
This seems to be quite common in Dell laptops - Having both an Intel card as an NVIDIA card. Having just an NVIDIA card on a laptop might be a sever battery drain.
I checked again and there are no options in the BIOS to disable either Integrated graphics or the NVIDIA card.
I downloaded the older driver from the Dell website. It appears to be just a Dell application wrapper around an older version of the generic NVIDIA driver. The app simply extracts the driver and installs it. I will try reverting to it, but I don't think that will make a difference.
I have a question, though - When I choose "auto-select graphics processor" for the game, it is assigned Integrated graphics, and hence the game works. Shouldn't it be assigned the NVIDIA card, as the game is a 3D application?
comment:9 by , 11 years ago
Replying to evans:
I have a question, though - When I choose "auto-select graphics processor" for the game, it is assigned Integrated graphics, and hence the game works. Shouldn't it be assigned the NVIDIA card, as the game is a 3D application?
The criteria are described here: http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf I'm not sure if we currently do any of that.
comment:10 by , 11 years ago
I have the same problem on my laptop (ASUS). I have Nvidia GT 630m graphics card + Intel graphics 4000. I've had this problem with all recent nvidia drivers (can't remember if I experienced it with the previous series of drivers).
comment:11 by , 11 years ago
Priority: | Should Have → Must Have |
---|---|
Summary: | Game Crashes if NVIDIA Graphics Card is used → Graphics card detection fails with NVIDIA Optimus on Windows |
comment:12 by , 11 years ago
Seems we're not the only ones having this problem: https://devtalk.nvidia.com/default/topic/549225/opengl/bug-with-nvoptimusenablement-dword-export-in-320-18-and-320-49-drivers-/
The game works fine on Michael's new laptop which also has Nvidia Optimus (GT 730M) and Windows 8, but there's another crash report with a GT 610M and Windows 7 here. Also relevant: #998
I think the safest thing to do for now, as a workaround, is to disable the WMI based graphics query and only use GL_VENDOR
/GL_RENDERER
. If we use GL to detect Nvidia cards first, then it seems we've lost one advantage of the WMI approach (not needing GL to be init'd - does that ever matter?) I don't know about more or less specific info, but on my system GL provides almost identical vendor and card name.
comment:13 by , 11 years ago
WMI not needing OpenGL is relevant for other apps but not 0ad. Using GL info sounds fine!
Probably it's specific to Windows 8 and/or the drivers, looks like the latest NVIDIA drivers are being used. The crash occurs when we try to enumerate graphics cards.
Call stack: