Performance issue with GPU heavy applications using fullscreen windows on dual monitor setup
Dual monitor setup!
OS: Linux 4.17.4-1-ARCH #1 SMP PREEMPT Tue Jul 3 15:45:09 UTC 2018 x86_64 GNU/Linux
GPU: VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] (rev a1)
Driver version: nvidia 396.24-14
EFL version: 1.20.7-1 (tested also on git version from AUR)
Enlightenment version: 0.22.3-1 (tested also on git version from AUR)
Notes: using SDDM and X
Godot version: 3.0.5 (x64) without MONO
Steps to reproduce
Prepare some other WM or DE to compare performance (on BSPWM, GNOME and KDE it works) and decent GPU.
- Download Godot Engine
- Download some heavy scene
- Extract both archives :]
- Run Godot
- Import downloaded project, and wait a while
- Close Godot (it matter to have one instance of scene running, when there is editor running, actual window with game will be second so doubles the GPU usage)
- Reopen Godot
- Select imported project and click "Run" button
- Resize stuck window a little to show content (weird but unconnected with this issue)
- Select other "Display resolution" and reselect "Fullscreen" to make window fullscreen (also weird but unconnected with this issue)
- Set "Graphic quality" "Ultra" (or "High" but effect will be less visible)
- Click "OK" button
- Move mouse around and observe choppy rendering despite FPS counter showing decent value (42-60 FPS for me on "Ultra")
- Compare results with other DE/WM (on GNOME it looks smooth)
Despite FPS counter showing decent FPS (around 45) it doesn't look like it. On other WM/DE it works. I suspect problems with unredirecting windows. Tested with Software or OpenGL rendering and with "Don't composite fullscreen windows" checked and unechecked without luck.
EDIT: I tried to unplug one of my monitors. With only one monitor issue seems to disappear.
__E_WINDOW_BORDER_SIZE(CARDINAL) = 0, 0, 1920, 1200
_NET_WM_NAME(UTF8_STRING) = "Sponza"
_NET_WM_ICON(CARDINAL) = Icon (128 x 128):
XdndAware(ATOM) = BITMAP
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW
WM_NAME(STRING) = "Sponza"
_NET_WM_STATE(ATOM) = _NET_WM_STATE_FULLSCREEN
_NET_WM_BYPASS_COMPOSITOR(CARDINAL) = 1
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x0, 0x0, 0x0
_E_FRAME_SIZE(CARDINAL) = 0, 0, 0, 0
_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 0, 0
__E_WINDOW_MAPPED(CARDINAL) = 1
window state: Normal icon window: 0x0
E_WINDOW_MANAGED(CARDINAL) = 1
E_ZONE_GEOMETRY(CARDINAL) = 0, 0, 1920, 1200
E_WINDOW_ZONE(CARDINAL) = 0
__E_WINDOW_DESK(CARDINAL) = 1, 0
WM_CLASS(STRING) = "Godot_Engine", "Godot"