Optimus and V4 behaving differently on different OS versions (Win 7, Win 8.1)

Hi,

I’m sorry to keep stressing the dreadful optimus-topic, but I think we, the users of V4, would deserve at least a proper comment from the devvvv’s on this. And I’m not talking “search the forums…” which would not lead to any solution at all!

Optimus has been around for a while now and serious issues have been reported by v4 users over and over again since2011, which steadily have been ignored (or at least uncommented) by the devvv’s. Again, I’m sorry to stress this, but it is a real issue for me and very likely for many other V4 users as well. I need a fast, good working laptop running with V4 for work and I’m proudly generating license money with it. Since Optimus is standard in almost all current (non apple) laptops today, we will need a solution, or at least a roadmap for this issue at some point.

Other threads, dealing with this topic, have been closed, marked as solved or changed the topic somehow, so I’m starting all over with a clean thread in the alpha forums, as I’ve been testing with the latest alpha version (8d797aeb4b) here. The current beta (31.2) is not working with Windows 8.1, which is important for this issue described here, so I hope the alpha forums is the best location for this.

Now, this is what I’ve experienced on my (Optimus equipped) Dell XPS 15 9530, trying to get V4 to run on different OS (Windows 7 and Windows 8.1).
There have been other issues with V4 and the high DPi screen and Windows 8.1 earlier. But I assume the following issues can directly be traced back to Nvidia Optimus.

System 1: Windows 7 Pro, 64 bit, screen resolution on 1920x1080 / scale on 100%. Latest graphics drivers. Classic Windows Theme. NVidia Settings set to “globally use the discreet graphics card” or slect the discreet graphics card to use with V4.

Opening a simple patch with one DX9 Renderer will work as expected. Renderer will display it’s content in Windowed and Fullscreen mode. Adding a second DX9 Renderer will scramble the content of both renderers (repeated freezing and display glitches). Now, switching the windows theme to “Aero” will even solve this issue. Tataa!

The only remaining issue now is: using two renderers on one screen will considerably bring down the framerate, even if one of the renderers doesn’t render anything. Monitoring the Optimus test tool shows that the discreet graphics card is active at all times which means the onboard graphics card is not being used by the system. (This refutes the theory that the system frame rate is being dragged down by the slower graphics card)
For some reason I keep thinking the framerate issue is linked to what has been reported here: forum-alpha/framerate-issue-when-open-renderer-is-out-of-view

When forcing the system to use the onboard graphic chip instead of the discreet graphics card, non of these issues occur, apart from having very bad graphics performance. So this obviously can not be counted as a solution.

System 2: same hardware but Windows 8.1 Pro, 64 bit, screen resolution on 1920x1080 / scale on 100%. Latest graphics drivers. NVidia Settings set to “globally use the discreet graphics card” or slect the discreet graphics card to use with V4.

Opening a simple patch with one renderer in windowed mode and alpha 31.7-8d797aeb4b will leave the Renderer pitch black. Setting the renderer to fullscreen on the integrated display will bring back it’s content (hey, at least fullscreen works now, haha).
Switching the system to globally use the “weak” onboard graphics will bring back the content of the renderer, but again, not a viable solution for patching.

At this point I didn’t start testing with multiple screens, because I don’t have any at hand atm. Will add further findings here soon.

Conclusion:
Seeing the different behaviours of V4 on the same system with different operating systems leads me to believe that the V4 infamous Optimus-Gate is a fixable issue within V4.

May I please ask the devvvv’s for a comment what we can expect to happen on this topic in the future.

the reason for no comments on this issue is that we don’t have a single clue about it. from what we know about dx9 and have looked for regarding optimus+dx9 we don’t see anything we could do about it. also we’ve never had such a system in our hands to debug so i can only pose questions:

  • i got the impression from reading stuff about optimus that it can be entirely disabled in the bios? is this not true? or only true for certain manufacturers?
  • can someone with the problem on win7 with the dx9-sdk installed run in debug mode (with all error-reporting on) and see what the event console reports?
  • there’ve been multiple complaints about this over the years. did everyone with the problem just sell their laptops again or just stopped using vvvv? or does it just work as advertised for some when they set the discreet graphic to be used for vvvv and it only fails for others?

anyone?

Ok, that’s a good start.

Regarding the missing system to debug: Honestly, it’s not that Optimus equipped systems are rare or hard to find tech-curiosities. As I said, it’s virtually every non-apple laptop produced after 2012. Even if non-apple laptops become rarer and rarer lately, they are out there. ;)

I also read about this but it seems this only was an option on early systems around 2011-12. My late 2013 Dell doesn’t have any bios options for optimus or graphics card related settings.

However there is an NVIDIA control panel, allowing to globally choose between discreet graphics card, onbord graphics or assign the use of graphics cards to specific programs.

With the help of the Optimus Test Tool it’s possible to test if the selected settings are working correctly and which graphics card is currently active.

The point is: On Windows 7, with Aero-Theme ON and discreet graphics selected globally or individually for V4, V4 is almost working as advertised. Renderers display their content, multiple renderers on one screen work. All is fine, even with optimus.

Seeing V4 working on Windows 7 and renderers staying black on Windows 8.1 (on the same hardware) I believe V4 and Optimus is not so unfixable. That’s why I opened this thread.

Judging from the last two node festivals, I believe a very high percentage of V4 users are using apple laptops and bootcamp, thus are not bothered with Optimus issues. And as V4 wasn’t/isn’t too good friends with anything other than Windows 7, I believe that the remaining users have been sticking with Windows 7.

Unfortunately Windows 7 is not a reasonable option for many newer laptops as drivers for new hardware components are missing. etc.

Well to be fair every new Laptop equiped with Nvidia Graphics. The big majority of non-Apple Laptops is only equipped with an Intel HD Graphics instead of both. Which have become quite powerfull aswell in the past years.

A rather simple solution to the Optimus problem is to simply wipe your system and install a “normal” Windows, not the OEM one that came with your Laptop.
It’s a driver thing and only works with the according driver. Installing a fresh windows and only installing the standard Nvidia driver should get rid of the issue, can also disable the Intel GPU in the device manager to be sure that only one gpu is active.
That you have issues in Windows 8 that you don’t have in Windows 7 is something I wouldn’t blame VVVV for, sounds more like diffrences in the driver. There is a diffrent driver model in Windows 8 so its not the exact same driver as in Windows 7. Optimus was always supported badly, hasn’t worked in Linux for years. Wouldn’t be suprised if they haven’t added the 100% full support in Windows 8 yet aswell, which may produce weird issues like that.

To support Optimus as an application you need to tell the driver that you are a high performance application and need to use the Nvidia GPU. No idea how that is done exactly but well thats what has to happen, there is some sort of “high performance” flag in the Win32 API that application can set to let Windows also run in a more precise timing, maybe thats what has to be set for Optimus to work correctly aswell.

Crysis 3 fell into that pit, not because of Optimus but it didn’t tell Windows to go into “peformance mode” and utilize the “higher precision timer” and had huge performance drops because of that. Afaik that gets handled by DX automatically if you are in fullscreen but there are cases where this doesn’t happen. F.e. VVVV only sets Windows to the higher precision timer when in fullscreen but not in window mode.

fair enough you say you don’t know how it is done exactly, but do you at least have some link to a website where you got this information from?

No official information sorry, just a thing I read in several forum threads since Optimus was introduced.
Though this shouldn’t be needed to be implented in VVVV as its the same thing as enforcing this in the driver which zepi is doing already.
It would just be a way to trigger the automatic detection of the driver.

E: http://www.lucashale.com/timer-resolution/
A great tool to force windows to use the higher timer resolution. Also tells you the current resolution.
If you have a fresh windows install you can niceley see how the resolution changes when going into fullscreen with the renderer. Though many apps already increase the timer resolution, on my system with all usual apps running its usually already at 1ms (can be increased to 0.5ms with this tool though).

@ Timonski:
I appreciate your comments here, but are you actually using an optimus equipped system?
In fact the things you suggest, are the first thing popping into my mind when running into issues as described.

Please rest assured that I’ve whiped, changed and reinstalled the OS of this machine several times. I spent time on the phone with Dell’s tech-support, harassing them to explain the internals of my system and even pushed vivid conversations with tech support from NVidia. Obviously I’ve tried to deinstall the drivers for the on-board graphics chip, I seriously messed with drivers (exactly monitoring what version installing) and I possibly read every existing thread about optimus written since 2010.

Optimus, as I understand, is NOT a “driver thing”. It’s manifested in the hardware. That’s also why there are no options in bios on current models. It’s only purpose seems quite simple: It switches between the on-board graphics chip and the discreet graphics card in order to optimize the power consumption of the system.
Very much like in V4’s very own switch, there is either A or B. This means, discreet graphics is either on or off. There is no mixed use of graphics cards like, the internal screen uses the onboard graphics and the external screen uses the discreet graphics. It’s just on / off, or rather integrated / discreet graphics
(The state of this can be monitored with the help of optimus test tool)

In order to force the system to just use the discreet graphics, it’s enough to just globally select the discreet graphics in the Nvidia settings. It does the same thing the ol’ bios flag does, it just got a little more comfortable.

Now, regarding the drivers:
I’ve tested exactly the same graphic drivers with the same hardware on two different OS versions. The result is V4’s DX9 renderers work on Windows 7 and stay black on Windows 8.1. I’m not blaming V4 ;) I just try to contribute getting the latest version of our favorite toolkit working on Windows 8.1 with contemporary hardware. :) I’ve got the feeling that we are almost there, because I’m seeing V4 working on Windows 7 which could mean that it’s very likely a solvable software issue.

sorry, but I kind of lost you there…

Well the driver packages include diffrent versions, its not a completely global driver. Atleast it wasn’t the last time I unpacked the installer manually.

I dont own an optimus system, just know a few friends who had that issue, installing a plain windows was a solution back then. So there must have been a change in how Optimus is setup. This is 100% a software thing though they might have integrated it more deeply now so you can’t get rid of it anymore.

I was just wandering of with the high precision timer thing, it wont be a solution to your issue.

well, the high-perf thing is already dealt with, see: https://discourse.vvvv.org/
but i doubt it is in any way related to the issue at hand.

yes, that’s what I thought.

Maybe there is some test I can run on my system to see why V4’s Dx9 renderer stays black?

i went through similar procedures like zepi with a dell laptop.
my conclusions:

-you can not deactivate optimus via bios
-you can not mess with drivers i.e. get rid of intel gpu and just use nvidia - results in black screen, no windows desktop
-it looks as if the intel gpu is primary and might just display images coming from the nvidia gpu (on a hardware level)
-no optimus laptops i.e. macbooks have problems running vvvv on win8.1 too - fullscreen issue etc. see forum, might be a mix of problems

and yes, like zepi guessed, i avoid optimus and win8 althogether and will never touch optimus again.

  • you can not deactivate optimus via bios

confirmed.

  • you can not mess with drivers i.e. get rid of intel gpu and just use nvidia - results in black screen, no windows desktop

confirmed.

  • it looks as if the intel gpu is primary and might just display images coming from the nvidia gpu (on a hardware level)

Interesting theory. From Nvidia I heard that Optimus is just switching. But that kind of conflicts with the fact that the discreet graphics card can be removed from the system while you can not do that with the the on-board card.

  • no optimus laptops i.e. macbooks have problems running vvvv on win8.1 too - fullscreen issue etc. see forum, might be a mix of problems

confirmed! :((
I think the primary purpose of this thread shall remain to find out why the renderer simply stays black on optimus hardware with the current alpha version + Windows8.1 and the discreet graphics card enabled.

Would it make sense to move a shout into the beta forums to get more audience collecting infos about optimus habbits of the fellow v4 community?

@u7 can you please elaborate on that one (in a new alpha-thread). we are not aware of any such at the moment with the latest alphas.

@z
as mentioned above on win7 you could

  • install the dx9 sdk and via its settings switch from “retail” to “debug” on the direct3d tab. there also move to error-threshold slider to 1 minus the max.
  • then get DbgView and just run it
  • start vvvv and do what you have to do to get into your troubles.
  • pray that DbgView then reveals some meaningful dx9 error message.

@ joreg: I understand this procedure requires Windows 7 and wouldn’t work on windows 8 or 8.1, right?
important question, because in fact my troubles are that the DX9 renderer stays black on Windows 8.1 with the latest alpha which it doesn’t do on Windows 7.

yes, works only on win7. from your initial posting i gather there is also an issue on win7 (slowing down with multiple renderers). so if there is a message at all that could still be a hint for further problems.

@joreg: I’d need to weirdly downgrade my system from Windows 8.1 to Windows 7, which takes a while and leaves my system working about 65% because of lacking the nessecary drivers.

Plus I think we both mentioned suspicion that the framerate issue might not be linked to Optimus.

Ok, again, is there any chance to get one of the honorable V4-devs (in the near future) to start up everybody’s favorite toolkit, VVVV, on an Optimus laptop (ideally with Windows 8.1) and check what’s going on?

In case you intend to continue not supporting Optimus hardware, I’d suggest to include this in the system recommendations .

fair enough, added a disclaimer: system recommendations until we get a troublemaker in our hands…

You can have my laptop, windows 7 installed, though

As a hands up, I also have win8 with nvidia/opitmus, and dx9 is black windowed, and fine in fullscreen (only tested on system screen as I have no other monitors with me)
Dx11 is fine, and luckily is where I’m mostly developing in now