gzdoom on raspberry pi


69 posts   Page 2 of 3   1, 2, 3
by ptitSeb » Tue Apr 04, 2017 1:33 pm
THt's the GL extension provides by gl4es. I was more interested in the underlying GLES extension.

To easily have then, you can add
Code: Select all
printf("LIBGL: GLES extensions are\n%s\n", Exts);

Line 101 of src/glx/hardext.c

(I'll probably do a LIBGL_XXXX option in the near future for that).
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by raysaaron » Tue Apr 04, 2017 2:12 pm
Here it is:
Code: Select all
GL_VENDOR: VMware, Inc.
GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.7, 128 bits)
GL_VERSION: 3.0 Mesa 11.1.0
GL_EXTENSIONS:
   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_S3_s3tc
   GL_SUN_multi_draw_arrays
   GL_ARB_texture_border_clamp
   GL_ARB_texture_compression
   GL_EXT_framebuffer_object
   GL_EXT_texture_compression_s3tc
   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_depth_clamp
   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_ATI_texture_float
   GL_EXT_shadow_funcs
   GL_EXT_stencil_wrap
   GL_MESA_pack_invert
   GL_MESA_ycbcr_texture
   GL_NV_primitive_restart
   GL_ARB_depth_clamp
   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_float
   GL_ARB_texture_rectangle
   GL_ATI_texture_compression_3dc
   GL_EXT_packed_float
   GL_EXT_pixel_buffer_object
   GL_EXT_texture_compression_dxt1
   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_framebuffer_multisample
   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_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_AMD_seamless_cubemap_per_texture
   GL_AMD_shader_stencil_export
   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_seamless_cube_map
   GL_ARB_shader_stencil_export
   GL_ARB_shader_texture_lod
   GL_ARB_texture_cube_map_array
   GL_ARB_texture_gather
   GL_ARB_texture_multisample
   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_separate_shader_objects
   GL_ARB_shader_bit_encoding
   GL_ARB_timer_query
   GL_ARB_transform_feedback2
   GL_ARB_transform_feedback3
   GL_ANGLE_texture_compression_dxt3
   GL_ANGLE_texture_compression_dxt5
   GL_ARB_base_instance
   GL_ARB_compressed_texture_pixel_storage
   GL_ARB_conservative_depth
   GL_ARB_internalformat_query
   GL_ARB_map_buffer_alignment
   GL_ARB_shading_language_420pack
   GL_ARB_shading_language_packing
   GL_ARB_texture_storage
   GL_ARB_transform_feedback_instanced
   GL_EXT_framebuffer_multisample_blit_scaled
   GL_EXT_transform_feedback
   GL_AMD_shader_trinary_minmax
   GL_ARB_ES3_compatibility
   GL_ARB_clear_buffer_object
   GL_ARB_explicit_uniform_location
   GL_ARB_invalidate_subdata
   GL_ARB_program_interface_query
   GL_ARB_stencil_texturing
   GL_ARB_texture_query_levels
   GL_ARB_texture_storage_multisample
   GL_ARB_texture_view
   GL_ARB_vertex_attrib_binding
   GL_KHR_debug
   GL_ARB_buffer_storage
   GL_ARB_multi_bind
   GL_ARB_seamless_cubemap_per_texture
   GL_ARB_texture_mirror_clamp_to_edge
   GL_ARB_texture_stencil8
   GL_ARB_vertex_type_10f_11f_11f_rev
   GL_EXT_shader_integer_mix
   GL_ARB_clip_control
   GL_ARB_conditional_render_inverted
   GL_ARB_get_texture_sub_image
   GL_EXT_polygon_offset_clamp
   GL_KHR_context_flush_control
using GL_ARB_texture_non_power_of_two
using GL_ARB_multitexture
using GL_ARB_texture_compression
using GL_EXT_framebuffer_object
using GL_EXT_packed_depth_stencil
using GL_EXT_blend_color
using GL_ARB_pixel_buffer_object
Posts: 30
Joined: Sun Feb 12, 2017 4:20 am
by ptitSeb » Tue Apr 04, 2017 2:18 pm
I don't really understand what's going on here.

What I see is that:
1. It's not a GLES driver but a full OpenGL driver?
2. It's MESA GL in Software mode (so it's super slow)

Even it does work eventually, it will be to slow to be useable.

PS: Are you using the Beta Desktop OpenGL driver? If yes, then you should not use gl4es and just use the driver. If it doesn't work, consider using old stable GLES driver + gl4es as a test.
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by raysaaron » Tue Apr 04, 2017 2:38 pm
is This it:
Code: Select all
EGL
Vendor: Broadcom
Version: 1.4
Client APIs: OpenGL_ES OpenVG
Extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_vg_parent_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_lock_surface
OpenGL ES
Vendor: Broadcom
Renderer: VideoCore IV HW
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_texture_npot GL_OES_depth24 GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_EGL_image_external GL_EXT_discard_framebuffer GL_OES_rgb8_rgba8 GL_OES_depth32 GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_APPLE_rgb_422
Implementation limits:
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 8
GL_MAX_CUBE_MAP_TEXTURE_SIZE = 2048
GL_MAX_FRAGMENT_UNIFORM_VECTORS = 136
GL_MAX_RENDERBUFFER_SIZE = 2048
GL_MAX_TEXTURE_IMAGE_UNITS = 8
GL_MAX_TEXTURE_SIZE = 2048
GL_MAX_VARYING_VECTORS = 8
GL_MAX_VERTEX_ATTRIBS = 8
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0
GL_MAX_VERTEX_UNIFORM_VECTORS = 136
GL_MAX_VIEWPORT_DIMS = 2048, 2048
Posts: 30
Joined: Sun Feb 12, 2017 4:20 am
by ptitSeb » Tue Apr 04, 2017 4:17 pm
Almost. That's the GLES2 driver infos (and this time, it's hardware accelerated). gl4es use GLESv1 driver, but it should be there too.

Doesn't Zandronum work with gl4es and the Broadcom GLES driver?
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by raysaaron » Wed Apr 05, 2017 4:53 am
I navigated to /opt/vc/lib/ and i am seeing that libGLESv1_CM.so is just a link to libGLESv2.so
Posts: 30
Joined: Sun Feb 12, 2017 4:20 am
by raysaaron » Wed Apr 05, 2017 5:31 am
I've also found that gl4es uses libGLESv1_CM.so rather than libGLESv1.so
Posts: 30
Joined: Sun Feb 12, 2017 4:20 am
by ptitSeb » Wed Apr 05, 2017 6:40 am
Yes, on the rasperry GLESv1 is named libGLESv1_CM.so.
It can also be found as libGLES_CM.so on other machine.
gl4es has code to load it with this 2 names, and also initialize first the BCM stuff (only found on RPi) if found.

I don't understand what is the status on Zandronum / gl4es for you. Is it working (is it smooth), not working (what is happening).
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by raysaaron » Wed Apr 05, 2017 7:15 am
it is not even starting yet.just freezes on the gl4es boot
Posts: 30
Joined: Sun Feb 12, 2017 4:20 am
by ptitSeb » Wed Apr 05, 2017 8:33 am
Freeze? That's odd.

Can you copy/paste the console output?

Also, you can try to use some gl4es env. variable to tweak thing.
You can try LIBGL_FB=1 or LIBGL_FB=3 to see if it solve the freeze issue (LIBGL_FB=3 may slow things down a bit, and LIBGL_FB=1 will skip X11 stuff and so force fullscreen).
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by Vanfanel » Wed Apr 05, 2017 9:27 am
@ptitSeb: How's LIBGL_FB=1 supposed to work on the Raspberry Pi? The Raspberry Pi currently uses dispmanx as it's X11-less 2D system, but there is no dispmanx code in gl4es at all.
Posts: 402
Joined: Sat Aug 18, 2012 5:58 pm
by ptitSeb » Wed Apr 05, 2017 9:43 am
Vanfanel wrote:@ptitSeb: How's LIBGL_FB=1 supposed to work on the Raspberry Pi? The Raspberry Pi currently uses dispmanx as it's X11-less 2D system, but there is no dispmanx code in gl4es at all.


Mmmm, maybe it will not work indeed.
I don't have a RPi to test, but yeah, some dispmanx minimum code probably need to be written for LIBGL_FB=1 to work.
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by Vanfanel » Wed Apr 05, 2017 10:01 am
@ptitSeb: It does not work at all, I have tried :D
Any chances of dispmanx being added? X11 isn't exactly a good thing on the Pi and all gaming-oriented distros skip it for good...
Posts: 402
Joined: Sat Aug 18, 2012 5:58 pm
by ptitSeb » Wed Apr 05, 2017 10:26 am
Vanfanel wrote:@ptitSeb: It does not work at all, I have tried :D
Any chances of dispmanx being added? X11 isn't exactly a good thing on the Pi and all gaming-oriented distros skip it for good...

I'll take a look and see if I can put some simple init code.
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by ptitSeb » Wed Apr 05, 2017 2:11 pm
Vanfanel wrote:@ptitSeb: It does not work at all, I have tried :D
Any chances of dispmanx being added? X11 isn't exactly a good thing on the Pi and all gaming-oriented distros skip it for good...


Ok, I have pushed a first try to my github.
I try to use dispmanx complety dynamicaly (so there is still no #ifdef BCM_HOST to keep the binary kindof universal). Not sure it works, so if you can give it a try. It should create a dispmanx display (the size of the screen) when using LIBGL_FB=1
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by Vanfanel » Wed Apr 05, 2017 2:51 pm
@ptitSeb: Thanks for adding dispmanx support.
Seems it won't build however:

Code: Select all
[ 97%] [100%] Building C object src/CMakeFiles/GL.dir/glx/streaming.c.o
Building C object src/CMakeFiles/GL.dir/glx/utils.c.o
/home/pi/src/gl4es/src/glx/glx.c:111:16: error: redefinition of 'struct tag_VC_RECT_T'
 typedef struct tag_VC_RECT_T {
                ^~~~~~~~~~~~~
In file included from /opt/vc/include/interface/vmcs_host/vc_dispmanx.h:34:0,
                 from /opt/vc/include/EGL/eglplatform.h:110,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vctypes/vc_image_types.h:39:16: note: originally defined here
 typedef struct tag_VC_RECT_T {
                ^~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:116:3: error: conflicting types for 'VC_RECT_T'
 } VC_RECT_T;
   ^~~~~~~~~
In file included from /opt/vc/include/interface/vmcs_host/vc_dispmanx.h:34:0,
                 from /opt/vc/include/EGL/eglplatform.h:110,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vctypes/vc_image_types.h:44:3: note: previous declaration of 'VC_RECT_T' was here
 } VC_RECT_T;
   ^~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:121:3: error: conflicting types for 'EGL_DISPMANX_WINDOW_T'
 } EGL_DISPMANX_WINDOW_T;
   ^~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/egl.h:36:0,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/EGL/eglplatform.h:118:3: note: previous declaration of 'EGL_DISPMANX_WINDOW_T' was here
 } EGL_DISPMANX_WINDOW_T;
   ^~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:123:29: error: 'vc_dispmanx_display_open' redeclared as different kind of symbol
 DISPMANX_DISPLAY_HANDLE_T (*vc_dispmanx_display_open)(uint32_t);
                             ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:64:44: note: previous declaration of 'vc_dispmanx_display_open' was here
 VCHPRE_ DISPMANX_DISPLAY_HANDLE_T VCHPOST_ vc_dispmanx_display_open( uint32_t device );
                                            ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:124:28: error: 'vc_dispmanx_update_start' redeclared as different kind of symbol
 DISPMANX_UPDATE_HANDLE_T (*vc_dispmanx_update_start)(int32_t);
                            ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:83:43: note: previous declaration of 'vc_dispmanx_update_start' was here
 VCHPRE_ DISPMANX_UPDATE_HANDLE_T VCHPOST_ vc_dispmanx_update_start( int32_t priority );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:125:29: error: 'vc_dispmanx_element_add' redeclared as different kind of symbol
 DISPMANX_ELEMENT_HANDLE_T (*vc_dispmanx_element_add)(
                             ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:85:44: note: previous declaration of 'vc_dispmanx_element_add' was here
 VCHPRE_ DISPMANX_ELEMENT_HANDLE_T VCHPOST_ vc_dispmanx_element_add ( DISPMANX_UPDATE_HANDLE_T update, DISPMANX_DISPLAY_HANDLE_T display,
                                            ^~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:131:7: error: 'vc_dispmanx_update_submit_sync' redeclared as different kind of symbol
 int (*vc_dispmanx_update_submit_sync)(DISPMANX_RESOURCE_HANDLE_T);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:103:22: note: previous declaration of 'vc_dispmanx_update_submit_sync' was here
 VCHPRE_ int VCHPOST_ vc_dispmanx_update_submit_sync( DISPMANX_UPDATE_HANDLE_T update );
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c: In function 'gl4es_glXMakeCurrent':
/home/pi/src/gl4es/src/glx/glx.c:980:116: warning: passing argument 3 of 'egl_eglCreateWindowSurface' makes pointer from integer without a cast [-Wint-conversion]
                     eglSurf = context->eglSurface = egl_eglCreateWindowSurface(eglDisplay, context->eglConfigs[0], drawable, (globals4es.glx_surface_srgb)?sRGB:NULL);
                                                                                                                    ^~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:980:116: note: expected 'EGLNativeWindowType {aka void *}' but argument is of type 'GLXDrawable {aka int}'
src/CMakeFiles/GL.dir/build.make:767: recipe for target 'src/CMakeFiles/GL.dir/glx/glx.c.o' failed
make[3]: *** [src/CMakeFiles/GL.dir/glx/glx.c.o] Error 1
make[3]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:75: recipe for target 'src/CMakeFiles/GL.dir/all' failed
make[2]: *** [src/CMakeFiles/GL.dir/all] Error 2
CMakeFiles/Makefile2:87: recipe for target 'src/CMakeFiles/GL.dir/rule' failed
make[1]: *** [src/CMakeFiles/GL.dir/rule] Error 2
Makefile:110: recipe for target 'GL' failed
make: *** [GL] Error 2

Posts: 402
Joined: Sat Aug 18, 2012 5:58 pm
by ptitSeb » Wed Apr 05, 2017 2:59 pm
Vanfanel wrote:@ptitSeb: Thanks for adding dispmanx support.
Seems it won't build however:



Ok, second try upload to my github. It should build now (but maybe it segfault running, in that case, I need the "LIBGL: Warning XXXX is null" that maybe printed if any)
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by Vanfanel » Wed Apr 05, 2017 3:41 pm
Nope, still the same problem:

Code: Select all
/home/pi/src/gl4es/src/glx/glx.c:123:33: error: 'vc_dispmanx_display_open' redeclared as different kind of symbol
 bcm_DISPMANX_DISPLAY_HANDLE_T (*vc_dispmanx_display_open)(uint32_t);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:64:44: note: previous declaration of 'vc_dispmanx_display_open' was here
 VCHPRE_ DISPMANX_DISPLAY_HANDLE_T VCHPOST_ vc_dispmanx_display_open( uint32_t device );
                                            ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:124:32: error: 'vc_dispmanx_update_start' redeclared as different kind of symbol
 bcm_DISPMANX_UPDATE_HANDLE_T (*vc_dispmanx_update_start)(int32_t);
                                ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:83:43: note: previous declaration of 'vc_dispmanx_update_start' was here
 VCHPRE_ DISPMANX_UPDATE_HANDLE_T VCHPOST_ vc_dispmanx_update_start( int32_t priority );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:125:33: error: 'vc_dispmanx_element_add' redeclared as different kind of symbol
 bcm_DISPMANX_ELEMENT_HANDLE_T (*vc_dispmanx_element_add)(
                                 ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:85:44: note: previous declaration of 'vc_dispmanx_element_add' was here
 VCHPRE_ DISPMANX_ELEMENT_HANDLE_T VCHPOST_ vc_dispmanx_element_add ( DISPMANX_UPDATE_HANDLE_T update, DISPMANX_DISPLAY_HANDLE_T display,
                                            ^~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:131:7: error: 'vc_dispmanx_update_submit_sync' redeclared as different kind of symbol
 int (*vc_dispmanx_update_submit_sync)(bcm_DISPMANX_RESOURCE_HANDLE_T);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/vc/include/EGL/eglplatform.h:110:0,
                 from /opt/vc/include/EGL/egl.h:36,
                 from /home/pi/src/gl4es/src/glx/glx.h:1,
                 from /home/pi/src/gl4es/src/glx/glx.c:20:
/opt/vc/include/interface/vmcs_host/vc_dispmanx.h:103:22: note: previous declaration of 'vc_dispmanx_update_submit_sync' was here
 VCHPRE_ int VCHPOST_ vc_dispmanx_update_submit_sync( DISPMANX_UPDATE_HANDLE_T update );
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c: In function 'gl4es_glXMakeCurrent':
/home/pi/src/gl4es/src/glx/glx.c:980:116: warning: passing argument 3 of 'egl_eglCreateWindowSurface' makes pointer from integer without a cast [-Wint-conversion]
                     eglSurf = context->eglSurface = egl_eglCreateWindowSurface(eglDisplay, context->eglConfigs[0], drawable, (globals4es.glx_surface_srgb)?sRGB:NULL);
                                                                                                                    ^~~~~~~~
/home/pi/src/gl4es/src/glx/glx.c:980:116: note: expected 'EGLNativeWindowType {aka void *}' but argument is of type 'GLXDrawable {aka int}'
src/CMakeFiles/GL.dir/build.make:767: recipe for target 'src/CMakeFiles/GL.dir/glx/glx.c.o' failed
make[3]: *** [src/CMakeFiles/GL.dir/glx/glx.c.o] Error 1
make[3]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:75: recipe for target 'src/CMakeFiles/GL.dir/all' failed
make[2]: *** [src/CMakeFiles/GL.dir/all] Error 2
CMakeFiles/Makefile2:87: recipe for target 'src/CMakeFiles/GL.dir/rule' failed
make[1]: *** [src/CMakeFiles/GL.dir/rule] Error 2
Makefile:110: recipe for target 'GL' failed
make: *** [GL] Error 2

Posts: 402
Joined: Sat Aug 18, 2012 5:58 pm
by ptitSeb » Wed Apr 05, 2017 3:45 pm
Vanfanel wrote:Nope, still the same problem:



Mmmm, ok, third try, this time it should compile on the RPi.
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by raysaaron » Wed Apr 05, 2017 4:11 pm
I don't know but it works on Eric Anholt's OpenGL Driver.
Posts: 30
Joined: Sun Feb 12, 2017 4:20 am
by ptitSeb » Wed Apr 05, 2017 4:18 pm
raysaaron wrote:I don't know but it works on Eric Anholt's OpenGL Driver.

Zandronum works with the beta OpenGL driver?
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by Vanfanel » Thu Apr 06, 2017 10:23 am
@ptitSeb: now it builds!
What should I use to try it? I tried building SDL2 with OpenGL support, but none of the tests I tried work.
Posts: 402
Joined: Sat Aug 18, 2012 5:58 pm
by ptitSeb » Thu Apr 06, 2017 10:28 am
Simply glxgears to check it works.

From the build folder of gl4es, try with
Code: Select all
LD_LIBRARY_PATH=lib glxgears


and also with
Code: Select all
LD_LIBRARY_PATH=lib LIBGL_FB=1 glxgears

to see fullscreen stuff.

a test with
Code: Select all
LD_LIBRARY_PATH=lib LIBGL_FB=3 glxgears

can be interesting also.
Posts: 132
Joined: Tue May 19, 2015 2:49 pm
by Vanfanel » Thu Apr 06, 2017 10:55 am
@ptibSeb: GLXGears depends on X11 libs, which are not present on my system, and never will.
Any other example I can build without depending on stinky X, please?
Posts: 402
Joined: Sat Aug 18, 2012 5:58 pm
by ptitSeb » Thu Apr 06, 2017 12:24 pm
Anything based on SDL / SDL2 then. You'll need to compile SDL(2) with OpenGL support if needed.

Zandronum should work.

Stunt car remake on my github is simple enough and should work (based on SDL) : https://github.com/ptitSeb/stuntcarremake
You can also try Prototype: https://github.com/ptitSeb/prototype that should works too.
Posts: 132
Joined: Tue May 19, 2015 2:49 pm