Issue 477 in pyglet: vsync causes apps to run at 1/3 fps: glxext_arb.glXWaitVideoSyncSGI hangs

30 views
Skip to first unread message

codesite...@google.com

unread,
Mar 30, 2010, 8:36:08 PM3/30/10
to pyglet...@googlegroups.com
Status: New
Owner: ----

New issue 477 by philip.hazelden: vsync causes apps to run at 1/3 fps:
glxext_arb.glXWaitVideoSyncSGI hangs
http://code.google.com/p/pyglet/issues/detail?id=477

The following program:

import pyglet
window = pyglet.window.Window()
window.push_handlers(pyglet.window.event.WindowEventLogger())
#window.set_vsync(0)
pyglet.app.run()

Generates output at roughly 1/3 fps while constantly moving the mouse over
the window. (That is, it hangs for three seconds, prints all the events
that have built up, and hangs for another three seconds.) If I uncomment
the fourth line, output is produced in a steady stream.

By adding print statements to the pyglet source, I traced the hang to
XlibWindow.flip(), line 791/792 in window/xlib/__init__.py:
glxext_arb.glXWaitVideoSyncSGI(2, (count.value + 1) % 2, byref(count))

Manpage for this command:
http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=linux&db=man&fname=/usr/share/catman/man3G/glxwaitvideosyncsgi.3g.html
Changing the first argument to 1 causes the hang to go away, but I suspect
that isn't actually a fix.

The really weird thing is that when I first installed pyglet two days ago,
it worked fine. Then, an unknown number of hours later, it didn't. I don't
recall doing anything that would plausibly have caused it to break, and the
library which I believe provides this function (/usr/lib/libGL.so, which
has glXWaitVideoSyncSGI in its strings output) hasn't been modified since
october. So I have no idea what's going on there.
(Hmm, one possibility consistent with the data is that it works with an
external monitor. Unfortunately I don't have one to hand, so I can't test
that right now.)

Possibly this ought to go to someone further up the toolchain, but I don't
know who, and I'm not experiencing issues with anything other than pyglet.

I'm using an eee pc 901 running Gentoo linux, kernel 2.6.31.6 with some
patches from Gentoo upstream applied.

I don't have tools/gl_info.py in the source, but here's `python -m
pyglet.info`:
Python
------------------------------------------------------------------------------
sys.version: 2.6.4 (r264:75706, Mar 9 2010, 17:24:27)
[GCC 4.3.4]
sys.platform: linux2
os.getcwd(): /home/phil

pyglet
------------------------------------------------------------------------------
pyglet.version: 1.1.4
pyglet.__file__: /usr/lib/python2.6/site-packages/pyglet/__init__.pyc
pyglet.options['debug_trace_depth'] = 1
pyglet.options['font'] = ('gdiplus', 'win32')
pyglet.options['xsync'] = True
pyglet.options['debug_trace_flush'] = True
pyglet.options['debug_win32'] = False
pyglet.options['debug_gl_trace'] = False
pyglet.options['debug_x11'] = False
pyglet.options['shadow_window'] = True
pyglet.options['debug_font'] = False
pyglet.options['debug_media'] = False
pyglet.options['debug_trace'] = False
pyglet.options['debug_lib'] = False
pyglet.options['graphics_vbo'] = True
pyglet.options['vsync'] = None
pyglet.options['debug_trace_args'] = False
pyglet.options['debug_gl'] = True
pyglet.options['debug_graphics_batch'] = False
pyglet.options['audio'] = ('directsound', 'openal', 'alsa', 'silent')
pyglet.options['debug_texture'] = False
pyglet.options['debug_gl_trace_args'] = False

pyglet.window
------------------------------------------------------------------------------
platform: <pyglet.window.xlib.XlibPlatform object at 0x92c1ecc>
display: <pyglet.window.xlib.XlibDisplayDevice object at 0x92c1f6c>
screens[0]: XlibScreen(screen=0, x=0, y=0, width=1024, height=600,
xinerama=1)
config['double_buffer'] = 1
config['stereo'] = 0
config['buffer_size'] = 24
config['aux_buffers'] = 0
config['sample_buffers'] = 0
config['samples'] = 0
config['red_size'] = 8
config['green_size'] = 8
config['blue_size'] = 8
config['alpha_size'] = 0
config['depth_size'] = 24
config['stencil_size'] = 0
config['accum_red_size'] = 0
config['accum_green_size'] = 0
config['accum_blue_size'] = 0
config['accum_alpha_size'] = 0
context: XlibGLContext()

pyglet.gl.gl_info
------------------------------------------------------------------------------
gl_info.get_version(): 1.4 Mesa 7.5.2
gl_info.get_vendor(): Tungsten Graphics, Inc
gl_info.get_renderer(): Mesa DRI Intel(R) 945GME GEM 20090712 2009Q2 RC3
x86/MMX/SSE2
gl_info.get_extensions():
GL_3DFX_texture_compression_FXT1
GL_APPLE_client_storage
GL_APPLE_packed_pixels
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_fragment_program
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_pixel_buffer_object
GL_ARB_point_parameters
GL_ARB_shadow
GL_ARB_texture_border_clamp
GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_non_power_of_two
GL_ARB_texture_rectangle
GL_ARB_transpose_matrix
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_window_pos
GL_ATI_blend_equation_separate
GL_ATI_texture_env_combine3
GL_EXT_abgr
GL_EXT_bgra
GL_EXT_blend_color
GL_EXT_blend_equation_separate
GL_EXT_blend_func_separate
GL_EXT_blend_logic_op
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_compiled_vertex_array
GL_EXT_copy_texture
GL_EXT_cull_vertex
GL_EXT_draw_range_elements
GL_EXT_fog_coord
GL_EXT_framebuffer_blit
GL_EXT_framebuffer_object
GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil
GL_EXT_packed_pixels
GL_EXT_pixel_buffer_object
GL_EXT_point_parameters
GL_EXT_polygon_offset
GL_EXT_rescale_normal
GL_EXT_secondary_color
GL_EXT_separate_specular_color
GL_EXT_shadow_funcs
GL_EXT_stencil_wrap
GL_EXT_subtexture
GL_EXT_texture
GL_EXT_texture3D
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_add
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod_bias
GL_EXT_texture_object
GL_EXT_texture_rectangle
GL_EXT_vertex_array
GL_IBM_multimode_draw_arrays
GL_IBM_rasterpos_clip
GL_IBM_texture_mirrored_repeat
GL_INGR_blend_func_separate
GL_MESA_pack_invert
GL_MESA_window_pos
GL_MESA_ycbcr_texture
GL_NV_blend_square
GL_NV_light_max_exponent
GL_NV_point_sprite
GL_NV_texgen_reflection
GL_NV_texture_env_combine4
GL_NV_texture_rectangle
GL_NV_vertex_program
GL_NV_vertex_program1_1
GL_OES_read_format
GL_SGIS_generate_mipmap
GL_SGIS_texture_border_clamp
GL_SGIS_texture_edge_clamp
GL_SGIS_texture_lod
GL_SUN_multi_draw_arrays

pyglet.gl.glu_info
------------------------------------------------------------------------------
glu_info.get_version(): 1.3
glu_info.get_extensions():
GLU_EXT_nurbs_tessellator
GLU_EXT_object_space_tess

pyglet.gl.glx_info
------------------------------------------------------------------------------
context.is_direct(): 1
glx_info.get_server_vendor(): SGI
glx_info.get_server_version(): 1.2
glx_info.get_server_extensions():
GLX_ARB_multisample
GLX_EXT_import_context
GLX_EXT_texture_from_pixmap
GLX_EXT_visual_info
GLX_EXT_visual_rating
GLX_MESA_copy_sub_buffer
GLX_OML_swap_method
GLX_SGI_swap_control
GLX_SGIS_multisample
GLX_SGIX_fbconfig
GLX_SGIX_visual_select_group
glx_info.get_client_vendor(): SGI
glx_info.get_client_version(): 1.4
glx_info.get_client_extensions():
GLX_ARB_get_proc_address
GLX_ARB_multisample
GLX_EXT_import_context
GLX_EXT_visual_info
GLX_EXT_visual_rating
GLX_MESA_allocate_memory
GLX_MESA_copy_sub_buffer
GLX_MESA_swap_control
GLX_MESA_swap_frame_usage
GLX_OML_swap_method
GLX_OML_sync_control
GLX_SGI_make_current_read
GLX_SGI_swap_control
GLX_SGI_video_sync
GLX_SGIS_multisample
GLX_SGIX_fbconfig
GLX_SGIX_pbuffer
GLX_SGIX_visual_select_group
GLX_EXT_texture_from_pixmap
glx_info.get_extensions():
GLX_ARB_get_proc_address
GLX_ARB_multisample
GLX_EXT_import_context
GLX_EXT_visual_info
GLX_EXT_visual_rating
GLX_MESA_copy_sub_buffer
GLX_MESA_swap_frame_usage
GLX_OML_swap_method
GLX_SGI_video_sync
GLX_SGIS_multisample
GLX_SGIX_fbconfig
GLX_SGIX_visual_select_group
GLX_EXT_texture_from_pixmap

pyglet.media
------------------------------------------------------------------------------
driver: pyglet.media.drivers.openal

pyglet.media.avbin
------------------------------------------------------------------------------
AVbin not available.

pyglet.media.drivers.openal
------------------------------------------------------------------------------
Library: <CDLL 'libopenal.so', handle 9b6ebe8 at 9b38b8c>
Version: (1, 1)
Extensions:
ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE
ALC_EXT_disconnect ALC_EXT_EFX ALC_EXTX_thread_local_context

--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

Reply all
Reply to author
Forward
0 new messages