Looking Glass fbtest vs master 14/12/19

Looking Glass recently got some new changes to it, and I thought I’d do some quick comparisons between its previous change (fbtest) vs the new master.

My setup is a 2700x with 3600Mhz RAM @14-14-15-28-42 timings with a 5700xt for the guest and a R9 390 for the host. QEMU 4.1 is used with 6 cores/12 threads passed to the VM, partitioned off using cpusets and the usual list of hyper-V enhancements. A realtime kernel (5.2.9-rt) is used due to repeated personal testing showing it yields the best possible LG performance, if used with a certain QEMU enlightenment: cpu-pm=on. (do not use this enlightenment if not rt-kernel. There are issues). 2 cores are left to the host for housekeeping with most irqs/workqueues moved to them. GPU’s are set 8x/8x PCIE 3.0. The game I’ll be testing is Destiny 2 as it has a specific location I’ve found which tanks looking glass performance and has high fps in the menus.

Game settings are on Ultra but at a few resolutions (720p, 1080p). Tests were also done at higher resolutions for comparison, but yielded extremely similar results. The new changes seem to affect the low end where GPU performance is not the bottleneck. Higher resolutions tank looking glass performance unless the framerate gets capped and/or using lowered game settings to put less strain on the GPU - this allow some room for capture. 120fps capture performance is easily maintained up yo 1440p provided the game is capped to 120fps on both versions of LG. Testing will focus on maximum capture performance instead.

Looking Glass is started with the same arguments for both.

looking-glass-client spice:enable=no input:grabKeyboard=no win:fpsLimit=480 win:autoResize=yes app:renderer=egl app:cursorPollInterval=100 app:framePollInterval=100 egl:doubleBuffer=yes win:noScreensaver=yes egl:vsync=off win:showFPS=yes

First is the logon menu due to it producing may frames… dxgiMaxTexture is set to 3 (default). This menu is uncapped.

fbtest

master

Seems like a bad start. fbtest picks up every frame while master drops to around 179. Something I forgot to screenshot was setting dxgiMaxTexture=0. This drops fbtest to around 223 frames which makes it still outperform the new master. Master drops to 150 under that setting. It’s personal opinion but setting dxgiMaxTexture=0 makes looking glass ‘feel’ much more responsive. It’s at a cost of capture performance however, so lowered settings and/or a more powerful system is required.

Next up is the game menu capped at 240fps. dxgiMaxTexture is set to 0.

fbtest

Master

Master loses a comparable amount of performance here. Even setting to dxgiMaxTexture=3 yields no performance improvement. Something’s amiss here.

Lets try moving ingame. Looking Glass maintains capture=in game fps at most Destiny 2 locations. This is the one location I’ve found which used to tank LG performance. I’ve since ‘tuned’ looking glass/qemu around this location in order to guarantee capture performance across the whole game while being uncapped. dxgiMaxTexture is set to zero.

fbtest

master

And master at dxgiMaxTexture=3…

fbtest manages to match in-game fps while master stuggles. Lets try a higher resolution to move our bottleneck to the GPU. This is at 1080p uncapped.

fbtest

MaxTexture=0

MaxTexture=3

master

MaxTexture=0


MaxTexture=3

It seems if our GPU is the bottleneck, performance is the same to the point of margin of error. This trend continued across all resolutions where GPU was the bottleneck. Capping the fps solves the capture performance =/= fps disparity, but my goals align with minimal input lag while using looking-glass.

There is one difference I can say about the new master vs fbtest: the new master feels much better to play with dxgiMaxTexture set to three compared to fbtest at the same setting. Setting fbtest to 0 makes it ‘feel’ good to play again at the cost of capture performance. So if you’re GPU bottlenecked at higher resolutions, using the new master can be beneficial as you’d get slightly higher capture performance with equal/lower input lag then fbtest. If you’re playing at lower resolutions, then fbtest even at dxgiMaxTexture=0 outperforms the new master by a large margin.

I did not test the new profile/client as it thinks my /dev/shm/looking-glass doesn’t exist…
[I] main.c:278 | main | Looking Glass (B1-27-g2d9f578719+1) - Client Profiler [E] main.c:131 | map_memory | Failed to stat the shared memory file: /dev/shm/looking-glass

Please note that fbtest is ancient now, LG B1 is more recent even. Can you please confirm that the changes today are what caused this frame rate regression by testing Beta 1?

This is never going to change, DXGI get’s low capture priority, if the game is consuming 100% of GPU resources there is nothing left for LG to use to capture and transfer the frame from GPU ram to shared ram.

The lower limit of this value is 1, if you set it to zero it will be set to 1.

You’re not intended to use the profiler, it’s for development use only.

Please note that the frame rate regression in master has been fixed.