gl4es icon indicating copy to clipboard operation
gl4es copied to clipboard

No thread safety

Open Icenowy opened this issue 8 years ago • 1 comments

I tested the thread safety of gl4es with glthreads program in the mesa-demos package.

It hangs.

icenowy@x220i [ gl4es@master ] $ LD_LIBRARY_PATH=~/git-repos/gl4es/build/lib LIBGL_ES=2 glthreads 
LIBGL: Initialising gl4es
LIBGL: v1.0.2 built on Oct 22 2017 19:23:58
LIBGL: Using GLES 2.0 backend
LIBGL:loaded: libGLESv2.so
LIBGL:loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
LIBGL: Extension GL_EXT_blend_minmax detected and used
LIBGL: Extension glBlendColor found and used
LIBGL: Extension GL_OES_element_index_uint detected
LIBGL: FBO are in core, and so used
LIBGL: Extension GL_OES_packed_depth_stencil detected and used
LIBGL: Extension GL_OES_depth24 detected and used
LIBGL: Extension GL_OES_rgb8_rgba8 detected and used
LIBGL: Extension GL_EXT_multi_draw_arrays detected and used
LIBGL: Extension GL_EXT_texture_format_BGRA8888 detected and used
LIBGL: Extension GL_OES_depth_texture detected and used
LIBGL: Extension GL_EXT_texture_rg detected
LIBGL: Extension GL_OES_texture_float detected
LIBGL: Extension GL_EXT_frag_depth detected and used
LIBGL: Max vertex attrib: 16
LIBGL: Max texture size: 8192
LIBGL: Texture Units: 8(8), Max lights: 8, Max planes: 6
LIBGL: Implementation Read is GL_BGRA/GL_UNSIGNED_BYTE
LIBGL: Targeting OpenGL 2.0
LIBGL: Current folder is:/home/icenowy/git-repos/gl4es
glthreads: test of GL thread safety (any key = exit)
Usage:
  glthreads [options]
Options:
   -display DISPLAYNAME  Specify display string
   -n NUMTHREADS  Number of threads to create
   -p  Use a separate display connection for each thread
   -l  Use application-side locking
   -t  Enable texturing
Keyboard:
   Esc  Exit
   t    Change texture image (requires -t option)
   a    Toggle animation
   s    Step rotation (when not animating)
glthreads: No explict locking.
glthreads: Single display connection.
XInitThreads() returned 1 (success)
glthreads: creating windows
glthreads: creating threads
glthreads: Created thread 0x7f02c8b66700
glthreads: Created thread 0x7f02c0365700
glthreads: 0: GL_RENDERER = GLES_CM wrapper
glthreads: 1: GL_RENDERER = GLES_CM wrapper
Segmentation fault (core dumped)
icenowy@x220i [ gl4es@master ] ! glthreads 
glthreads: test of GL thread safety (any key = exit)
Usage:
  glthreads [options]
Options:
   -display DISPLAYNAME  Specify display string
   -n NUMTHREADS  Number of threads to create
   -p  Use a separate display connection for each thread
   -l  Use application-side locking
   -t  Enable texturing
Keyboard:
   Esc  Exit
   t    Change texture image (requires -t option)
   a    Toggle animation
   s    Step rotation (when not animating)
glthreads: No explict locking.
glthreads: Single display connection.
XInitThreads() returned 1 (success)
glthreads: creating windows
glthreads: creating threads
glthreads: Created thread 0x7f2632823700
glthreads: Created thread 0x7f2632022700
glthreads: 0: GL_RENDERER = Mesa DRI Intel(R) Sandybridge Mobile 
glthreads: 1: GL_RENDERER = Mesa DRI Intel(R) Sandybridge Mobile 

Icenowy avatar Oct 22 '17 14:10 Icenowy

Yes, there is no code to make it thread safe for now.

I'll probably work on that later, but that's not in my short term plan.

ptitSeb avatar Oct 22 '17 15:10 ptitSeb