leadedge / Spout2

A video frame sharing system for Microsoft Windows
BSD 2-Clause "Simplified" License
754 stars 138 forks source link

unable to select discrete nvidia gpu on optimus notebook #6

Closed ghost closed 8 years ago

ghost commented 9 years ago

i tried to select the nvidia gpu on an optimus notebook, no chance if i set the nvidia gpu as primary renderer, spout only shows the intel gpu

any chance to get this fixed?

leadedge commented 9 years ago

Selecting NVIDIA graphics with Optimus has been an ongoing problem. This is outside the control of the software and is a driver setting. First you have to set as global in the 3D settings, but older drivers had a bug and would not allow this. The latest driver has fixed it apparently. You can also try attaching a monitor to the NVIDIA connector if there is one and see if that affects it. Also make sure you are using the latest Spout version 2.003.

ghost commented 9 years ago

the solutions on the forums dont work on this machine, its a msi gs60, win10, gtx970m/intel combo there is no dedicated connector, video is routed internal no bios options to disable intel gpu..

possible solution is to make a vm dualboot, linux & kvm on the host and nvidia gpu via pcie-passthrough in a windows vm but i am not happy with this solution...

later i test various drivers and try to figure out where the problem is

leadedge commented 9 years ago

This is a major problem for many people even though the original driver bugs have been fixed. I have yet to find a solution.

I think there are "profiles" that can be set up for using NVIDIA on certain programs. I have not looked at this for a while but maybe this is something you can explore. I think you can do this in the code as well but I don't have a suitable test machine to work with.

Also Windows 10 and DirectX 12 is yet another thing I will need to explore. I looked at using a Virtual machine a while back to do this with Windows 8, but found that the video driver was "virtual" as well and it did not work.

ghost commented 9 years ago

setting the profiles in nvidia driver didnt help, spout only gives me the intel gpu my coding experience is very poor.. get it working is a good thing to learn

can i contact you via messenger/irc?

leadedge commented 9 years ago

Sorry I don't have that set up.

You can try a new forwarding email : spout@zeal.co

I just tested it and it seems to work OK.

leadedge commented 9 years ago

Also this is a good summary of the basics, so we don't need to cover that ground.

http://blogs.msdn.com/b/nativeconcurrency/archive/2012/07/16/c-amp-apps-on-optimus-notebooks.aspx

Also I have been investigating this and we are not alone!!

There seem to be some more settings you can apply using NVIDIA Inspector "SHIM_RENDERING_MODE_ENABLE"

http://us.battle.net/d3/en/forum/topic/13019342378 http://www.guru3d.com/files-details/nvidia-inspector-download.html

Just something to look at because I can't test it.

ghost commented 9 years ago

listing C++ AMP is correct, nv is showing is primary device with connected display i tried every SHIM mode aviable in nvinspector, no matter what setting results are the same, no matter which device is the primary

memory share fallback isnt working too, only with intel gpu

clean reinstalled various driver versions... no luck tested intel drivers 10.18.15.4256 (15.40.4), 10.18.10.4252 (15.33.38) and 10.18.15.4256 (15.40.1) nv drivers: 353.62, 353.30 and 352.84

deactivated everything except demo sender & reciever, after some tries i got it working with intel gpu trying to start a sender with nvidia isnt possible, sender crash immediately

i also tried to deactivate the intel gpu what ends in a software rasterizer & nvidia combo -> same problem

i can give remote access if it helps to identify the problem

ghost commented 9 years ago

i am sure its optimus&spout related, got it working on my desktop with single gpu (win10, gtx680)

tested games & demos on the optimus notebook , gpu selecting works fine, framerates are ok too, so the gfx is basically working

leadedge commented 9 years ago

Optimus activation of NVIDIA is all about executable programs. Some people have found success by simply renaming the executable to some game program that works. You could also try the other executables for Openframeworks and Cinder in the SpoutSDK examples, but I suspect they will be the same.

But what about the FFGL plugin within Resolume for example? Then there will be nothing in the Spout SDK that is influencing the Optimus graphics selection.

The same applies to the Processing examples, or the Winamp milkdrop plugin or the Max or VVVV patches? In all cases it is the executable program that will be controlling Optimus/NVIDIA.

Also what happens with RH click and "run with high performance NVIDIA"?

And is there a way to confirm that the executable is using NVIDIA graphics or not ?

So what I am saying is that even if I found a way to enable Optimus/NVIDIA with the Spout Demo programs, other plugins etc. are dependent on the host program.

Already the Spout demo programs use the NVIDIA whitepaper method of "Optimus enablement" export. I find that this actually does work with the machine I have to test with, but this is a very old ACER laptop.

I am still looking into this though, so I will see what I can find. This is definitely driver related, so if we can find a solution it will be a breakthrough.

ghost commented 9 years ago

i tried every plugin, cinder, vvvv, ofx, ffgl.... its the same as the sender/reciever demos, the spout senders demo crash upon start via nvidia, intel gfx only gave a sharedmem fallback

the thing what i need is synthclipse -> magic -> resolume synthclipse is crashing too on this notebook when staring a sender, but it works on non optimus desktop

e.g. tcpspout stops after some kb, trying to get spoutsender ffgl working in resolume results in an empty stream

i am sure things are executed on the gpu i select, some shaders get only 5fps on intel and up to 200fps on nv^^ so i am really sure that the right gpu is used, regardless of the fps, there is a led switching the color when nv gpu starts to working

after testing some other things on the optimus device i recognize that i it can only handle one shader at once via ffgl shaderloader/shadermaker, a second one results in an empty stream on non optimus devices i got up to 8 shaders loaded via ffgl shaderloader (dont know its the same issue or not)

i flashed the latest vbios and efi modules on mobo, clean reinstall chipset drivers and so on tomorow i`ll try an other windows version if my hackintosh setup boots on this notebook i test if syphon run into the same problems

i keep u updated as soon as possible (16h of pure angryness about optimus are enough today ;-)

leadedge commented 9 years ago

It has taken some time but here is a utility that is designed to force NVIDIA as the global device for Optimus.

I have developed this using a desktop machine and can only test it on an old laptop so it will be useful to know whether it works or not on a variety of systems.

https://drive.google.com/folderview?id=0B7S_Ch4lX2dYRWhfc19Qb3Zka28&usp=sharing

See some discussion at :

https://devtalk.nvidia.com/default/topic/865415/nvapi/force-nvidia-on-laptops/

I am working further with Optimus profiling for specific applications.

Cheers,

Lynn

leadedge commented 8 years ago

Setting NVIDIA as preferred processor now included in "SpoutDXmode".