[Mesa-dev] Performance glxSwapBuffers 32 bit vs. 64 bit

Theiss, Ingo ingo.theiss at i-matrixx.de
Fri Nov 4 05:38:17 PDT 2011


Hi everyone,

this is my first post to a mailing list here at freedesktop.org and I hope this is the right place for my question/problem.

I am using VirtualGL (http://www.virtualgl.org) for full 3D hardware accelerated remote OpenGL applications with latest mesa from git (compiled for both 32 bit and 64 bit) on my 64 bit Debian Wheezy box.

When I run a 32 bit application with VirtualGL I suffer nearly 50% performance drop compared when running the same 64 bit application with virtualGL. In the first place I have contacted the VirtualGL developer and he said that the performance drop is not a VirtualGL problem but related to the underlying 3D driver. The performance drop seems related to the function glxSwapBuffers which can be seen in the function call tracing of VirtualGL:

64 bit application with VirtualGL
-------------------------------------
[VGL] glXSwapBuffers (dpy=0x00deb900(:0) drawable=0x00a00002 pbw->getglxdrawable()=0x00800002 ) 28.770924 ms
[VGL] glDrawBuffer (mode=0x00000405 pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.005960 ms
[VGL] glViewport (x=0 y=0 width=1240 height=900 ) 0.003099 ms
[VGL] glDrawBuffer (mode=0x00000405 pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.002861 ms
[VGL] glPopAttrib (pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.002861 ms
[VGL] glPopAttrib (pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.000000 ms
[VGL] glPopAttrib (pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.000954 ms
[VGL] glXSwapBuffers (dpy=0x00deb900(:0) drawable=0x00a00002 pbw->getglxdrawable()=0x00800002 ) 29.365063 ms
[VGL] glDrawBuffer (mode=0x00000405 pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.006914 ms

32 bit application with VirtualGL
-------------------------------------
[VGL] glXSwapBuffers (dpy=0x087f7458(:0.0) drawable=0x00a00002 pbw->getglxdrawable()=0x00800002 ) 65.419075 ms
[VGL] glDrawBuffer (mode=0x00000405 pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.005930 ms
[VGL] glViewport (x=0 y=0 width=1240 height=900 ) 0.003049 ms
[VGL] glDrawBuffer (mode=0x00000405 pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.002989 ms
[VGL] glPopAttrib (pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.004064 ms
[VGL] glPopAttrib (pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.001051 ms
[VGL] glPopAttrib (pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.001044 ms
[VGL] glXSwapBuffers (dpy=0x087f7458(:0.0) drawable=0x00a00002 pbw->getglxdrawable()=0x00800002 ) 65.005891 ms
[VGL] glDrawBuffer (mode=0x00000405 pbw->_dirty=0 pbw->_rdirty=0 pbw->getglxdrawable()=0x00800002 ) 0.004926 ms


Is this performance drop a normal or expected behaviour when running a 32 bit application on 64 bit OS or some kind of "bug"?

Please be kind with me as I am not a developer and hardly understand all the stuff you guys are doing.

Thanks for your time!

Regards,

Ingo



PS: Enclosed you will find the output from glxinfo.

64 bit glxinfo
---------------

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
server glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_SGI_make_current_read, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SUN_get_transparent_index, GLX_ARB_create_context
client glx vendor string: VirtualGL
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_SGI_make_current_read, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SUN_get_transparent_index, GLX_ARB_create_context
GLX version: 1.4
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_SGI_make_current_read, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SUN_get_transparent_index, GLX_ARB_create_context
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD BARTS
OpenGL version string: 2.1 Mesa 7.12-devel (git-9954a93)

32 bit glxinfo
---------------

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read, 
    GLX_SUN_get_transparent_index, 
client glx vendor string: VirtualGL
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read, 
    GLX_SUN_get_transparent_index, 
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read, 
    GLX_SUN_get_transparent_index, 
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD BARTS
OpenGL version string: 2.1 Mesa 7.12-devel (git-f800a29)
OpenGL shading language version string: 1.20




More information about the mesa-dev mailing list