On 4/17/20 10:36 AM, Shak wrote:
> I ran glmark on the host display normally and then with software
> rendering. I've attached the results at the end of this message. I've
> attached this for completion rather than to contradict your hunch, but
> they do tie up with the numbers I see via VGL so I don't think this is
> a CPU/VNC issue.
Hmmm... Well, you definitely are seeing a much greater speedup with
glmark2 absent VirtualGL, so I can only guess that the benchmark is
fine-grained enough that it's being affected by VGL's per-frame
overhead. A more realistic way to compare the two drivers would be
using '[vglrun -sp] /opt/VirtualGL/bin/glxspheres -p {n}', where {n} is
a fairly high number of polygons (at least 100,000.)
> I've tried repeating my experiments using gnome, in case the issue is
> with KDE. However I get the following when trying to run vglrun:
>
> $ *vglrun glxspheres64*
> /usr/bin/vglrun: line 191: hostname: command not found
> [VGL] NOTICE: Automatically setting VGL_CLIENT environment variable to
> [VGL] 10.10.7.1, the IP address of your SSH client.
> Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
> libGL error: failed to authenticate magic 1
> libGL error: failed to load driver: i965
> GLX FB config ID of window: 0x6b (8/8/8/0)
> Visual ID of window: 0x21
> Context is Direct
> OpenGL Renderer: llvmpipe (LLVM 9.0.1, 256 bits)
> 17.228616 frames/sec - 17.859872 Mpixels/sec
> 16.580449 frames/sec - 17.187957 Mpixels/sec
You need to install whatever package provides /usr/bin/hostname for your
Linux distribution. That will eliminate the vglrun error, although it's
probably unrelated to this problem. (Because of the error, vglrun is
falsely detecting an X11-forward SSH environment and setting VGL_CLIENT,
which would normally be used for the VGL Transport. However, since
VirtualGL auto-detects an X11 proxy environment and enables the X11
Transport, the value of VGL_CLIENT should be ignored in this case.)
I honestly have no clue how to proceed. I haven't observed these
problems in any of the distributions I officially support, and I have no
way to test Arch.
> I'm not sure what to make of these. I am using *vncserver -wm
> ~/gnome*, where gnome is the following script.
>
> |
> #!/bin/sh
> dbus-launch gnome-session
> |
>
> I feel that I am close but still a way off.
>
> FWIW I have previously tried using nomachine which is able to give me
> the perceived GL acceleration by "mirroring" my host display, but that
> just feels like the wrong way to achieve this (not least because it
> requires a monitor attached to use).
>
> Thanks,
>
> ==== RENDER TESTS ====
>
> $ *glmark2*
> =======================================================
> glmark2 2017.07
> =======================================================
> OpenGL Information
> GL_VENDOR: Intel Open Source Technology Center
> GL_RENDERER: Mesa DRI Intel(R) HD Graphics P4600/P4700 (HSW GT2)
> GL_VERSION: 3.0 Mesa 20.0.4
> =======================================================
> [build] use-vbo=false: FPS: 2493 FrameTime: 0.401 ms
> =======================================================
> glmark2 Score: 2493
> =======================================================
>
> $ *LIBGL_ALWAYS_SOFTWARE=1 glmark2*
> ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
> ** Failed to set swap interval. Results may be bounded above by
> refresh rate.
> =======================================================
> glmark2 2017.07
> =======================================================
> OpenGL Information
> GL_VENDOR: VMware, Inc.
> GL_RENDERER: llvmpipe (LLVM 9.0.1, 256 bits)
> GL_VERSION: 3.1 Mesa 20.0.4
> =======================================================
> ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
> ** Failed to set swap interval. Results may be bounded above by
> refresh rate.
> [build] use-vbo=false: FPS: 420 FrameTime: 2.381 ms
> =======================================================
> glmark2 Score: 420
> =======================================================
>
>
> On Thursday, 16 April 2020 23:21:59 UTC+1, DRC wrote:
>
> On 4/16/20 3:19 PM, Shak wrote:
>> Thank you for the quick tips. I have posted some results at the
>> end of this post, but they seem inconsistent. glxspheres64 shows
>> the correct renderer respectively and the performance shows the
>> 6x results I was expecting. However I do not see the same gains
>> in glmark2, even though it also reports the correct renderer in
>> each case. Again, I see a glmark of 2000+ when running it in
>> display :0.
> I don't know much about glmark2, but as with any benchmark,
> Amdahl's Law applies. That means that the total speedup from any
> enhancement (such as a GPU) is limited by the percentage of clock
> time during which that enhancement is used. Not all OpenGL
> workloads are GPU-bound in terms of performance. If the geometry
> and window size are both really small, then the performance could
> very well be CPU-bound. That's why, for instance, GLXgears is a
> poor OpenGL benchmark. Real-world applications these days assume
> the presence of a GPU, so they're going to have no qualms about
> trying to render geometries with hundreds of thousands or even
> millions of polygons. When you try to do that with software
> OpenGL, you'll see a big difference vs. GPU acceleration-- a
> difference that won't necessarily show up with tiny geometries.
>
> You can confirm that that's the case by running glmark2 on your
> local display without VirtualGL and forcing the use of the swrast
> driver. I suspect that the difference between swrast and i965
> won't be very great in that scenario, either. (I should also
> mention that Intel GPUs aren't the fastest in the world, so you're
> never going to see as much of a speedup-- nor as large of a
> speedup in as many cases-- as you would see with AMD or nVidia.)
>
> The other thing is, if the benchmark is attempting to measure
> unrealistic frame rates-- like hundreds or thousands of frames per
> second-- then there is a small amount of per-frame overhead
> introduced by VirtualGL that may be limiting that frame rate. But
> the reality is that human vision can't usually detect more than 60
> fps anyhow, so the difference between, say, 200 fps and 400 fps is
> not going to matter to an application user. At more realistic
> frame rates, VGL's overhead won't be noticeable.
>
> Performance measurement in a VirtualGL environment is more
> complicated than performance measurement in a local display
> environment, which is why there's a whole section of the VirtualGL
> User's Guide dedicated to it. Basically, since VGL introduces a
> small amount of per-frame overhead but no per-vertex overhead, at
> realistic frame rates and with modern server and client hardware,
> it will not appear any slower than a local display. However, some
> synthetic benchmarks may record slower performance due to the
> aforementioned overhead.
>
>
>> In the meantime I have been trying to get the DE as a whole to
>> run under acceleration. I record my findings here as a possible
>> clue to my VGL issues above. In my .vnc/xstartup.turbovnc I use
>> the following command:
>>
>> |
>> #normal start - works with llvmpipe and vglrun
>> #exec startplasma-x11
>>
>> #VGL start
>> execvglrun +wm startplasma-x11
>> |
>>
>> And I also start tvnc with:
>>
>> |
>> $vncserver -3dwm
>> |
>>
>> I'm not sure if vglrun, +wm or -3dwm are redundant or working
>> against each other, but I've also tried various combinations to
>> no avail.
>
> Just use the default xstartup.turbovnc script ('rm
> ~/.vnc/xstartup.turbovnc' and re-run /opt/TurboVNC/bin/vncserver
> to create it) and start TurboVNC with '-wm startplasma-x11 -vgl'.
>
> * -3dwm is deprecated. Use -vgl instead. -3dwm/-vgl (or setting
> '$useVGL = 1;' in /etc/turbovncserver.conf or
> ~/.vnc/turbovncserver.conf) simply instructs xstartup.turbovnc to
> run the window manager startup script using 'vglrun +wm'.
>
> * Passing -wm to /opt/TurboVNC/bin/vncserver (or setting '$wm =
> {script};' in turbovncserver.conf) instructs xstartup.turbovnc to
> execute the specified window manager startup script rather than
> /etc/X11/xinit/xinitrc.
>
> * +wm is a feature of VirtualGL, not TurboVNC. Normally, if
> VirtualGL detects that an OpenGL application is not monitoring
> StructureNotify events, VGL will monitor those events on behalf of
> the application (which allows VGL to be notified when the window
> changes size, thus allowing VGL to change the size of the
> corresponding Pbuffer.) This is, however, unnecessary with window
> managers and interferes with some of them (compiz, specifically),
> so +wm disables that behavior in VirtualGL. It's also a
> placeholder in case future issues are discovered that are specific
> to compositing window managers (+wm could easily be extended to
> handle those issues as well.)
>
>
>> Interestingly I had to update the vglrun script to have the full
>> paths to /usr/lib/libdlfaker.so and the others otherwise I see
>> the following in the TVNC logs:
>>
>> ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be
>> preloaded (cannot open shared object file): ignored.
>> ERROR: ld.so: object 'libvglfaker.so' from LD_PRELOAD cannot be
>> preloaded (cannot open shared object file): ignored.
>>
>> That said, my desktop is still broken even when these errors
>> disappear.
>>
>> Could my various issues be to do with KDE?
>
> The LD_PRELOAD issues can be fixed as described here:
>
> https://cdn.rawgit.com/VirtualGL/virtualgl/2.6.3/doc/index.html#hd0012
> <https://cdn.rawgit.com/VirtualGL/virtualgl/2.6.3/doc/index.html#hd0012>
>
> All of that aside, I have not personally tested the bleeding-edge
> KDE Plasma release, which is what Arch presumably ships, so I have
> no idea whether it works with VirtualGL or TurboVNC. The window
> managers I have tested are listed here:
>
> https://turbovnc.org/Documentation/Compatibility22
> <https://turbovnc.org/Documentation/Compatibility22>
>
>
>> On Thursday, 16 April 2020 20:02:13 UTC+1, DRC wrote:
>>
>> You can't really determine which OpenGL renderer is in use by
>> just looking at dlopen() calls. In a TurboVNC environment,
>> swrast will be used for any GLX/OpenGL commands sent to the
>> TurboVNC X server (the "2D X server"), and VirtualGL does
>> send a couple of GLX/OpenGL commands to the 2D X server to
>> probe its capabilities. That's probably why swrast is being
>> loaded, but if everything is working properly, the OpenGL
>> renderer string should still report that the Intel driver is
>> in use for actual rendering. Compare the output of
>> /opt/VirtualGL/bin/glxinfo on the local display with 'vglrun
>> /opt/VirtualGL/bin/glxinfo' in TurboVNC, or just run
>> /opt/VirtualGL/bin/glxspheres64 (using vglrun in TurboVNC),
>> which reports the OpenGL renderer string as well.
>>
>>
>> On 4/16/20 10:34 AM, Shak wrote:
>>> I am trying to set up VirtualGL + TurboVNC on Arch with the
>>> Plasma KDE desktop. The host is itself a VM using an passed
>>> through Intel P4600 IGD. I believe that the passthrough
>>> itself is successful as I see GL performance when running a
>>> desktop on display :0.
>>>
>>> I am using glmark2 to check what is happening. As a measure,
>>> I get a score of around 2000 on the host, and 300 when using
>>> llvmpipe and similar when using vglrun. vglrun glinfo is
>>> reporting that its using the Intel Mesa driver (vs
>>> llvmpipe), so the set up at least looks okay, but it seems
>>> that vglrun is still using software rendering.
>>>
>>> Passing +v +tr to vglrun in both cases shows me the traces
>>> at the end of this post, which aligns with what I am seeing
>>> (highlighted yellow). I've also highlighted green some other
>>> lines which confuse me.
>>>
>>> I read this
>>> <https://sourceforge.net/p/virtualgl/mailman/message/31296895/>
>>> that indicated that Mesa isn't supported and in the docs
>>> that Arch's VirtiualGL package might be broken. I do not
>>> know if these apply here (or are still valid).
>>>
>>> Also when trying to accelerate the whole DE using exec
>>> vglrun plasmastart-x11 in my xstartup.turbovnc, I seem to
>>> get a broken desktop. I am not sure if this is related to
>>> the above but have mentioned it at as another data point (if
>>> its unrelated then tips to fix would be appreciated!).
>>>
>>> Thanks,
>>>
>>> vglrun traces:
>>>
>>> ==== on host ====
>>>
>>> [VGL] NOTICE: Added /usr/lib to LD_LIBRARY_PATH
>>> [VGL] Shared memory segment ID for vglconfig: 131106
>>> [VGL] VirtualGL v2.6.3 64-bit (Build 20200214)
>>> [VGL 0x92aa5780] XOpenDisplay (name=NULL
>>> dpy=0x557453a35740(:0) ) 0.335932 ms
>>> [VGL] dlopen (filename=libGL.so flag=4098[VGL] NOTICE:
>>> Replacing dlopen("libGL.so") with dlopen("libvglfaker.so")
>>> retval=0x7f2c935804f0)
>>> [VGL] Opening connection to 3D X server :0
>>> [VGL] dlopen (filename=libGLX_mesa.so.0 flag=1
>>> retval=0x557453a53170)
>>> [VGL] dlopen (filename=libGLX_mesa.so.0 flag=258
>>> retval=0x557453a53170)
>>> [VGL] dlopen (filename=/usr/lib/dri/tls/i965_dri.so flag=258
>>> retval=0x00000000)
>>> [VGL] dlopen (filename=/usr/lib/dri/i965_dri.so flag=258
>>> retval=0x557453a69340)
>>> [VGL 0x92aa5780] glXGetProcAddressARB ((char
>>> *)procName=glXSwapIntervalEXT [INTERPOSED]) 0.005960 ms
>>> [VGL 0x92aa5780] glXChooseFBConfig (dpy=0x557453a35740(:0)
>>> screen=0 attrib_list=[0x8012=0x0001 0x8010=0x0001
>>> 0x8011=0x0001 0x0022=0x8002 0x0008=0x0001 0x0009=0x0001
>>> 0x000a=0x0001 0x000b=0x0001 0x000c=0x0001 0x000d=0x0000
>>> 0x0002=0x0001 0x0005=0x0001 ] glxattribs=[0x8010=0x0001
>>> 0x000c=0x0001 0x000d=0x0000 0x0002=0x0001 0x0005=0x0001
>>> 0x0008=0x0001 0x0009=0x0001 0x000a=0x0001 0x000b=0x0001
>>> 0x8011=0x0001 0x0022=0x8002 ] [VGL] dlopen
>>> (filename=libGLX_mesa.so.0 flag=258 retval=0x557453a53170)
>>> [VGL] dlopen (filename=/usr/lib/dri/tls/i965_dri.so flag=258
>>> retval=0x00000000)
>>> [VGL] dlopen (filename=/usr/lib/dri/i965_dri.so flag=258
>>> retval=0x557453a69340)
>>> configs[0]=0x557453b9a040(0x67)
>>> configs[1]=0x557453b9a7c0(0x6f)
>>> configs[2]=0x557453b9af40(0x77)
>>> configs[3]=0x557453b9b300(0x7b)
>>> configs[4]=0x557453b9bc60(0x85)
>>> configs[5]=0x557453b9c3e0(0x8d)
>>> configs[6]=0x557453b9bd50(0x86)
>>> configs[7]=0x557453b9c4d0(0x8e)
>>> configs[8]=0x557453b9b030(0x78)
>>> configs[9]=0x557453b9b3f0(0x7c)
>>> configs[10]=0x557453b9fa40(0xc7)
>>> configs[11]=0x557453b9fe00(0xcb)
>>> configs[12]=0x557453b9ffe0(0xcd)
>>> configs[13]=0x557453ba00d0(0xce) *nelements=14 ) 6.473064 ms
>>> [VGL 0x92aa5780] glXGetFBConfigAttrib
>>> (dpy=0x557453a35740(:0) config=0x557453b9a040(0x67)
>>> attribute=2(0x2) *value=32(0x20) ) 0.008106 ms
>>>
>>>
>>> ==== on tvnc ====
>>>
>>> [VGL] NOTICE: Added /usr/lib to LD_LIBRARY_PATH
>>> [VGL] Shared memory segment ID for vglconfig: 131076
>>> [VGL] VirtualGL v2.6.3 64-bit (Build 20200214)
>>> [VGL 0x9f624780] XOpenDisplay (name=NULL
>>> dpy=0x555b28562740(:1) ) 2.894163 ms
>>> [VGL] dlopen (filename=libGL.so flag=4098[VGL] NOTICE:
>>> Replacing dlopen("libGL.so") with dlopen("libvglfaker.so")
>>> retval=0x7f90a00ff4f0)
>>> [VGL] Opening connection to 3D X server :0
>>> [VGL] dlopen (filename=libGLX_mesa.so.0 flag=1
>>> retval=0x555b28583a20)
>>> [VGL] dlopen (filename=libGLX_mesa.so.0 flag=258
>>> retval=0x555b28583a20)
>>> [VGL] dlopen (filename=/usr/lib/dri/tls/i965_dri.so flag=258
>>> retval=0x00000000)
>>> [VGL] dlopen (filename=/usr/lib/dri/i965_dri.so flag=258
>>> retval=0x555b285964a0)
>>> [VGL 0x9f624780] glXGetProcAddressARB ((char
>>> *)procName=glXSwapIntervalEXT [INTERPOSED]) 0.045061 ms
>>> [VGL 0x9f624780] glXChooseFBConfig (dpy=0x555b28562740(:1)
>>> screen=0 attrib_list=[0x8012=0x0001 0x8010=0x0001
>>> 0x8011=0x0001 0x0022=0x8002 0x0008=0x0001 0x0009=0x0001
>>> 0x000a=0x0001 0x000b=0x0001 0x000c=0x0001 0x000d=0x0000
>>> 0x0002=0x0001 0x0005=0x0001 ] glxattribs=[0x8010=0x0001
>>> 0x000c=0x0001 0x000d=0x0000 0x0002=0x0001 0x0005=0x0001
>>> 0x0008=0x0001 0x0009=0x0001 0x000a=0x0001 0x000b=0x0001
>>> 0x8011=0x0001 0x0022=0x8002 ] [VGL] dlopen
>>> (filename=libGLX_mesa.so.0 flag=258 retval=0x555b28583a20)
>>> [VGL] dlopen (filename=/usr/lib/dri/tls/swrast_dri.so
>>> flag=258 retval=0x00000000)
>>> [VGL] dlopen (filename=/usr/lib/dri/swrast_dri.so flag=258
>>> retval=0x555b28705370)
>>> configs[0]=0x555b286c7170(0x67)
>>> configs[1]=0x555b286c78f0(0x6f)
>>> configs[2]=0x555b286c8070(0x77)
>>> configs[3]=0x555b286c8430(0x7b)
>>> configs[4]=0x555b286c8d90(0x85)
>>> configs[5]=0x555b286c9510(0x8d)
>>> configs[6]=0x555b286c8e80(0x86)
>>> configs[7]=0x555b286c9600(0x8e)
>>> configs[8]=0x555b286c8160(0x78)
>>> configs[9]=0x555b286c8520(0x7c)
>>> configs[10]=0x555b286ccb70(0xc7)
>>> configs[11]=0x555b286ccf30(0xcb)
>>> configs[12]=0x555b286cd110(0xcd)
>>> configs[13]=0x555b286cd200(0xce) *nelements=14 ) 44.402122 ms
>>> [VGL 0x9f624780] glXGetFBConfigAttrib
>>> (dpy=0x555b28562740(:1) config=0x555b286c7170(0x67)
>>> attribute=2(0x2) *value=32(0x20) ) 0.003815 ms
>>> --
>>> You received this message because you are subscribed to the
>>> Google Groups "VirtualGL User Discussion/Support" group.
>>> To unsubscribe from this group and stop receiving emails
>>> from it, send an email to [email protected].
>>> To view this discussion on the web visit
>>>
>>> https://groups.google.com/d/msgid/virtualgl-users/ada84490-cfbe-41c7-8919-c0f00241ba82%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/virtualgl-users/ada84490-cfbe-41c7-8919-c0f00241ba82%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the
>> Google Groups "VirtualGL User Discussion/Support" group.
>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to [email protected] <javascript:>.
>> To view this discussion on the web visit
>>
>> https://groups.google.com/d/msgid/virtualgl-users/f462fa23-9363-43f1-9001-ced5eae3f925%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/virtualgl-users/f462fa23-9363-43f1-9001-ced5eae3f925%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "VirtualGL User Discussion/Support" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/virtualgl-users/bd7beb3a-2cfe-4f2b-8440-4ddd2dd812a8%40googlegroups.com
> <https://groups.google.com/d/msgid/virtualgl-users/bd7beb3a-2cfe-4f2b-8440-4ddd2dd812a8%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"VirtualGL User Discussion/Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/virtualgl-users/caae173b-7e2a-b246-b65e-3175c9c4b7b9%40virtualgl.org.