Transparency and Zoom = 100% GPU and lagging

Hi there,

we were just testing QPrompt and found it great initially, especially the configuration options (for adapting to presentation remotes) and the transparency feature are very important for our use case.
However, we could not use it because the GPU maxed out at 100%, thus the Zoom Webcam Picture was not smooth and lagging. We put the prompter with transparency option over the Zoom window, other software was working this way.

We are running on a standard DELL desktop with built-in graphics.

Do you have any suggestions? Are there any improvements planned for such a scenario?

Thanks, Ernst

Hello @Ernst,

I find it strange that it is the GPU which is maxed out at 100%. QPrompt is consistently tested to work on low end hardware, albeit not with simulating a conferencing scenario. The two areas in which QPrompt’s performance can be improved are CPU bound, not GPU bound. Those are the “Countdown” animation and “Screen” projections.

Because it is the GPU that is maxing out, I think the key to improving performance is in reducing the number of both CPU and GPU taxing tasks:

  1. Disable all of Zoom’s background manipulation features, as these will consume most of your GPU resources.
  2. Avoid using QPrompt’s Screen projections as this feature can be taxing on the CPU.
  3. Reduce your display’s resolution. For low end computers I recommend resolution of no more than 1366x768.
  4. Set QPrompt’s Pointers to “Left Pointer”, “Right Pointer”, “Both pointers”, or “None”. Not using any of the "Bar"options will slightly improve performance.
  5. Disable countdown
  6. Disable all timers
  7. Do not set a background image

To better diagnose the issue, please answer the following questions to the best of your ability:

  • What operating system and operating system version does the DELL have?
  • What exact CPU model does the DELL have?
  • Which versions of QPrompt and its libraries are you running. You will find this information in QPrompt’s About Page.
  • How many displays does your computer have and what are their resolutions?
  • Are you using QPrompt’s Screen Projections feature to project to a second display?
  • Are you using Zoom’s background manipulation features? Such as background blurring or replacing?

Hi Javier,

first of all: Thanks for the fast and elaborate reply. This is really a pleasure, and I don’t take it for granted.

First the answers to your questions:

  • I am running on Windows 10 21H2 (Build 19043.1586)
  • Intel core i5-9500 @3.0 GHz, 6 Core, Onboard Intel UHD Graphics 630 used
  • QPrompt 1.0.0 (v1.0/2c9752c), KDE FW 5.86.0, Qt 5.15.2 (compiled against 5.15.2) - German
  • 2 displays attached: Main Display (Zoom and QPrompt is there) is 3840x2160 at 150%, secondary is 1600x1200 at 100%
  • No QPrompt projection feature used
  • Yes, some softener and background enhancing filter (no replacement) is used in Zoom

Considering your input I have done some more testing with main display at 1920x1080@100%:

  • No Zoom, just QPrompt over the desktop
  • 64% opacity, no pointers or bars, no countdown or timer
  • QPrompt using 10% GPU, dwm.exe using 25-35% GPU, Total around 80% (I know it does not add up, don’t know why) - monitored with Sysinternals Process Explorer
  • QPrompt using 5-10% CPU (6 Core, so 30-60% of one Core)

Same testing with main display at 3840x2160@150%:

  • No Zoom, just QPrompt over the desktop
  • 64% opacity, no pointers or bars, no countdown or timer
  • QPrompt using 20-25% GPU, dwm.exe using 25-35% GPU, Total around 75-80% - monitored with Sysinternals Process Explorer
  • QPrompt using 5-10% CPU (6 Core, so 30-60% of one Core)

Does this match your expectations or can you see anything out of the ordinary?

Ernst

1 Like

Excellent @ernst!

Takeaway

  • Limit yourself to 1920x1080 or lower, because your GPU lacks the bandwidth to run QPrompt smoothly at greater resolutions.
  • Disable all of Zoom’s video filters.
  • Enable “High Performance” modes for Windows and the graphics (if available).
  • Go to: Control Panel > System > Advanced system settings > Performance Settings and select “Adjust for best performance” to turn off all fancy display options, leaving more GPU time to other programs.
  • Perform a virus scan with an up to date anti-virus, just to be sure no virus is pretending to be or has taken control over dwm.exe, which is an essential Windows component.

Full answer

Thank you for the thorough answers and benchmarks. There is something a little odd about these numbers. A couple questions: What is dwm.exe’s GPU usage when QPrompt isn’t running, and what about when QPrompt is idling in edit mode? Please test this at 1920x1080 resolution.

dwm.exe is Windows’ compositor, it takes care of drawing windows onto the screen since Windows Vista. It makes sense that whenever a window updates its graphics, dwm use will increase as well. What doesn’t make much sense is that use of dwm remains consistent across resolutions. Disabling dwm and using the old method of drawing windows on screen is not supported since Windows 8, and is also not recommended because it may introduce screen tear, and may fail to work with Zoom.

I developed QPrompt using a slightly more modern integrated graphics chip than the one in your computer. At 4K display resolution, QPrompt was very much usable with an HD YouTube video playing in the background, but I could see frames drop nonetheless. This test was done on Linux, running Firefox in the background, using the X11 compositor.

QPrompt’s overall performance is slightly lower on Windows and macOS because it uses OpenGL for rendering instead of their native counterparts DirectX and Metal. I’m waiting for QPrompt’s underlying libraries to upgrade their support before I can add finish adding support as well. I’m expecting to be able to complete this transition during Q1 2023.

Your CPU benchmarks are not too far off from what I would expect. I think the real issue here is the graphics processor does not have enough bandwidth to run QPrompt smoothly at resolutions beyond 1920x1080. Combine that with the use of Zoom’s filters, which are very taxing on the GPU, and QPrompt starts to become unusable.

If your computer provides a way to set the GPU’s clock to its maximum recommended clock speed, such as enabling a “High Performance” mode for your graphics driver, and on Windows, enable them. This will result in a slight increase in energy consumption, and smoother execution. Your computer will run at a constant full speed, for as long as it has proper ventilation.

There also may be something else going on that’s keeping GPU usage high. I’ve seen viruses in the past infect dwm.exe or pretend to be dwm.exe. If you find two copies of dwm.exe in Task manager, your computer is undoubtedly infected. If not, it may simply be some other program is drawing contents off-screen, a virus is still possible but it’s much less likely. Crypto miners, which are sometimes embedded onto viruses, are particularly taxing on the GPU. Please run an up to date anti-virus scan just to be sure no unauthorized programs are making use of your GPU.

Last but not least, you should also make the following change to have Windows consume less GPU resources. Go to: Control Panel > System > Advanced system settings > Performance Settings and select “Adjust for best performance”. This will turn off all fancy display options, leaving more GPU time to other programs.