i.mx6 crash on glGetString

classic Classic list List threaded Threaded
20 messages Options
Reply | Threaded
Open this post in threaded view
|

i.mx6 crash on glGetString

Ilya Averyanov
Can somebody help to understand how to solve this problem https://jogamp.org/bugzilla/show_bug.cgi?id=1062
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

gouessej
Administrator
Hi

Does glxgears work on your device? I try to determine whether your problem comes from JOGL or from OpenGL.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
Yes glxgears run perfectly.
Also hellogl_es2 from the Qt work fine.
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

gouessej
Administrator
The crash occurs here:
https://github.com/sgothel/jogl/blob/master/src/jogl/classes/jogamp/opengl/GLContextImpl.java#L1331

What does glxinfo show? What do you obtain for OpenGL vendor string, OpenGL renderer string and OpenGL version string?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx 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_SGIS_multisample, GLX_SGIX_fbconfig,
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read
client glx vendor string: Vivante Corp
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGI_make_current_read
GLX version: 1.4
GLX extensions:
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_make_current_read
OpenGL vendor string: Vivante Corporation
OpenGL renderer string: Vivante GC2000
OpenGL version string: 2.1 2.0.1
OpenGL shading language version string: 1.20
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_fragment_program_shadow,
    GL_ARB_fragment_shader, GL_ARB_imaging, GL_ARB_multisample,
    GL_ARB_multitexture, GL_ARB_pixel_buffer_object, GL_ARB_shader_objects,
    GL_ARB_texture_compression, GL_ARB_texture_env_add,
    GL_ARB_texture_env_combine, GL_ARB_texture_non_power_of_two,
    GL_ARB_texture_rectangle, GL_ARB_vertex_buffer_object,
    GL_ARB_vertex_shader, GL_ARB_window_pos, GL_ATI_draw_buffers,
    GL_ATI_element_array, GL_ATI_separate_stencil,
    GL_ATI_texture_env_combine3, GL_ATI_vertex_array_object, GL_EXT_abgr,
    GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate,
    GL_EXT_blend_func_separate, GL_EXT_color_table, GL_EXT_convolution,
    GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements,
    GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
    GL_EXT_framebuffer_object, GL_EXT_histogram, GL_EXT_pixel_buffer_object,
    GL_EXT_polygon_offset, GL_EXT_rescale_normal, GL_EXT_secondary_color,
    GL_EXT_separate_specular_color, GL_EXT_stencil_two_side,
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
    GL_EXT_texture_array, GL_EXT_texture_buffer_object,
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
    GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_timer_query,
    GL_EXT_vertex_array, GL_NV_texture_rectangle, GL_SGIS_generate_mipmap,
    GL_SGIS_texture_lod, GL_SGI_color_matrix, WGL_ARB_extensions_string,
    WGL_EXT_extensions_string, WGL_EXT_swap_control
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

gouessej
Administrator
Please try to force the use of OpenGL instead of OpenGL ES by using an example supporting GL2 and asking a GL2 GLProfile.

I think that there is a problem with the driver but only when you use OpenGL ES, not with OpenGL.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
This post was updated on .
>force the use of OpenGL instead of OpenGL ES

How can I do this?

Also i try compile this C code
http://pastebin.com/Vnje5sEe
And run it.
It's work correct
EGL
  Vendor: Vivante Corporation
  Version: 1.4
  Client APIs: OpenGL_ES OpenVG
  Extensions: EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_lock_surface
OpenGL ES
  Vendor: Vivante Corporation
  Renderer: Vivante GC2000
  Version: OpenGL ES 2.0
  GLSL version: OpenGL ES GLSL ES 1.00
  Extensions: GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_EGL_image GL_OES_depth24 GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_rgb8_rgba8 GL_OES_stencil1 GL_OES_stencil4 GL_OES_texture_npot GL_OES_vertex_half_float GLt
  Implementation limits:
    GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 12
    GL_MAX_CUBE_MAP_TEXTURE_SIZE = 8192
    GL_MAX_FRAGMENT_UNIFORM_VECTORS = 64
    GL_MAX_RENDERBUFFER_SIZE = 8192
    GL_MAX_TEXTURE_IMAGE_UNITS = 8
    GL_MAX_TEXTURE_SIZE = 8192
    GL_MAX_VARYING_VECTORS = 11
    GL_MAX_VERTEX_ATTRIBS = 16
    GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 4
    GL_MAX_VERTEX_UNIFORM_VECTORS = 168
    GL_MAX_VIEWPORT_DIMS = 8192, 8192
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

gouessej
Administrator
Please try this example, just replace "new GLCanvas()" by "new GLCanvas(new GLCapabilities(GLProfile.get(GLProfile.GL2)))":
https://gist.github.com/gouessej/3420e2b6f632efdddf98
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
Replace and get same crash

Log http://pastebin.com/1dUZr30R
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
Some research of crash.
Crash occurs because one of the libraries not loading.
This library is used LibGL.so and it loading libraries.

It's why crash happened.

Why C code work?
Because jogl call init function from libEGL.so but use function glGetString from libGL.so instead libGLESv2.so

For use glGetString from libGL.so we need init function libGL.so
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
>This library is used LibGL.so and it loading libraries.
LibGL.so use and load /usr/lib/dri/vivante_dri.so
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Sven Gothel
Administrator
On 09/08/2014 06:39 PM, Ilya Averyanov [via jogamp] wrote:
>>This library is used LibGL.so and it loading libraries.
> LibGL.so use and load /usr/lib/dri/vivante_dri.so

rings a bell ..

some 'odd jobs' tried to produce a libGL desktop GL
based on ES2 hardware .. a hack, which doesn't work properly.

(had same w/ Rasp-Pi and/or Pandaboard I guess)

Remove the libGL .. right, not nice,
need to add a property to skip it's detection
- or you only load w/ mobile jar files.

~Sven



signature.asc (828 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
Also,  i have
Next list of library

libGLESv1_CM.so
libGLESv1_CL.so
libGLESv2.so
libGL.so
libEGL.so
libGLES_CM.so
libGLES_CL.so


if I leave libEGL.so and libGLESv2.so i get

        Natives
                GL4bc   false
                GL4     false
                GLES3   false
                GL3bc   false
                GL3     false
                GL2     false
                GLES2   true [2.0 (ES profile, ES2 compat, FBO, hardware)]
                GLES1   false
                Count   1 / 8
        Common
                GL4ES3  false
                GL2GL3  false
                GL2ES2  true
                GL2ES1  false
        Mappings
                GLES2   GLProfile[GLES2/GLES2.hw]
                GL2ES2  GLProfile[GL2ES2/GLES2.hw]
                default GLProfile[GLES2/GLES2.hw]
                Count   2 / 12
if I leave libEGL.so libGLESv1_CM.so i get
EGLGraphicsDevice[type .egl, connection :0]:
        Natives
                GL4bc   false
                GL4     false
                GLES3   false
                GL3bc   false
                GL3     false
                GL2     false
                GLES2   false
                GLES1   true [1.0 (ES profile, FP32 compat, hardware)]
                Count   1 / 8
        Common
                GL4ES3  false
                GL2GL3  false
                GL2ES2  false
                GL2ES1  true
        Mappings
                GLES1   GLProfile[GLES1/GLES1.hw]
                GL2ES1  GLProfile[GL2ES1/GLES1.hw]
                default GLProfile[GLES1/GLES1.hw]
                Count   2 / 12
=====
How to get them to work together?
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

gouessej
Administrator
What do you mean by "How to get them to work together? "?

There is not yet a clean solution to skip one of them except by using jogl-mobile instead of jogl-all. However, you'll have to choose between ES1 and ES2 in your program, you can't use both at the same time.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Sven Gothel
Administrator
On 09/09/2014 12:35 PM, gouessej [via jogamp] wrote:
> What do you mean by "How to get them to work together? "?
>
> There is not yet a clean solution to skip one of them except by using
> jogl-mobile instead of jogl-all. However, you'll have to choose between ES1
> and ES2 in your program, you can't use both at the same time.

Yeah, I guess Ilya meant to have them all in place (native GL libs)
and working together.

He figured that it crashes somehow having them all in place.

Well, bad news, this must be a bug in those native GL libs
provided.
I remember this from first experiences w/ e.g. OMAP EGL/ES libs,
but nowadays they do work together,
e.g. MESA, OMAP, ARM, AMD, NVIDIA, RASPI, ..

Ilya, if you find an acceptable workaround w/ JOGL here,
i.e. properties .. skipping profiles etc, let us know
and we can put this into our code.

~Sven



signature.asc (828 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
Ok. I think I found a not very correct code.
https://github.com/sgothel/jogl/blob/master/src/jogl/classes/jogamp/opengl/x11/glx/X11GLXGraphicsConfigurationFactory.java#L169

Pass null to third argument, does not look correct.

>attrib_list
>                 Specifies a list of attribute/value pairs.
>                    The last attribute must be None.

PS. On my system if third argument is null I get a crash when I try to dereference the pointer.
               
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Ilya Averyanov
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

gouessej
Administrator
In reply to this post by Ilya Averyanov
Ilya Averyanov wrote
Pass null to third argument, does not look correct.
http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/g_man/cat3/OpenGL/glxchoosefbconfig.z
If attribList is NULL then glXChooseFBConfig returns an array of GLX frame
     buffer configurations that are available on the specified screen
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Sven Gothel
Administrator
On 09/09/2014 04:50 PM, gouessej [via jogamp] wrote:
>     Ilya Averyanov wrote
>     Pass null to third argument, does not look correct.
>
> http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/g_man/cat3/OpenGL/glxchoosefbconfig.z
>
>     If attribList is NULL then glXChooseFBConfig returns an array of GLX frame
>          buffer configurations that are available on the specified screen
>

Same here:

  <https://www.opengl.org/sdk/docs/man2/xhtml/glXChooseFBConfig.xml>

"If attrib_list is NULL, then glXChooseFBConfig returns an array of GLX
 frame buffer configurations that are available on the specified screen."


.. and in the the official GLX spec:

  <http://www.opengl.org/documentation/specs/glx/glx1.4.pdf>

"If attrib list is NULL or empty (first attribute is None), then selection
and sorting of GLXFBConfigs is done according to the default criteria in
Tables 3.4 and 3.1, as described below under Selection and Sorting."

Hence 'NULL' or '{ NONE }' shall be equivalent and both legal.

This might be a bug in that EGL/GLX wrapper implementation you use ?

~Sven



signature.asc (828 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: i.mx6 crash on glGetString

Sven Gothel
Administrator
In reply to this post by gouessej
On 09/09/2014 10:31 PM, Sven Gothel wrote:

> On 09/09/2014 04:50 PM, gouessej [via jogamp] wrote:
>>     Ilya Averyanov wrote
>>     Pass null to third argument, does not look correct.
>>
>> http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/g_man/cat3/OpenGL/glxchoosefbconfig.z
>>
>>     If attribList is NULL then glXChooseFBConfig returns an array of GLX frame
>>          buffer configurations that are available on the specified screen
>>
>
> Same here:
>
>   <https://www.opengl.org/sdk/docs/man2/xhtml/glXChooseFBConfig.xml>
>
> "If attrib_list is NULL, then glXChooseFBConfig returns an array of GLX
>  frame buffer configurations that are available on the specified screen."
>
>
> .. and in the the official GLX spec:
>
>   <http://www.opengl.org/documentation/specs/glx/glx1.4.pdf>
>
> "If attrib list is NULL or empty (first attribute is None), then selection
> and sorting of GLXFBConfigs is done according to the default criteria in
> Tables 3.4 and 3.1, as described below under Selection and Sorting."
>
> Hence 'NULL' or '{ NONE }' shall be equivalent and both legal.
>
> This might be a bug in that EGL/GLX wrapper implementation you use ?
>
Would be nice to get more details of the implementation
of the glXChooseFBConfig function you use ..

Maybe you can contact 'upstream', i.e. the implementor
and notify them about this bug.

We surely could also workaround this issue and do pass '{ NONE }'
here .. to sooth this issue swiftly :)
However, keep in mind that this code works for eons :)

It would be nice if you can do the patch and test it
on your [buggy] system.
Then please offer the working patch via git (email, pull request).

Thank you.

> ~Sven
>
>



signature.asc (828 bytes) Download Attachment