Nvidia Discrete GPU Not Working Correctly With TD

Hello TouchDesigner Community,

I am a newbie who recently jumped from the Mac world to a PC. I recently invested in the following laptop

Asus Zephyrus Duo
Intel(R) Core ™ i7-10875H @ 2.3GHz
Nvidia GeForce RTX 2070 Super with Max-Q Design
32 Gig of Ram

The laptop performs well when using other programs and gaming. However, when I use the laptop to work on Touchdesigner, GPU usage refuses to go above 10% causing the frame rate to drop into the single digits.

I have turned off Optimus and have played with the preset performance settings. All the latest drivers have been installed, and I am still having performance issues.

The laptop has a built-in second monitor that works like any other external monitor. After searching through the forums, I am assuming this could be the issue. But, I am not sure how I would go about fixing it. Bloatware or a specific program could be to blame too based on what I have read.

Any recommendations?

Thank you so much.

On windows, one consideration is to check your power consumption settings. Windows will sometimes throttle hardware usage if you’re on battery power only to conserve power. This is called your Power Plan - and you can find it in the settings menus, or in the control panel.

Next check the NVIDIA Control panel - here you should be able to set applications to use the dedicated GPU:

image

Next I’d check to see if the canvas is extending onto the second screen - if it is, add a monitor DAT to check which GPU your displays are assigned to. Id’ then experiment with moving the TD Canvas off of the second display to see if that makes a performance difference.

Those are the places I’d start… there’s lots more you can do to trouble shoot, but those are reasonable first steps. :slight_smile:

Thank you for responding. I tried all of that and no significant improvement. Updated drivers, tried disabling the screen, played with Nvidia Control panel and the power settings, and no real improvements.

When I added the monitor DAT, it displayed Nvidia GeForce RTX 2070 Super with Max-Q Design for both screens.

The screen works like any other secondary monitor. However, I can not figure out why TD is using such a small fraction of the GPU.

I feel it might be a simple fix and I am overlooking it.

I know this sounds silly - but are the results the same if you’re connected to power? I know some times folks see different performance if they’re plugged in to their adapter, or not plugged in.

No worries, I tried that in all the appropriate settings. Asus gives me full control of all of its battery modes. I have tried performance and turbo mode plugged in and nothing has changed. :confused:

@Alexandr1990

Did you had any luck yet? I’m having the same issue with my new Razer Blade 14 (RTX 3070). My internal laptop monitor seems to only use the AMD intergrated graphics in Touchdesigner, and I have tried Nvidea and windows graphic adaptor settings, with no luck. Which is strange because all the games can be played normally on my laptop screen, where I wonder if the issue should be solved within Touchdesigner’s settings/code itself.

Hey! So I did figure this out. It was a simple fix and rather silly. I have the Nvidia GeForce Now app installed in my laptop. In the settings it allows you to set the FPS. For some reason, the preset settings was capped at 30FPS. As soon as I toggled those settings up to 60FPS, I didn’t have that problem at all. Hope that helps.

@Alexandr1990

Hey, did you mean the geforce experience app? Because I think geforce now is only a cloud gaming app right? I’ve tried adding Touchdesigner to the Geforce experience app, but this didn’t seem to work, as It doesn’t recognizes it when scanning.

So when I’m using Touchdesigner only on my internal laptop monitor, or only on my second monitor, it all works fine. But whenever I want to use touchdesigner on my laptop screen and a perform window on my second monitor or vice versa, it all goes down and it’s start using the processor intergrated graphics again.

I seem to be having this problem recently as well and I’m not sure if it is because of a Windows Update, becasue I just updated from 14360 to 15800, or because I’m using a weird laptop that has an external GPU that needs to be “swicthed on and off” (Asus ROG Flow X13 with XG Mobile RTX 3080 in it)

I did notice that Microsoft has recently changed how GPU is selected from the NVIDIA control panel to a buitl in Settings panel in Windows 10. If you click “Graphics Settings” at the bottom of the Display Settings page in Windows 10 Settings App ( not control panel) then you get this page


and supposedly the area at the bottom is now how you determine which apps get which GPU. As seen here, I tried setting TouchDesigner to always use the “High Performance” GPU but it always uses the integrated AMD Radeon GPU when I start up TouchDesigner (as seen in a “Monitors DAT”)

Oddly enoguh, if I plug in an external monitor to the external GPU HDMI or Dispalyport port and then run TouchDesigner on THAT screen, it will run on the disctrete GPU, but I feel like I shouldn’t have to go find an external monitor just to get TouchDesigner to use the external discrete GPU, especially when this all worked fine before these recent TD and windows / GPU driver updates…

So I think there’s more to this than just the usual “optimus issue - mess with your drivers till it works” answer…

I noticed that once I did get TD “running on the proper GPU” aka it shows “GPU 0 - 3D” in task manager and not “GPU 1” or “GPU 0 - Copy” that only SOME of the OPs were taking advantage of the NVidia GPU. I was getting some errors on GLSL TOPs and MATs that made it sound like said OPs were still running on the integrated GPU. Those are the only two I could find that we re-createable. All the other OPs that require NVidia (my integrated GPU is an AMD) would work when I was “running on the proper dedicated NVidia GPU” and would not work when I forced TD to run on the integrated AMD GPU.

I noticed that the Monitors DAT was showing that the monitor was running on the AMD GPU, and other than the Monitors DAT and specific instances of GLSL TOP and MAT (the most repeatable clue was in using RayTK 0.16 where #includes in the GLSL code do NOT work on the AMD GPU but do on the NVidia - Tekt did fix that in later versions)

So I had a dumb idea - I got a “monitor emulator” plug (aka an HDMI dongle that just pretends to be a 1080p monitor) and plugged it in to the HDMI port of the external NVidia GPU, positioned my mouse over the TD file I wanted to open, and then closed the laptop lid and double clicked the mouse while the lid was closed. Then when I opened up the laptop lid again, TD was starting up and once fully started, EVERYthing worked as if it was running on the NVidia GPU and even the Monitors DAT said that the current screen (internal monitor) was running on the NVidia GPU. I could even unplug the fake monitor and it would keep running fine until I had to restart TD.

Somehow TD was able to either run solely on the integrated GPU, or in some sort of hybrid mode where some features were using the NVidia GPU and some were still trying to use the integrated AMD GPU - and the only real clue was the Monitors DAT (and the GLSL code error). I’m assuming that because GPU switching has only gotten weirder, especially since now Microsoft is trying to take it over and put the controls for it into their fancy new “Settings App” instead of the proprietary NVidia Control Panel, that there’s some disconnect as to which GPU the program is actually running on, and which GPU the program is being TOLD it is running on by some particular method or piece of hardware, and depending on how TD is asking, it’s getting two different answers.

I did notice a “OpenGL Rendering GPU” option in the NVidia Control Panel where you can choose which GPU to use for OpenGL rendering I would assume, but that made no difference and also I’m guessing GLSL and OpenGL are not as linked as I thought they were…

Eitehr way, there’s something odd going on and I feel like there could be a fix on TD’s side since some of the OPs are definitely able to sniff out the actual NVidia GPU (like the “NVidia Background” TOP for example - there’s even a GPU selector parameter on there!) whereas the GLSL code maybe hasn’t been updated to properly ask windows which GPU it is actually being run on.

Hey man thanks for your update and experiments. I just recently clean wiped my windows and it seem to have “some” effect on my FPS rate, when running TD on internal monitor and the COMP window on external monitor.

But I did some tests as well, as I have shared in another post:

After running some tests, with a semi intense TOP feedback loop. I have found that running several instances of the same visual, on my external screen, didn’t had any effect on the frame rate. I could run it to my monitor’s default refresh rate limit (165hz), on a constant 165 FPS.

But the moment when I drag the same project window to my laptop, the frame rate drops to 80 FPS. This could never be fully my processors internal GPU, because it would be to heavy for that processor. (but like you said, it may be because some OP’s are using the intergrated GPU and some aren’t)

Next to that, while running Touch on my Laptop screen and outputting the COMP to my external screen, had also an effect on the frame rate.

Which is still quite odd, since it shouldn’t be much heavier, right?

Could this be an issue with the interface scaling, that doesn’t work well on my laptop screen? I have double checked the battery and performance settings. Or maybe something else that I’m missing here.
Because a strange thing is that when I run Touchdesigner on my external monitor, and project the visual to my projector (so third monitor), it has less frame drops.

I also really think there has to be a fix on TD’s side, because there is no game that I have played that had this issue.
And since the whole reason I bought this laptop is to use TD on my internal screen to output on an external screen, it has been quite a problem.

Are there any news on this front? I am struggling with the same problem. Whatever I do I can’t get Touch to run on the discrete GPU on my Razer and the intel UHD is very limited. It used to be fine. Not sure if Windows taking over these settings f**ked things up?

As the original question was posted long ago I’m not sure if this is the right thread to reply to but I’ll reply anyway as it might help someone. I have a 2021 Nitro 5 laptop with Radeon integrated graphics and a dedicated (underpowered)RTX 3080.

So I had the same issue, Touch only running in the background with no visible sign of it on my monitor. These are the steps I tried:

  • Disabled/enabled the Radeon card in the device manager (no luck)
  • Under “GPU settings” I forced Touch to use my 3080 (no luck)
  • In the nVidia control panel I tried to force the same (no luck)
  • Updated my nVidia drivers (no luck)
  • Removed all bloatware (I made some quite brutal steps, if I didn’t recognize anything or if I was on 50-50 I just removed everything gradually. This took a long time as I tested almost after each reboot (no luck)
  • I tried quite a few versions of Touch (no luck)
  • Attached a secondary monitor (no luck)
  • Changed the power settings (no luck)
  • Closed the lid of the laptop to force the laptop to use my RTX card (no luck)

Throughout all of these tries, I kept an eye on the tray icon that looks like a silicone wafer to see if touch appears on the list of apps that are running on the 3080, but it never appeared.

  • Finally, I updated the Radeon drivers (as in “AMD Software: Adrenaline Edition”) and now Touch works!!! (luck) Strangely it affected the app that indicates what’s running on the 3080 card (under the wafer-looking tray icon)

Hope this list helps someone in the future.

Btw, I’m running Windows 10 home, nVidia driver is 546.17 and AMD Adrenalin is 23.11.1