To easily have then, you can add
Code: Select all
printf("LIBGL: GLES extensions are\n%s\n", Exts);
(I'll probably do a LIBGL_XXXX option in the near future for that).
Code: Select all
printf("LIBGL: GLES extensions are\n%s\n", Exts);
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
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
Mmmm, maybe it will not work indeed.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.
I'll take a look and see if I can put some simple init code.Vanfanel wrote:@ptitSeb: It does not work at all, I have tried![]()
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.Vanfanel wrote:@ptitSeb: It does not work at all, I have tried![]()
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...
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
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)Vanfanel wrote:@ptitSeb: Thanks for adding dispmanx support.
Seems it won't build however:
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
Mmmm, ok, third try, this time it should compile on the RPi.Vanfanel wrote:Nope, still the same problem:
Zandronum works with the beta OpenGL driver?raysaaron wrote:I don't know but it works on Eric Anholt's OpenGL Driver.
Code: Select all
LD_LIBRARY_PATH=lib glxgears
Code: Select all
LD_LIBRARY_PATH=lib LIBGL_FB=1 glxgears
Code: Select all
LD_LIBRARY_PATH=lib LIBGL_FB=3 glxgears