VirtualGL blank screen issues

Forum / NoMachine for Linux / VirtualGL blank screen issues

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #26696
    sshaikh
    Participant

    1) My host is running the P4600 IGD with Plasma DE but with no Display Manager. When I start up the DE with startx it successfully loads the driver and I get an expected result from glmark2 etc.

    2) When accessing the machine via NoMachine, I see the Plasma desktop but llvmpipe is used for rendering. This results in bad performance (expected as I understand it’s a SW renderer).

    3) I followed this article to enable virtualGL: https://www.nomachine.com/AR05P00982

    a) With /etc/NX/nxserver –virtualgl no, the /usr/NX/scripts/vgl/vglrun command runs applications but with worse performance than the results with llvmpipe in 2).

    b) With /etc/NX/nxserver –virtualgl yes, I get a blank screen and the desktop doesn’t render. Strangely if I start a desktop on the host I start seeing a weird broken and unusable desktop via nomachine.

    4) I followed this article to troubleshoot https://www.nomachine.com/de/AR04Q01024

    This suggests that I should have an Xorg session running. I don’t. So I installed SDDM.

    Now when I log in via NoMachine I get the SDDM login, and Plasma loads. However this appears to be mirroring my monitor (and I cannot change the resolution for example). On the bright side, I now see full IGD performance.

    But then I run sudo /etc/NX/nxserver –virtualgl-uninstall and notice that this changes nothing. I conclude that I am using some kind of screen mirroring mode instead of a genuine nomachine remote session mode as before and this isn’t the more desirable solution using virtualGL.

    5) So my actual question is: how can I use VirtualGL successfully with a remote session (ie fix the blank screen in 3b above). How can I diagnose the issue?

    #26721
    sshaikh
    Participant
    
    [me@studio ~]$ /usr/NX/scripts/vgl/vglrun -d :1001 +tr +v glxgears
    [VGL] Shared memory segment ID for vglconfig: 262198
    [VGL] VirtualGL v2.6.3 64-bit (Build 20191213)
    [VGL 0x3abdeb80] XOpenDisplay (name=NULL dpy=0x55fee4ccad90(:1001) ) 0.706911 ms
    [VGL 0x3abdeb80] glXChooseVisual (dpy=0x55fee4ccad90(:1001) screen=0 attrib_list=[0x0004 0x0005 0x0008=0x0001 0x0009=0x0001 0x000a=0x0001 0x000c=0x0001 ] glxattribs=[0x000c=0x0001 0x0005=0x0001 0x0008=0x0001 0x>
    [VGL] dlopen (filename=libGLX_indirect.so.0 flag=1 retval=0x55fee4ce7670)
    [VGL] dlopen (filename=libGLX_mesa.so.0 flag=258 retval=0x55fee4ce7670)
    [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=0x55fee4cf8c00)
    [VGL] dlopen (filename=libGLX_mesa.so.0 flag=258 retval=0x55fee4ce7670)
    [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=0x55fee4cf8c00)
    vis=0x55fee4cf3700(0xc4) config=0x55fee4d69be0(0x7e) ) 68.446159 ms
    [VGL 0x3abdeb80] XCreateWindow (dpy=0x55fee4ccad90(:1001) parent=0x00000103 x=0 y=0 width=300 height=300 depth=24 c_class=1 visual=0x55fee4cd67c0(0xc4) win=0x03c00002 ) 0.005007 ms
    [VGL 0x3abdeb80] glXCreateContext (dpy=0x55fee4ccad90(:1001) vis=0x55fee4cf3700(0xc4) share_list=0x00000000 direct=1 config=0x55fee4d69be0(0x7e) ctx=0x55fee4cf8500 ) 3.818989 ms
    [VGL 0x3abdeb80] glXMakeCurrent (dpy=0x55fee4ccad90(:1001) drawable=0x03c00002 ctx=0x55fee4cf8500 [VGL] Using Pbuffers for rendering
    config=0x55fee4d69be0(0x7e) drawable=0x03e00002 renderer=llvmpipe (LLVM 9.0.1, 256 bits) ) 13.949871 ms
    [VGL 0x3abdeb80] glXQueryDrawable (dpy=0x55fee4ccad90(:1001) draw=0x03c00002 attribute=8433(0x20f1) ServerDrawable(dpy, draw)=0x03e00002 *value=0(0x) ) 0.000000 ms
    [VGL 0x3abdeb80] glViewport (x=0 y=0 width=300 height=300 ) 0.013113 ms
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL] dlopen (filename=NULL flag=257 retval=0x7f623b7f7120)
    [VGL 0x3abdeb80] glXSwapBuffers (dpy=0x55fee4ccad90(:1001) drawable=0x03c00002
    [VGL 0x3abdeb80]   XOpenDisplay (name=:1001 dpy=0x55fee5052080(:1001) ) 1.672983 ms
    [VGL 0x3abdeb80]
    [VGL 0x3abdeb80]   XQueryExtension (dpy=0x55fee5052080(:1001) name=MIT-SHM *major_opcode=130 *first_event=65 *first_error=128 ) 0.092983 ms
    [VGL 0x3abdeb80]
    [VGL 0x3abdeb80]   XQueryExtension (dpy=0x55fee5052080(:1001) name=Generic Event Extension *major_opcode=128 *first_event=0 *first_error=0 ) 0.133991 ms
    [VGL 0x3abdeb80] [VGL] Using pixel buffer objects for readback (BGR --> BGRA)
    vw->getGLXDrawable()=0x03e00002 ) 15.404940 ms
    [VGL 0x3abdeb80] XGetGeometry (dpy=0x55fee4cd7560(:1001) drawable=0x03e00003 *root=0x00000103 *x=0 *y=0 width=300 height=300 *border_width=0 *depth=24 ) 0.095129 ms
    [VGL 0x3abdeb80] glXSwapBuffers (dpy=0x55fee4ccad90(:1001) drawable=0x03c00002 vw->getGLXDrawable()=0x03e00002 ) 1.187086 ms
    
    
    #26735
    graywolf
    Participant

    It looks you are using the free edition of NoMachine: it provides only desktop sharing that is what you refer as mirroring the screen. In that case, you don’t need VirtualGL (everything occurs on display :0, included the rendering) as display is GPU-accelerated.

    Without an X server running, NoMachine automatically creates a virtual display. You cannot accelerate that display by VirtualGL (it would need the X server to offload the OpenGL rendering). So that what you are trying is impossible with the free edition because the two things (virtual display session and GPU-accelerated X server) cannot exist at the same time.

    Another tip: command

    vglrun -d :1001 +tr +v glxgears

    does not look correct. Option -d select the Xserver you mean to use to offload the rendering, that is the physical display, usually :0.

    If you need to specify the display :1001 you should put it in the DISPLAY variable.

     

    #26736
    sshaikh
    Participant

    That’s great. Yes I am using the free edition and was beginning to suspect it was a limitation of that.

    I did try to find if this was case but wasn’t able to find an explicit explanation.

    #26740
    sshaikh
    Participant

    Is there a way to override the resolution of the shared desktop, or increase the number of monitors?

    I am only able to see a single 1280×1080 screen which of course doesn’t function very well on my guest widescreens.

    #26746
    graywolf
    Participant

    If you see that only one resolution is available it is possible that no screen is connected to the video card of the server.

    Look at Display Settings panel of your desktop. If you are running an nvidia card, nvidia-xconfig command could help to build a custom Xorg configuration.

     

    #26747
    sshaikh
    Participant

    To be clear, I have a low resolution screen connected by dsub. so I can choose the appropriate resolutions, but they’re not very good for my widescreen guests with multiple monitors.

    I did some more reading and dummy plugs appear to be the usual advice given so I’ll look at those.

Viewing 7 posts - 1 through 7 (of 7 total)

This topic was marked as solved, you can't post.