Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

virtualbox gl transparency crash with Fedora 19 x86 guest #488

Closed
totaam opened this issue Jan 9, 2014 · 14 comments
Closed

virtualbox gl transparency crash with Fedora 19 x86 guest #488

totaam opened this issue Jan 9, 2014 · 14 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Jan 9, 2014

Issue migrated from trac ticket # 488

component: client | priority: critical | resolution: fixed | keywords: gl virtualbox

2014-01-09 14:15:58: totaam created the issue


Crashes as soon as I launch [/browser/xpra/trunk/src/tests/xpra/test_apps/transparent_colors.py tests/xpra/test_apps/transparent_colors.py] or [/browser/xpra/trunk/src/tests/xpra/test_apps/transparent_window.py tests/xpra/test_apps/transparent_window.py]

gdb backtrace:

#0  0x410c8630 in gdk_x_error () from /lib/libgdk-x11-2.0.so.0
#1  0x4ccaf766 in _XError () from /lib/libX11.so.6
#2  0x4ccac3c6 in handle_error () from /lib/libX11.so.6
#3  0x4ccac48e in handle_response () from /lib/libX11.so.6
#4  0x4ccad520 in _XReply () from /lib/libX11.so.6
#5  0x4cc91624 in XGetGeometry () from /lib/libX11.so.6
#6  0xb730e631 in swrastGetDrawableInfo () from /lib/libGL.so.1
#7  0xb441dbcc in drisw_update_drawable_info () from /usr/lib/dri/swrast_dri.so
#8  0xb441d043 in dri_st_framebuffer_validate ()
   from /usr/lib/dri/swrast_dri.so
#9  0xb4260918 in st_framebuffer_validate () from /usr/lib/dri/swrast_dri.so
#10 0xb426133b in st_api_make_current () from /usr/lib/dri/swrast_dri.so
#11 0xb441c60b in dri_make_current () from /usr/lib/dri/swrast_dri.so
#12 0xb41216c1 in driBindContext () from /usr/lib/dri/swrast_dri.so
#13 0xb730e405 in drisw_bind_context () from /lib/libGL.so.1
#14 0xb72ea3dd in glXMakeCurrentReadSGI () from /lib/libGL.so.1
#15 0xb72ea554 in glXMakeCurrent () from /lib/libGL.so.1
#16 0xb496a06c in gdk_gl_window_impl_x11_make_context_current ()
   from /lib/libgdkglext-x11-1.0.so.0
#17 0xb494799d in gdk_gl_drawable_gl_begin ()
   from /lib/libgdkglext-x11-1.0.so.0
#18 0xb49c2091 in _wrap_gdk_gl_drawable_gl_begin ()
   from /usr/lib/python2.7/site-packages/gtk-2.0/gtk/gdkgl/_gdkgl.so

This follows an expose event (client debug all log):

2014-01-09 14:10:09,742 GLClientWindow(..)
2014-01-09 14:10:09,742 <class 'xpra.client.gl.gl_client_window.GLClientWindow'>\
    (<XpraClient object at 0x98ecbbc (xpra+client+gtk2+client+XpraClient at 0x961b710)>, \
     <gtk.gdk.Window object at 0x9d69cfc (GdkWindow at 0x9d990d8)>, 2, 0, 0, 320, 320, \
     {'size-constraints': {'minimum-size': (0, 0), 'base-size': (0, 0)}, 'fullscreen': False, \
      'has-alpha': True, 'xid': '0xa00004', 'title': 'transparent_colors.py', 'icon-title': \
      'transparent_colors.py', 'client-machine': 'localhost.localdomain', 'pid': 1967, \
      'group-leader-xid': 10485761, 'window-type': ('NORMAL',), 'modal': False, 'maximized': False, \
      'class-instance': ('transparent_colors.py', 'Transparent_colors.py')}, False, {}, 0)
2014-01-09 14:10:09,742 update_metadata({'size-constraints': {'minimum-size': (0, 0), \
    'base-size': (0, 0)}, 'fullscreen': False, 'has-alpha': True, 'xid': '0xa00004', \
    'title': 'transparent_colors.py', 'icon-title': 'transparent_colors.py', \
    'client-machine': 'localhost.localdomain', 'pid': 1967, 'group-leader-xid': 10485761, \
    'window-type': ('NORMAL',), 'modal': False, 'maximized': False, \
    'class-instance': ('transparent_colors.py', 'Transparent_colors.py')})
2014-01-09 14:10:09,745 set_modal(False) swallowed
2014-01-09 14:10:09,745 set_window_type(['NORMAL']) hints=0
2014-01-09 14:10:09,746 set_alpha() using rgba colormap for 2, realized=False
2014-01-09 14:10:09,749 set_fullscreen(False)
2014-01-09 14:10:09,749 make_new_backing(<class 'xpra.client.gl.gl_window_backing.GLPixmapBacking'>, 320, 320) \
    effective backing class=<class 'xpra.client.gl.gl_window_backing.GLPixmapBacking'>, alpha=True
2014-01-09 14:10:09,749 video decoders: {'h264': 'dec_avcodec', 'vp8': 'dec_vpx'}
2014-01-09 14:10:09,753 make_new_backing(<class 'xpra.client.gl.gl_window_backing.GLPixmapBacking'>, 320, 320) calling init
2014-01-09 14:10:09,812 all the existing windows and system trays have been received: 2 items
2014-01-09 14:10:09,846 window_state_updated(GLClientWindow(GLPixmapBacking(1, (499, 316), None)), \
    <gtk.gdk.Event at 0x9e807a0: GDK_WINDOW_STATE>) new_window_state=<flags 0 of type GdkWindowState>, fullscreen=False, maximized=False
2014-01-09 14:10:09,847 window_state_updated(GLClientWindow(GLPixmapBacking(2, (320, 320), None)), \
    <gtk.gdk.Event at 0x9e807a0: GDK_WINDOW_STATE>) new_window_state=<flags 0 of type GdkWindowState>, fullscreen=False, maximized=False
2014-01-09 14:10:09,852 XRootPropWatcher.do_xpra_property_notify_event(<AdHocStruct object, contents: \
    {'delivered_to': <gtk.gdk.Window object at 0x98ec144 (GdkWindow at 0x95fa038)>, \
     'send_event': 0, 'window': <gtk.gdk.Window object at 0x98ec144 (GdkWindow at 0x95fa038)>, \
     'atom': '_NET_CLIENT_LIST', 'serial': 557L, 'type': 28, \
     'display': <gtk.gdk.DisplayX11 object at 0xb6c19b94 (GdkDisplayX11 at 0x95f1008)>}>)
2014-01-09 14:10:09,853 XRootPropWatcher.do_xpra_property_notify_event(<AdHocStruct object, contents: \
     {'delivered_to': <gtk.gdk.Window object at 0x98ec144 (GdkWindow at 0x95fa038)>, \
      'send_event': 0, 'window': <gtk.gdk.Window object at 0x98ec144 (GdkWindow at 0x95fa038)>, \
      'atom': '_NET_CLIENT_LIST_STACKING', 'serial': 557L, 'type': 28, \
      'display': <gtk.gdk.DisplayX11 object at 0xb6c19b94 (GdkDisplayX11 at 0x95f1008)>}>)
2014-01-09 14:10:09,897 GLPixmapBacking(2, (320, 320), None).gl_expose_event(<DrawingArea object at 0x9d69eb4 \
    (GtkDrawingArea at 0x9bd0360)>, <gtk.gdk.Event at 0x9e807a0: GDK_EXPOSE area=[0, 0, 200, 200]>)
2014-01-09 14:10:09,902 GLPixmapBacking(2, (320, 320), None).gl_init() GL Pixmap backing size: 320 x 320, \
    drawable=<gtk.gdk.GLWindowImplX11 object at 0x9d69e64 (GdkGLWindowImplX11 at 0x9dac6a0)>
2014-01-09 14:10:09,903 GL Extension GL_GREMEDY_string_marker unavailable
2014-01-09 14:10:09,903 GL Extension GL_GREMEDY_frame_terminator unavailable
2014-01-09 14:10:09,904 GLPixmapBacking(2, (320, 320), None).gl_marker(Initializing GL context for window size 320 x 320)
2014-01-09 14:10:09,905 GLPixmapBacking(2, (320, 320), None).gl_init_textures() textures: [1 2 3 4 5], offscreen fbo: 1
2014-01-09 14:10:10,017 GLPixmapBacking(2, (320, 320), None).gl_marker(Presenting FBO on screen for drawable \
    <gtk.gdk.GLWindowImplX11 object at 0x9d69e64 (GdkGLWindowImplX11 at 0x9dac6a0)>)
2014-01-09 14:10:10,017 GLPixmapBacking(2, (320, 320), None).gl_marker(Switching to RGB paint state)
2014-01-09 14:10:10,416 GLPixmapBacking(2, (320, 320), None).gl_frame_terminator()
2014-01-09 14:10:10,416 GLPixmapBacking(2, (320, 320), None).gl_marker(Switching back to YUV paint state)
2014-01-09 14:10:10,420 GLPixmapBacking(2, (320, 320), None).present_fbo() done
2014-01-09 14:10:10,420 GLPixmapBacking(1, (499, 316), None).gl_expose_event(\
    <DrawingArea object at 0x9d69c84 (GtkDrawingArea at 0x9bd02e0)>, \
    <gtk.gdk.Event at 0x9e807a0: GDK_EXPOSE area=[0, 0, 200, 200]>)
 
(Xpra:8972): Gdk-ERROR **: The program 'Xpra' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 884 error_code 8 request_code 72 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Trace/breakpoint trap (core dumped)
@totaam
Copy link
Collaborator Author

totaam commented Jan 9, 2014

2014-01-09 14:24:30: totaam changed status from new to assigned

@totaam
Copy link
Collaborator Author

totaam commented Jan 9, 2014

2014-01-09 14:24:30: totaam changed owner from antoine to totaam

@totaam
Copy link
Collaborator Author

totaam commented Jan 9, 2014

2014-01-09 14:24:30: totaam edited the issue description

@totaam
Copy link
Collaborator Author

totaam commented Jan 9, 2014

2014-01-09 14:40:28: totaam commented


Re-built virtualbox X11 modules and rebooted (thinking it might be an out of date acceleration kernel module), and now the crash occurs with a simple xterm:

xpra client version 0.11.0
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
OpenGL Warning: glFlushVertexArrayRangeNV not found in mesa table
OpenGL Warning: glVertexArrayRangeNV not found in mesa table
OpenGL Warning: glCombinerInputNV not found in mesa table
OpenGL Warning: glCombinerOutputNV not found in mesa table
OpenGL Warning: glCombinerParameterfNV not found in mesa table
OpenGL Warning: glCombinerParameterfvNV not found in mesa table
OpenGL Warning: glCombinerParameteriNV not found in mesa table
OpenGL Warning: glCombinerParameterivNV not found in mesa table
OpenGL Warning: glFinalCombinerInputNV not found in mesa table
OpenGL Warning: glGetCombinerInputParameterfvNV not found in mesa table
OpenGL Warning: glGetCombinerInputParameterivNV not found in mesa table
OpenGL Warning: glGetCombinerOutputParameterfvNV not found in mesa table
OpenGL Warning: glGetCombinerOutputParameterivNV not found in mesa table
OpenGL Warning: glGetFinalCombinerInputParameterfvNV not found in mesa table
OpenGL Warning: glGetFinalCombinerInputParameterivNV not found in mesa table
OpenGL Warning: glDeleteFencesNV not found in mesa table
OpenGL Warning: glFinishFenceNV not found in mesa table
OpenGL Warning: glGenFencesNV not found in mesa table
OpenGL Warning: glGetFenceivNV not found in mesa table
OpenGL Warning: glIsFenceNV not found in mesa table
OpenGL Warning: glSetFenceNV not found in mesa table
OpenGL Warning: glTestFenceNV not found in mesa table
OpenGL Warning: Unimplemented glxMakeCurrent call with GLXPixmap passed, unexpected things might happen.
 
(Xpra:2107): Gdk-ERROR **: The program 'Xpra' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
  (Details: serial 202 error_code 3 request_code 40 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Trace/breakpoint trap (core dumped)

This belongs in 0.11: we need a way of detecting virtualbox and/or broken 3D drivers and fallback to the pixmap backing. (as we already do on win32 when we detect the virtualbox DLL)

@totaam
Copy link
Collaborator Author

totaam commented Jan 9, 2014

2014-01-09 15:35:42: totaam commented


r5156 changes the way we detect OpenGL on all platforms (see commit message for details), so we now avoid this crash. But I don't like it.

Maybe something like this would do the job?:

widget = some.widget()
gtk.gtkgl.widget_set_gl_capability(widget, config)
widget.realize()
drawable = gtk.gtkgl.widget_get_gl_drawable(widget)

Keeping this ticket open so I can try to find a better way.

@totaam
Copy link
Collaborator Author

totaam commented Jan 10, 2014

2014-01-10 09:10:55: totaam changed status from assigned to new

@totaam
Copy link
Collaborator Author

totaam commented Jan 10, 2014

2014-01-10 09:10:55: totaam changed owner from totaam to afarr

@totaam
Copy link
Collaborator Author

totaam commented Jan 10, 2014

2014-01-10 09:10:55: totaam commented


Please see commit message for r5161

Please verify that the client still works ok:

  • Fedora 19 in virtualbox - the client should no longer crash (previously, it may not have crashed on all combinations of host OS / GPU, versions, etc.. ) and GL should be disabled since we blacklist the virtualbox driver
  • MS Windows clients: GL should be enabled (I am unable to test with virtualbox - we disable GL when we detect virtualbox)
  • OSX clients: GL should be enabled (I am unable to test as my VM does not have GL acceleration)

@totaam
Copy link
Collaborator Author

totaam commented Jan 29, 2014

2014-01-29 11:17:17: smo commented


Tried with fedora 19 in virtualbox here is the output of gl_check.py as requested

2014-01-29 03:06:37,385 importing ('do_init',) from xpra.platform.xposix (required=True)
2014-01-29 03:06:37,386 do_init=<function do_init at 0x257a938>
2014-01-29 03:06:37,413 importing ('get_app_dir', 'get_icon_dir') from xpra.platform.xposix.paths (required=True)
2014-01-29 03:06:37,413 get_app_dir=<function get_app_dir at 0x2611500>
2014-01-29 03:06:37,413 get_icon_dir=<function get_icon_dir at 0x2611578>
2014-01-29 03:06:37,413 importing ('get_default_conf_dir', 'get_default_socket_dir') from xpra.platform.xposix.paths (required=False)
2014-01-29 03:06:37,414 get_default_conf_dir=<function get_default_conf_dir at 0x2611050> (unchanged)
2014-01-29 03:06:37,414 get_default_socket_dir=<function get_default_socket_dir at 0x26110c8> (unchanged)
2014-01-29 03:06:37,499 pygdkglext version=(1, 1, 0)
2014-01-29 03:06:37,509 pygdkglext OpenGL version=(1, 4)
2014-01-29 03:06:37,510 GL props={'pygdkglext_version': (1, 1, 0), 'has_alpha': True, 'gdkgl_version': (1, 4), 'rgba': True, 'display_mode': ['ALPHA', 'SINGLE'], 'glconfig': <gtk.gdkgl.Config object at 0x29bb7d0 (GdkGLConfigImplX11 at 0x2a4b120)>}
2014-01-29 03:06:37,594 No OpenGL_accelerate module loaded: No module named OpenGL_accelerate
2014-01-29 03:06:37,706 Unable to load registered array format handler vbo:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/OpenGL/arrays/formathandler.py", line 35, in loadPlugin
    plugin_class = entrypoint.load()
  File "/usr/lib/python2.7/site-packages/OpenGL/plugins.py", line 14, in load
    return importByName( self.import_path )
  File "/usr/lib/python2.7/site-packages/OpenGL/plugins.py", line 28, in importByName
    module = __import__( ".".join(moduleName), {}, {}, moduleName)
  File "/usr/lib/python2.7/site-packages/OpenGL/arrays/vbo.py", line 33, in <module>
    from OpenGL import GL
ImportError: cannot import name GL

2014-01-29 03:06:37,706 Unable to load registered array format handler vbooffset:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/OpenGL/arrays/formathandler.py", line 35, in loadPlugin
    plugin_class = entrypoint.load()
  File "/usr/lib/python2.7/site-packages/OpenGL/plugins.py", line 14, in load
    return importByName( self.import_path )
  File "/usr/lib/python2.7/site-packages/OpenGL/plugins.py", line 28, in importByName
    module = __import__( ".".join(moduleName), {}, {}, moduleName)
  File "/usr/lib/python2.7/site-packages/OpenGL/arrays/vbo.py", line 33, in <module>
    from OpenGL import GL
ImportError: cannot import name GL

2014-01-29 03:06:37,768 OpenGL Version: 2.1 Mesa 9.2.5
2014-01-29 03:06:37,830 GL Extension GL_ARB_shader_objects available
2014-01-29 03:06:37,839 GL Extension GL_ARB_vertex_array_object available
2014-01-29 03:06:37,841 GL Extension GL_ARB_texture_buffer_object unavailable
2014-01-29 03:06:37,843 GL Extension GL_ARB_framebuffer_object available
2014-01-29 03:06:37,847 GL Extension GL_ARB_map_buffer_range available
2014-01-29 03:06:37,849 GL Extension GL_ARB_copy_buffer available
2014-01-29 03:06:37,850 GL Extension GL_ARB_uniform_buffer_object available
2014-01-29 03:06:37,853 GL Extension GL_ARB_draw_elements_base_vertex available
2014-01-29 03:06:37,854 GL Extension GL_ARB_provoking_vertex available
2014-01-29 03:06:37,854 GL Extension GL_ARB_sync available
2014-01-29 03:06:37,857 GL Extension GL_ARB_texture_multisample unavailable
2014-01-29 03:06:37,858 GL Extension GL_ARB_blend_func_extended available
2014-01-29 03:06:37,858 GL Extension GL_ARB_sampler_objects available
2014-01-29 03:06:37,862 GL Extension GL_ARB_timer_query available
2014-01-29 03:06:37,864 GL Extension GL_ARB_vertex_type_2_10_10_10_rev available
2014-01-29 03:06:37,869 GL Extension GL_ARB_draw_indirect unavailable
2014-01-29 03:06:37,870 GL Extension GL_ARB_gpu_shader_fp64 unavailable
2014-01-29 03:06:37,872 GL Extension GL_ARB_shader_subroutine unavailable
2014-01-29 03:06:37,873 GL Extension GL_ARB_tessellation_shader unavailable
2014-01-29 03:06:37,874 GL Extension GL_ARB_transform_feedback2 available
2014-01-29 03:06:37,876 GL Extension GL_ARB_transform_feedback3 available
2014-01-29 03:06:37,877 GL Extension GL_ARB_ES2_compatibility available
2014-01-29 03:06:37,878 GL Extension GL_ARB_get_program_binary available
2014-01-29 03:06:37,879 GL Extension GL_ARB_separate_shader_objects unavailable
2014-01-29 03:06:37,884 GL Extension GL_ARB_vertex_attrib_64bit unavailable
2014-01-29 03:06:37,885 GL Extension GL_ARB_viewport_array unavailable
2014-01-29 03:06:37,887 GL Extension GL_ARB_base_instance unavailable
2014-01-29 03:06:37,887 GL Extension GL_ARB_transform_feedback_instanced available
2014-01-29 03:06:37,888 GL Extension GL_ARB_internalformat_query available
2014-01-29 03:06:37,890 GL Extension GL_ARB_shader_atomic_counters unavailable
2014-01-29 03:06:37,891 GL Extension GL_ARB_shader_image_load_store unavailable
2014-01-29 03:06:37,892 GL Extension GL_ARB_texture_storage available
2014-01-29 03:06:37,894 GL Extension GL_ARB_clear_buffer_object unavailable
2014-01-29 03:06:37,895 GL Extension GL_ARB_compute_shader unavailable
2014-01-29 03:06:37,895 GL Extension GL_ARB_copy_image unavailable
2014-01-29 03:06:37,897 GL Extension GL_KHR_debug unavailable
2014-01-29 03:06:37,901 GL Extension GL_ARB_framebuffer_no_attachments unavailable
2014-01-29 03:06:37,902 GL Extension GL_ARB_internalformat_query2 unavailable
2014-01-29 03:06:37,903 GL Extension GL_ARB_invalidate_subdata available
2014-01-29 03:06:37,905 GL Extension GL_ARB_multi_draw_indirect unavailable
2014-01-29 03:06:37,906 GL Extension GL_ARB_program_interface_query unavailable
2014-01-29 03:06:37,907 GL Extension GL_ARB_shader_storage_buffer_object unavailable
2014-01-29 03:06:37,908 GL Extension GL_ARB_texture_buffer_range unavailable
2014-01-29 03:06:37,908 GL Extension GL_ARB_texture_storage_multisample unavailable
2014-01-29 03:06:37,909 GL Extension GL_ARB_texture_view unavailable
2014-01-29 03:06:37,910 GL Extension GL_ARB_vertex_attrib_binding unavailable
2014-01-29 03:06:37,913 found valid OpenGL version: 2.1
2014-01-29 03:06:37,913 OpenGL extensions found: GL_ARB_multisample, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_copy_texture, GL_EXT_polygon_offset, GL_EXT_subtexture, GL_EXT_texture_object, GL_EXT_vertex_array, GL_EXT_compiled_vertex_array, GL_EXT_texture, GL_EXT_texture3D, GL_IBM_rasterpos_clip, GL_ARB_point_parameters, GL_EXT_draw_range_elements, GL_EXT_packed_pixels, GL_EXT_point_parameters, GL_EXT_rescale_normal, GL_EXT_separate_specular_color, GL_EXT_texture_edge_clamp, GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_ARB_framebuffer_sRGB, GL_ARB_multitexture, GL_EXT_framebuffer_sRGB, GL_IBM_multimode_draw_arrays, GL_IBM_texture_mirrored_repeat, GL_ARB_texture_cube_map, GL_ARB_texture_env_add, GL_ARB_transpose_matrix, GL_EXT_blend_func_separate, GL_EXT_fog_coord, GL_EXT_multi_draw_arrays, GL_EXT_secondary_color, GL_EXT_texture_env_add, GL_EXT_texture_lod_bias, GL_INGR_blend_func_separate, GL_NV_blend_square, GL_NV_light_max_exponent, GL_NV_texgen_reflection, GL_NV_texture_env_combine4, GL_SUN_multi_draw_arrays, GL_ARB_texture_border_clamp, GL_ARB_texture_compression, GL_EXT_framebuffer_object, GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, GL_MESA_window_pos, GL_NV_packed_depth_stencil, GL_NV_texture_rectangle, GL_ARB_depth_texture, GL_ARB_occlusion_query, GL_ARB_shadow, GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat, GL_ARB_window_pos, GL_EXT_stencil_two_side, GL_EXT_texture_cube_map, GL_NV_fog_distance, GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object, GL_ARB_draw_buffers, GL_ARB_fragment_program, GL_ARB_fragment_shader, GL_ARB_shader_objects, GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ATI_draw_buffers, GL_ATI_texture_env_combine3, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_NV_primitive_restart, GL_ARB_fragment_program_shadow, GL_ARB_half_float_pixel, GL_ARB_occlusion_query2, GL_ARB_point_sprite, GL_ARB_shading_language_100, GL_ARB_sync, GL_ARB_texture_non_power_of_two, GL_ARB_vertex_buffer_object, GL_ATI_blend_equation_separate, GL_EXT_blend_equation_separate, GL_OES_read_format, GL_ARB_color_buffer_float, GL_ARB_pixel_buffer_object, GL_ARB_texture_compression_rgtc, GL_ARB_texture_rectangle, GL_ATI_texture_compression_3dc, GL_EXT_packed_float, GL_EXT_pixel_buffer_object, GL_EXT_texture_compression_rgtc, GL_EXT_texture_mirror_clamp, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_texture_shared_exponent, GL_ARB_framebuffer_object, GL_EXT_framebuffer_blit, GL_EXT_packed_depth_stencil, GL_ARB_vertex_array_object, GL_ATI_separate_stencil, GL_ATI_texture_mirror_once, GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_gpu_program_parameters, GL_EXT_texture_array, GL_EXT_texture_compression_latc, GL_EXT_texture_integer, GL_EXT_texture_sRGB_decode, GL_EXT_timer_query, GL_OES_EGL_image, GL_MESA_texture_array, GL_ARB_copy_buffer, GL_ARB_depth_buffer_float, GL_ARB_draw_instanced, GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, GL_ARB_map_buffer_range, GL_ARB_texture_rg, GL_ARB_texture_swizzle, GL_ARB_vertex_array_bgra, GL_EXT_texture_swizzle, GL_EXT_vertex_array_bgra, GL_NV_conditional_render, GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, GL_ARB_ES2_compatibility, GL_ARB_blend_func_extended, GL_ARB_debug_output, GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions, GL_ARB_provoking_vertex, GL_ARB_sampler_objects, GL_ARB_shader_texture_lod, GL_ARB_texture_rgb10_a2ui, GL_ARB_uniform_buffer_object, GL_ARB_vertex_type_2_10_10_10_rev, GL_EXT_provoking_vertex, GL_EXT_texture_snorm, GL_MESA_texture_signed_rgba, GL_ARB_get_program_binary, GL_ARB_robustness, GL_ARB_shader_bit_encoding, GL_ARB_timer_query, GL_ARB_transform_feedback2, GL_ARB_transform_feedback3, GL_ARB_conservative_depth, GL_ARB_internalformat_query, GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, GL_ARB_texture_storage, GL_ARB_transform_feedback_instanced, GL_EXT_transform_feedback, GL_ARB_invalidate_subdata, 
2014-01-29 03:06:37,913 found the following array handlers: set([<OpenGL.arrays.strings.UnicodeHandler object at 0x2ce4a10>, <OpenGL.arrays.numeric.NumericHandler object at 0x2cf5450>, <OpenGL.arrays.nones.NoneHandler object at 0x2ce4410>, <OpenGL.arrays.numbers.NumberHandler object at 0x2cec210>, <OpenGL.arrays.strings.StringHandler object at 0x2ce4710>, <OpenGL.arrays.numpymodule.NumpyHandler object at 0x2cf5410>, <OpenGL.arrays.ctypespointers.CtypesPointerHandler object at 0x2cf51d0>, <OpenGL.arrays.ctypesparameters.CtypesParameterHandler object at 0x2cecf10>, <OpenGL.arrays.ctypesarrays.CtypesArrayHandler object at 0x2cec590>, <OpenGL.arrays.lists.ListHandler object at 0x2cec1d0>])
2014-01-29 03:06:37,913 vendor: VMware, Inc.
2014-01-29 03:06:37,913 renderer: Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits)
2014-01-29 03:06:37,913 shading language version: 1.30
2014-01-29 03:06:37,931 GLU extensions: GLU_EXT_nurbs_tessellator GLU_EXT_object_space_tess 
2014-01-29 03:06:37,932 GLU version: 1.3
2014-01-29 03:06:37,932 All the required OpenGL functions are available: glActiveTexture, glTexSubImage2D, glTexCoord2i, glViewport, glMatrixMode, glLoadIdentity, glOrtho, glEnableClientState, glGenTextures, glDisable, glBindTexture, glPixelStorei, glEnable, glBegin, glFlush, glTexParameteri, glTexImage2D, glMultiTexCoord2i, glVertex2i, glEnd 
2014-01-29 03:06:37,932 All the required OpenGL functions are available: GL_FRAMEBUFFER (0x8D40), GL_COLOR_ATTACHMENT0 (0x8CE0), glGenFramebuffers, glBindFramebuffer, glFramebufferTexture2D 
2014-01-29 03:06:37,932 Extension GL_ARB_texture_rectangle is present
2014-01-29 03:06:37,932 Extension GL_ARB_vertex_program is present
2014-01-29 03:06:37,933 GL Extension GL_ARB_fragment_program available
2014-01-29 03:06:37,933 glInitFragmentProgramARB works
2014-01-29 03:06:37,933 GL Extension GL_ARB_texture_rectangle available
2014-01-29 03:06:37,933 glInitTextureRectangleARB works
2014-01-29 03:06:37,935 GL Extension GL_ARB_vertex_program available
2014-01-29 03:06:37,943 All the required OpenGL functions are available: glGenProgramsARB, glDeleteProgramsARB, glBindProgramARB, glProgramStringARB 
2014-01-29 03:06:37,943 Texture size GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB=8192, GL_MAX_TEXTURE_SIZE=8192

@totaam
Copy link
Collaborator Author

totaam commented Jan 29, 2014

2014-01-29 19:48:37: smo commented


OpenGL seems to be working with some applications but with transparency it is failing.

Both test applications crash the client. Works fine with opengl=off. So I guess it might be a good idea to blacklist opengl with VMware driver as well?

@totaam
Copy link
Collaborator Author

totaam commented Jan 29, 2014

2014-01-29 19:51:44: afarr commented


OSX and Win clients, with opengl enabled, running on hardware, both work fine with the transparent_colors.py.

@totaam
Copy link
Collaborator Author

totaam commented Jan 30, 2014

2014-01-30 04:44:15: totaam changed status from new to closed

@totaam
Copy link
Collaborator Author

totaam commented Jan 30, 2014

2014-01-30 04:44:15: totaam changed resolution from ** to fixed

@totaam
Copy link
Collaborator Author

totaam commented Jan 30, 2014

2014-01-30 04:44:15: totaam commented


Damn, I get this unhelpful GDB backtrace on Fedora 20:

Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000380b6504e9 in g_logv () from /lib64/libglib-2.0.so.0
(gdb) bt
#0  0x000000380b6504e9 in g_logv () from /lib64/libglib-2.0.so.0
#1  0x000000380b65063f in g_log () from /lib64/libglib-2.0.so.0
#2  0x0000003cb506866b in gdk_x_error () from /lib64/libgdk-x11-2.0.so.0
#3  0x0000003ac88450bb in _XError () from /lib64/libX11.so.6
#4  0x0000003ac88420b7 in handle_error () from /lib64/libX11.so.6
#5  0x0000003ac8842175 in handle_response () from /lib64/libX11.so.6
#6  0x0000003ac8842b25 in _XEventsQueued () from /lib64/libX11.so.6
#7  0x0000003ac882459a in XFlush () from /lib64/libX11.so.6
#8  0x0000003cb50414a0 in gdk_window_process_all_updates ()
   from /lib64/libgdk-x11-2.0.so.0
#9  0x0000003cb5041549 in gdk_window_update_idle ()
   from /lib64/libgdk-x11-2.0.so.0
#10 0x0000003cb501ec57 in gdk_threads_dispatch ()
   from /lib64/libgdk-x11-2.0.so.0
#11 0x000000380b6492a6 in g_main_context_dispatch ()
   from /lib64/libglib-2.0.so.0
#12 0x000000380b649628 in g_main_context_iterate.isra.24 ()
   from /lib64/libglib-2.0.so.0
#13 0x000000380b649a3a in g_main_loop_run () from /lib64/libglib-2.0.so.0
#14 0x0000003cb4945c27 in gtk_main () from /lib64/libgtk-x11-2.0.so.0
#15 0x00007fffed8ab847 in _wrap_gtk_main ()
   from /usr/lib64/python2.7/site-packages/gtk-2.0/gtk/_gtk.so
#16 0x00000030f38e0ac0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#17 0x00000030f38e0a40 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#18 0x00000030f38e0a40 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#19 0x00000030f38e0a40 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#20 0x00000030f38e0a40 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#21 0x00000030f38e229d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#22 0x00000030f38e094f in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#23 0x00000030f38e0a40 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#24 0x00000030f38e0a40 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#25 0x00000030f38e229d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#26 0x00000030f38e23a2 in PyEval_EvalCode () from /lib64/libpython2.7.so.1.0
#27 0x00000030f38fb7ef in ?? () from /lib64/libpython2.7.so.1.0
#28 0x00000030f38fc9ae in PyRun_FileExFlags () from /lib64/libpython2.7.so.1.0
#29 0x00000030f38fdc39 in PyRun_SimpleFileExFlags ()
   from /lib64/libpython2.7.so.1.0
#30 0x00000030f390ec4f in Py_Main () from /lib64/libpython2.7.so.1.0
#31 0x0000003ac4021d65 in __libc_start_main () from /lib64/libc.so.6
#32 0x0000000000400721 in _start ()

And with r5311, we get more readable GL property logging:

OpenGL properties:
  pygdkglext_version       : (1, 1, 0)
  has_alpha                : True
  vendor                   : VMware, Inc.
  gdkgl_version            : (1, 4)
  shading language version : 1.30
  opengl                   : (2, 1)
  GLU extensions           : GLU_EXT_nurbs_tessellator GLU_EXT_object_space_tess 
  renderer                 : Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits)
  rgba                     : True
  display_mode             : ['ALPHA', 'SINGLE']
  pyopengl                 : 3.0.2
  glconfig                 : <gtk.gdkgl.Config object at 0x1343cd0 (GdkGLConfigImplX11 at 0x1405b60)>
  GLU version              : 1.3

r5313 + r5314 blacklist the vmware driver.
r5315 improves gl probing error messages so we can see it blacklisted more clearly:

OpenGL errors:
  vendor 'VMware, Inc.' is blacklisted!

OpenGL properties:
  ...

Tested on Fedora 19 and Fedora 20, closing. Will backport to v0.11.x

Notes:

  • Are we blacklisting too many drivers by blacklisting by vendor?
  • Some of my Fedora virtual machines use Humper as driver, others VMware... (probably because of installation time driver detection?)
  • On a Fedora 19 x86 virtual machine which uses Humper, the gl check crashes after probing on exit (probably garbage collection related)
  • if someone finds instances of the vmware driver working properly (maybe under vmware?), then we may want to look at differentiating these instances from the virtualbox driver (not sure how..)
  • we will get more testing on the GL / rgb / alpha codepaths in small tooltip windows have transparency issues #500

@totaam totaam closed this as completed Jan 30, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant