Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation failure on Raspberry Pi 4: SDLGLGraphicsContext.cpp:90:37: error: 'XOpenDisplay' was not declared in this scope #12346

Closed
neilmunday opened this issue Sep 22, 2019 · 18 comments

Comments

@neilmunday
Copy link
Contributor

What happens?

Compilation failure under Arch Linux on Raspberry Pi 4 with SDL 2.0.10.

What should happen?

Successful compilation.

What hardware, operating system, and PPSSPP version? On desktop, GPU matters for graphical issues.

Raspberry Pi4, Arch Linux, PPSSPPP git clone.

Compilation error:

[ 15%] Building CXX object CMakeFiles/native.dir/SDL/SDLGLGraphicsContext.cpp.o
cc1plus: warning: switch -mcpu=cortex-a72 conflicts with -march=armv7-a switch
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp: In function 'int8_t EGL_Open(SDL_Window*)':
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:90:37: error: 'XOpenDisplay' was not declared in this scope
   g_Display = (EGLNativeDisplayType)XOpenDisplay(nullptr);
                                     ^~~~~~~~~~~~
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:90:37: note: suggested alternative: 'g_Display'
   g_Display = (EGLNativeDisplayType)XOpenDisplay(nullptr);
                                     ^~~~~~~~~~~~
                                     g_Display
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:98:51: error: 'union SDL_SysWMinfo::<unnamed>' has no member named 'x11'
    g_Display = (EGLNativeDisplayType)sysInfo.info.x11.display;
                                                   ^~~
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:99:49: error: 'union SDL_SysWMinfo::<unnamed>' has no member named 'x11'
    g_Window = (EGLNativeWindowType)sysInfo.info.x11.window;
                                                 ^~~
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:123:38: error: 'XOpenDisplay' was not declared in this scope
    g_Display = (EGLNativeDisplayType)XOpenDisplay(nullptr);
                                      ^~~~~~~~~~~~
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:123:38: note: suggested alternative: 'g_Display'
    g_Display = (EGLNativeDisplayType)XOpenDisplay(nullptr);
                                      ^~~~~~~~~~~~
                                      g_Display
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp: In function 'void EGL_Close()':
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:286:19: error: 'Display' was not declared in this scope
    XCloseDisplay((Display *)g_Display);
                   ^~~~~~~
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:286:19: note: suggested alternative: 'g_Display'
    XCloseDisplay((Display *)g_Display);
                   ^~~~~~~
                   g_Display
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:286:28: error: expected primary-expression before ')' token
    XCloseDisplay((Display *)g_Display);
                            ^
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:286:4: error: 'XCloseDisplay' was not declared in this scope
    XCloseDisplay((Display *)g_Display);
    ^~~~~~~~~~~~~
/home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp:286:4: note: suggested alternative: 'eglGetDisplay'
    XCloseDisplay((Display *)g_Display);
    ^~~~~~~~~~~~~
    eglGetDisplay
At global scope:
cc1plus: warning: unrecognized command line option '-Wno-deprecated-register'
make[2]: *** [CMakeFiles/native.dir/build.make:89: CMakeFiles/native.dir/SDL/SDLGLGraphicsContext.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:266: CMakeFiles/native.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
@neilmunday neilmunday changed the title Compilation failure on Raspberry Pi 4: /SDLGLGraphicsContext.cpp:90:37: error: 'XOpenDisplay' was not declared in this scope Compilation failure on Raspberry Pi 4: SDLGLGraphicsContext.cpp:90:37: error: 'XOpenDisplay' was not declared in this scope Sep 22, 2019
@unknownbrackets
Copy link
Collaborator

How do you configure? It seems like it's not being compiled with X?

-[Unknown]

@neilmunday
Copy link
Contributor Author

Correct, I am trying to build PPSSPP without X. I have done this in the past for the Raspberry Pi 2 and 3.

Here are the commands I am using to build PPSSPP:

git clone git://github.com/hrydgard/ppsspp
git submodule init
git submodule update
./linux_rpi.sh
mkdir build
cd build
cmake -D SDL2_LIBRARY:PATH=/opt/sdl2/default/lib/libSDL2.so \
-D SDL2_INCLUDE_DIR:PATH=/opt/sdl2/default/include/SDL2 \
-D CMAKE_INSTALL_PREFIX:PATH=/opt/ppsspp \
-D CMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/raspberry.armv7.cmake \
-D USING_X11_VULKAN=0 \
..

I am also using the vc4-fkms-v3d dtoverlay for the Raspberry Pi 4 in /boot/config.txt.

SDL2 2.0.10 was configured with the following configure flags:

./configure --prefix=/opt/sdl2/default --enable-assertions=disabled --disable-video-opengl --disable-video-x11 --disable-pulseaudio --disable-esd --enable-video-opengles --enable-libudev --disable-video-rpi --enable-video-kmsdrm

@unknownbrackets
Copy link
Collaborator

unknownbrackets commented Oct 2, 2019

With the Pi 4, apparently it now works to use X and get hardware acceleration (so I understand, haven't tried a Pi 4.)

As such, USING_FBDEV is not forced on for Pi 4:

if(NOT PPSSPP_PI_MODEL4)
set(OPENGL_LIBRARIES brcmGLESv2 bcm_host)
set(EGL_LIBRARIES brcmEGL)
set(USING_FBDEV ON)
endif()

If you want fbdev still on Pi 4, just pass -D USING_FBDEV=ON to cmake (you can safely pass this for Pi 2/3/etc. as well.)

-[Unknown]

@neilmunday
Copy link
Contributor Author

Thanks for the info. I'll give it go over the next few days and feedback.

@neilmunday
Copy link
Contributor Author

neilmunday commented Oct 7, 2019

Although PPSSPP now compiles, it fails at run time:

./PPSSPPSDL
I: VulkanLoader.cpp:264: VulkanMayBeAvailable: Device allowed ('SDL:Linux')
I: VulkanLoader.cpp:280: Vulkan loader: Library not available
DEBUG: Vulkan is not available, not using Vulkan.
I: Config.cpp:517: Longest display side: -1 pixels. Choosing scale 1
48:49:392 Core/Config.cpp:1188 I[LOADER]: Loading controller config: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
48:49:398 UI/NativeApp.cpp:389 E[LOADER]: Failed graphics backends: OPENGL,ALL,ALL,ALL,ALL
48:49:398 Core/Config.cpp:599 E[LOADER]: Graphics backend failed for 0, trying another
48:49:398 Core/Config.cpp:624 E[LOADER]: All graphics backends failed
48:49:408 Core/Config.cpp:1273 I[LOADER]: Config saved (got storage permission): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
48:49:409 Core/Config.cpp:1286 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
Pixels: 3840 x 2160
Virtual pixels: 3840 x 2160
* failed to add service - already in use?

It looks like it might be trying to use the /opt/vc libraries which don't work on the Raspberry Pi 4.

@LunaMoo
Copy link
Collaborator

LunaMoo commented Oct 7, 2019

See #12388, closing since it compiles and the runtime issue was reported a new driver problem.

@LunaMoo LunaMoo closed this as completed Oct 7, 2019
@unknownbrackets
Copy link
Collaborator

It would be interesting to know if other GL apps using fbdev still work fine. We're not really doing anything strange.

-[Unknown]

@neilmunday
Copy link
Contributor Author

neilmunday commented Oct 8, 2019

I've compiled RetroArch and Mupen64Plus (standalone) and they both work for me. Retroarch is using OpenGL/KMS and Mupen64Plus is using GLES and SDL2 (built with kms also). I think PPSSPP is picking up the GLES libraries under /opt/vc which aren't supported on the Raspberry Pi 4. I'll try telling PPSSPP to use the GLES libraries under /usr/lib instead.

@unknownbrackets
Copy link
Collaborator

If it works to move set(CMAKE_EXE_LINKER_FLAGS "-L/opt/vc/lib" CACHE STRING "" FORCE) inside the if to, that seems reasonable.

People had reported it working on Pi 4, so IO wonder what changed. Unfortunately, I don't have a device to test with.

-[Unknown]

@neilmunday
Copy link
Contributor Author

Here's the cmake file I used with my latest attempt:

set(ARCH_FLAGS "-mfpu=neon -mtune=cortex-a72 -march=armv8-a -mfloat-abi=hard")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_FLAGS}"  CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_FLAGS}" CACHE STRING "" FORCE)
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${ARCH_FLAGS}" CACHE STRING "" FORCE)
set(OPENGL_LIBRARIES /usr/lib/libGLESv2.so)
set(USING_GLES2 ON)
set(ARMV7 ON)
set(USE_WAYLAND_WSI OFF)
set(USING_FBDEV ON)
set(USING_X11_VULKAN OFF)

Although PPSSPP compiled, it fails at run time:

I: VulkanLoader.cpp:264: VulkanMayBeAvailable: Device allowed ('SDL:Linux')
I: VulkanLoader.cpp:280: Vulkan loader: Library not available
DEBUG: Vulkan is not available, not using Vulkan.
I: Config.cpp:517: Longest display side: -1 pixels. Choosing scale 1
24:50:032 Core/Config.cpp:1188 I[LOADER]: Loading controller config: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
24:50:038 UI/NativeApp.cpp:389 E[LOADER]: Failed graphics backends: OPENGL,ALL,ALL
24:50:038 Core/Config.cpp:599 E[LOADER]: Graphics backend failed for 0, trying another
24:50:038 Core/Config.cpp:624 E[LOADER]: All graphics backends failed
24:50:048 Core/Config.cpp:1273 I[LOADER]: Config saved (got storage permission): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
24:50:049 Core/Config.cpp:1286 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
Pixels: 3840 x 2160
Virtual pixels: 3840 x 2160
ERROR: EGL Error EGL_NOT_INITIALIZED detected in file /home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp at line 65 (0x3001)
EGL ERROR: Unable to initialize EGL display.
ERROR: EGL Error EGL_NOT_INITIALIZED detected in file /home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp at line 239 (0x3001)
EGL ERROR: Unable to find a usable EGL config.
EGL_Init() failed
GL init error ''
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
Segmentation fault (core dumped)

@valrak
Copy link

valrak commented Nov 10, 2019

Is there any workaround for this?

@neilmunday
Copy link
Contributor Author

I've not found a way to make it work sadly. My next approach was going to be to install an X desktop, but I was hoping to avoid this.

@unknownbrackets
Copy link
Collaborator

Is it possible this is related to #12474?

-[Unknown]

@neilmunday
Copy link
Contributor Author

neilmunday commented Apr 28, 2020

Apologies for the delay in replying, the Raspberry Pi 4 I was using was on loan from a friend. I now however, have my own Raspberry Pi 4 so I've spent some more time trying to get PPSPP working under Arch Linux (as tried above).

The original issue remains sadly. I have also tried installing an X windows desktop (Xfce) and I get these errors instead:

I: VulkanLoader.cpp:272: VulkanMayBeAvailable: Device allowed ('SDL:Linux')
I: VulkanLoader.cpp:279: VulkanMayBeAvailable: Library loaded ('libvulkan.so')
I: VulkanLoader.cpp:332: VulkanMayBeAvailable: Enumerating instance extensions
I: VulkanLoader.cpp:343: VulkanMayBeAvailable: Instance extension count: 2
I: VulkanLoader.cpp:351: VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_report (00000009)
I: VulkanLoader.cpp:351: VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_utils (00000001)
E: VulkanLoader.cpp:369: Surface extension not found
DEBUG: Vulkan is not available, not using Vulkan.
I: Config.cpp:520: Longest display side: -1 pixels. Choosing scale 1
28:42:208 UI/NativeApp.cpp:401 E[LOADER]: Failed graphics backends: OPENGL,ALL,ALL,ALL,ALL,ALL,ALL,ALL,ALL
28:42:208 Core/Config.cpp:602 E[LOADER]: Graphics backend failed for 0, trying another
28:42:208 Core/Config.cpp:627 E[LOADER]: All graphics backends failed
Pixels: 960 x 544
Virtual pixels: 960 x 544
I: http_client.cpp:525: Completed downloading http://www.ppsspp.org/version.json to memory
ERROR: EGL Error EGL_BAD_ALLOC detected in file /home/pi/pes-build/ppsspp/SDL/SDLGLGraphicsContext.cpp at line 259 (0x3003)
EGL ERROR: Unable to create EGL surface!
EGL_Init() failed
GL init error ''
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
I: NativeApp.cpp:798: NativeInitGraphics
Segmentation fault (core dumped)

Here is some of the output from glxinfo in case it helps:

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_no_error,
    GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float,
    GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
    GLX_EXT_import_context, GLX_EXT_libglvnd, GLX_EXT_no_config_context,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_OML_swap_method,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
    GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context,
    GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile,
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
    GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
    GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float,
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_no_error,
    GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float,
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
    GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
    GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float,
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer,
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
    GLX_SGI_swap_control, GLX_SGI_video_sync
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Broadcom (0x14e4)
    Device: V3D 4.2 (0xffffffff)
    Version: 20.0.5
    Accelerated: yes
    Video memory: 3723MB
    Unified memory: yes
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Broadcom
OpenGL renderer string: V3D 4.2
OpenGL version string: 2.1 Mesa 20.0.5
OpenGL shading language version string: 1.20
OpenGL extensions:
    GL_AMD_conservative_depth, GL_AMD_multi_draw_indirect,
    GL_AMD_shader_trinary_minmax, GL_AMD_texture_texture4,
    GL_APPLE_packed_pixels, GL_ARB_ES2_compatibility,
    GL_ARB_ES3_compatibility, GL_ARB_arrays_of_arrays, GL_ARB_base_instance,
    GL_ARB_buffer_storage, GL_ARB_clear_buffer_object,
    GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage,
    GL_ARB_compute_shader, GL_ARB_compute_variable_group_size,
    GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_debug_output,
    GL_ARB_depth_buffer_float, GL_ARB_depth_texture, GL_ARB_draw_buffers,
    GL_ARB_draw_elements_base_vertex, GL_ARB_draw_indirect,
    GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location,
    GL_ARB_explicit_uniform_location, GL_ARB_fragment_coord_conventions,
    GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
    GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments,
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
    GL_ARB_get_program_binary, GL_ARB_get_texture_sub_image,
    GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
    GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
    GL_ARB_internalformat_query2, GL_ARB_invalidate_subdata,
    GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind,
    GL_ARB_multi_draw_indirect, GL_ARB_multisample, GL_ARB_multitexture,
    GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
    GL_ARB_parallel_shader_compile, GL_ARB_pixel_buffer_object,
    GL_ARB_point_parameters, GL_ARB_point_sprite,
    GL_ARB_program_interface_query, GL_ARB_provoking_vertex,
    GL_ARB_robustness, GL_ARB_sampler_objects, GL_ARB_separate_shader_objects,
    GL_ARB_shader_atomic_counter_ops, GL_ARB_shader_atomic_counters,
    GL_ARB_shader_bit_encoding, GL_ARB_shader_image_load_store,
    GL_ARB_shader_image_size, GL_ARB_shader_objects,
    GL_ARB_shader_storage_buffer_object, GL_ARB_shader_texture_lod,
    GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
    GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
    GL_ARB_shadow, GL_ARB_stencil_texturing, GL_ARB_sync,
    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_float, GL_ARB_texture_gather,
    GL_ARB_texture_mirrored_repeat, GL_ARB_texture_multisample,
    GL_ARB_texture_non_power_of_two, GL_ARB_texture_query_levels,
    GL_ARB_texture_query_lod, GL_ARB_texture_rectangle, GL_ARB_texture_rg,
    GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_stencil8,
    GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
    GL_ARB_texture_swizzle, GL_ARB_transform_feedback2,
    GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix,
    GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_object,
    GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object,
    GL_ARB_vertex_program, GL_ARB_vertex_shader,
    GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_window_pos,
    GL_ATI_blend_equation_separate, GL_ATI_draw_buffers,
    GL_ATI_fragment_shader, GL_ATI_separate_stencil,
    GL_ATI_texture_env_combine3, GL_ATI_texture_float,
    GL_EXT_EGL_image_storage, GL_EXT_EGL_sync, GL_EXT_abgr, GL_EXT_bgra,
    GL_EXT_blend_color, GL_EXT_blend_equation_separate,
    GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
    GL_EXT_compiled_vertex_array, GL_EXT_copy_texture,
    GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXT_draw_instanced,
    GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit,
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB,
    GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
    GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
    GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
    GL_EXT_point_parameters, GL_EXT_provoking_vertex, GL_EXT_rescale_normal,
    GL_EXT_secondary_color, GL_EXT_separate_specular_color,
    GL_EXT_shader_integer_mix, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side,
    GL_EXT_stencil_wrap, GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
    GL_EXT_texture_array, GL_EXT_texture_buffer_object,
    GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
    GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
    GL_EXT_texture_env_dot3, GL_EXT_texture_integer, GL_EXT_texture_lod_bias,
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
    GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
    GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_transform_feedback,
    GL_EXT_vertex_array, GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
    GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error,
    GL_KHR_parallel_shader_compile, GL_KHR_texture_compression_astc_ldr,
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_pack_invert,
    GL_MESA_shader_integer_functions, GL_MESA_texture_signed_rgba,
    GL_MESA_window_pos, GL_NV_blend_square, GL_NV_fog_distance,
    GL_NV_light_max_exponent, GL_NV_packed_depth_stencil,
    GL_NV_primitive_restart, GL_NV_texgen_reflection,
    GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_OES_EGL_image,
    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

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 20.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:
    GL_APPLE_texture_max_level, GL_EXT_EGL_image_storage,
    GL_EXT_base_instance, GL_EXT_blend_minmax, GL_EXT_buffer_storage,
    GL_EXT_color_buffer_float, GL_EXT_compressed_ETC1_RGB8_sub_texture,
    GL_EXT_discard_framebuffer, GL_EXT_draw_buffers,
    GL_EXT_draw_elements_base_vertex, GL_EXT_float_blend, GL_EXT_frag_depth,
    GL_EXT_geometry_point_size, GL_EXT_geometry_shader,
    GL_EXT_map_buffer_range, GL_EXT_multi_draw_arrays,
    GL_EXT_occlusion_query_boolean, GL_EXT_primitive_bounding_box,
    GL_EXT_read_format_bgra, GL_EXT_sRGB_write_control,
    GL_EXT_separate_shader_objects, GL_EXT_shader_implicit_conversions,
    GL_EXT_shader_integer_mix, GL_EXT_shader_io_blocks,
    GL_EXT_texture_border_clamp, GL_EXT_texture_format_BGRA8888,
    GL_EXT_texture_query_lod, GL_EXT_texture_rg, GL_EXT_texture_sRGB_decode,
    GL_EXT_texture_type_2_10_10_10_REV, GL_EXT_unpack_subimage,
    GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error,
    GL_KHR_parallel_shader_compile, GL_KHR_texture_compression_astc_ldr,
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_framebuffer_flip_y,
    GL_MESA_shader_integer_functions, GL_NV_draw_buffers,
    GL_NV_fbo_color_attachments, GL_NV_image_formats, GL_NV_read_buffer,
    GL_NV_read_depth, GL_NV_read_depth_stencil, GL_NV_read_stencil,
    GL_OES_EGL_image, GL_OES_EGL_image_external,
    GL_OES_EGL_image_external_essl3, GL_OES_EGL_sync,
    GL_OES_compressed_ETC1_RGB8_texture, GL_OES_depth24, GL_OES_depth_texture,
    GL_OES_depth_texture_cube_map, GL_OES_draw_elements_base_vertex,
    GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,
    GL_OES_geometry_point_size, GL_OES_geometry_shader,
    GL_OES_get_program_binary, GL_OES_mapbuffer, GL_OES_packed_depth_stencil,
    GL_OES_primitive_bounding_box, GL_OES_required_internalformat,
    GL_OES_rgb8_rgba8, GL_OES_shader_image_atomic, GL_OES_shader_io_blocks,
    GL_OES_standard_derivatives, GL_OES_stencil8, GL_OES_surfaceless_context,
    GL_OES_texture_3D, GL_OES_texture_border_clamp, GL_OES_texture_float,
    GL_OES_texture_half_float, GL_OES_texture_half_float_linear,
    GL_OES_texture_npot, GL_OES_texture_stencil8,
    GL_OES_texture_storage_multisample_2d_array, GL_OES_vertex_array_object,
    GL_OES_vertex_half_float

Mesa version is: 20.0.5

@unknownbrackets
Copy link
Collaborator

That looks exactly like #12474.

See here specifically: #12474 (comment)
And the Mesa issue: https://gitlab.freedesktop.org/mesa/mesa/issues/1976#note_285659

-[Unknown]

@neilmunday
Copy link
Contributor Author

Ok, thanks.

Is there anything I can do to help resolve or debug the issue further for you?

@unknownbrackets
Copy link
Collaborator

Well, it sounds like the mesa team was wanting someone to set some breakpoints and find out if somehow we're asking for the same surface to be used with multiple EGL instances, because that's apparently the commit it stopped working on - only on pi4, though.

-[Unknown]

@neilmunday
Copy link
Contributor Author

neilmunday commented May 2, 2020

I've now managed to get PPSSPP to work without requiring an X11 desktop under Arch Linux on the Raspberry Pi 4.

Mesa upgraded to version 20.0.6-2.
SDL2 upgraded to 2.0.12

Used the following cmake args:

-DARMV7=ON -DUSING_EGL=OFF -DUSING_GLES2=ON -DUSING_X11_VULKAN=OFF -DUSE_WAYLAND_WSI=OFF -DUSING_FBDEV=ON -DUSING_QT_UI='OFF' -DUSE_FFMPEG=yes -DUSE_SYSTEM_FFMPEG=yes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants