Site Tools


Display Troubleshooting: Rhino 6

These instructions are for computers that have NVIDIA graphics hardware.

I'll first address the RDP issue… Windows does not use any GPU when using RDP, it's all done via software and virtualization. There are some NVidia drivers that you can install (if your card is supported), where the discreet GPU can be used by the host during RDP, but for the most part it's not easily done. Certain configurations can be made to get this working, but it's not something Rhino can do… Rhino does not “choose” its GPU, Windows does, and it does so by loading a specific driver into the Rhino's process space when Rhino is started. Which driver gets loaded all depends on how the system is configured. I would do a search on something like “Enable GPU rendering for Remote Desktop”, and see what you get. I believe there are certain group policies that can be made to get this to work, although I've never tried doing it myself.

That being said, let's address your Hybrid Graphics issues…But first a little/lot of background and terminology…

As I mentioned, Rhino (or any app) does not choose its GPU, it simply starts up and gets what is given to it by the OS. Which driver the OS chooses can be based on many factors…but the #1 factor is which Monitor is configured as the “Main Display”. Note: I said Monitor not GPU. GPUs are attached to monitors, and monitors are what get configured in Windows as “display devices”. So whichever monitor is configured as the “Main Display”, also determines which GPU will be used… hope that makes sense. You can have a computer with 8 different GPUs, attached to 8 different monitors… but starting up an application like Rhino, you will still only ever get one GPU being used, and only one driver getting loaded…and the one that is used, is again, the one that's attached to the monitor configured as the Main Display, regardless of which monitor the application starts up on or is moved to… If you think about it, there is no way Windows can use more than one GPU for a given application…take the simple example of an application's main window spanning across multiple monitors… The GPUs attached to those monitors are not responsible for rendering only the portions of the application that occupy the monitors, that would be impossible. Instead, a single GPU is used by the application, and when the OS finally starts moving the results to the glass, only then can it start moving the appropriate bits through the appropriate GPUs. The exception to this rule is with laptops that have a Hybrid Graphics configuration… Hybrid Graphics does NOT mean “multiple GPUs”, it means a “single display device being controlled by more than one GPU”. This hybrid configuration currently only exists in laptop computers…any other computer that has more than one GPU is simply a computer that has more than one GPU, that's it, there's no special processing going on. So given a hybrid system, it means that one of two GPUs can be used by an application, but keep in mind there is still only ONE Main Display device. The Intel GPU is by default, bound to the laptop display, therefore, the Intel GPU will always be considered the “Main Display” device. Where things start to get confusing is when a given application wants to use the other GPU. Again, this is not determined by the application, but rather, configuration settings on the system that the OS uses when launching said application. Intel and Microsoft have categorized these two GPUs as “Power Saving” and “High Performance” GPUs. Rhino categorizes them as “Primary Display device” and “Primary OpenGL Device”. The “Primary Display” device is the one that is physically attached to a monitor, and the “Primary OpenGL” device is the one that Rhino will use when rendering 3D/2D/All graphics. And again, the only way those two things can be different, is in a Hybrid Graphics system…in all other cases, the Primary Display device and the Primary OpenGL device are always going to be the same device.

By default, Windows is supposed to choose the “better” card when launching an application, but as I mentioned, there are other factors that can be involved. Since laptops are involved, it means you can have very low power situations, which can force Windows into choosing the “power saving” GPU (Intel), regardless of what the “default” action is supposed to be. You can also have situations where external monitor port devices, docking stations, or USB-to-HDMI port splitting devices are used, which can confuse Windows about which device is actually the “Main Display” device…remember, which ever device Windows thinks is the Main Display device, that's the one it's going to attempt loading drivers for.

Sorry for the long winded background…but I hope it was/is useful information.

So given all of that, if you look at your Laptop-72, you will see that the Main Display (Rhino calls it the Primary Display) turns out to be the USB DisplayLink device, which just splits the main display into several… This can confuse Windows sometimes (not always), and we have yet been able to figure out why it works in some cases but not others if/when the USB DisplayLink device is listed as the Primary Display device. Sometimes simply unplugging it from the laptop and plugging back in causes Windows to reconfigure and get things right… I'd be curious what Rhino sees if/when you unplug everything and only use the laptop's display. What does it list as the Primary Display and Primary OpenGL devices in that case? Note: Start Rhino only after you unplug everything. Also, are you plugging in the USB DisplayLink once Rhino has started or before? Are you closing the lid on the laptop once the USB device is plugged in? All of these situations cause Windows to create a completely different Hardware Profile, which can in turn confuse Windows into loading the wrong thing. Also, you can try this:

Turn on the laptop Plug in the USB DisplayLink device (do NOT start Rhino yet) Right-click on the desktop and select “Display settings…” You should see a dialog depicting the multiple displays plugged in, including one for the laptop's monitor. Click on the image that represents the laptop's monitor and scroll down the dialog looking for a checkbox called “Make this my main display”. Make sure that checkbox is CHECKed. (see image “MainDisplayUI.jpg”)

Now start Rhino and see what happens…run SystemInfo and see what Rhino thinks the different devices are.

You can also try forcing the “High Performance” GPU by creating an application profile from within the same Display Settings dialog … A few lines just below that checkbox, you should see an option for “Graphics settings” … click it and a new page appears. Make sure “Classic app” is selected…then click “Browse” button and locate Rhino 6's .exe file. Select it…and you'll see an Options button appear… Click Options and select “High Performance” You should end up with something that looks like the image “GraphicsSettings.jpg” Close the dialog and start Rhino… theoretically and hopefully, the NVidia GPU will now be listed as the Primary OpenGL device.

But again, Windows is still going to be the one making the decision, so you need to figure out the configuration that best works for your needs…and keep in mind, that plugging and unplugging USB and HDMI cables will cause new hardware profiles to get created, so everything could change…including resolutions set for each monitor. The key is that once you get something setup/configured that works, you try not to change it… You should have at most 2 configurations: 1) Config where laptop is unplugged from any/all external devices, and 2) Config where laptop is plugged into external devices… (each of which you need to configure)… and note, that just because you're looking at the same monitor after you've plugged/unplugged something, it doesn't mean it's still going to be in the same state…again, the state is determine by the current hardware profile, which changes any time hardware is added or removed.

Again I apologize for such a long winded reply…but there's no easy or short way to explain all of this.

Let me know if you have any questions about any of the above, and certainly if you still cannot get things working properly.

Thanks, -Jeff

rhino/6/video/troubleshooting.txt · Last modified: 2020/10/07 by scottd