V3D - segfault: EGL_BAD_ALLOC when swtiching to master on PPSSPP
Hi! ive get this segfault when trying to run PPSSPP, and that doesnt happen on upstream 19.1 @chema
pi@raspberrypi:~ $ LD_LIBRARY_PATH=/home/pi/mesa/lib/arm-linux-gnueabihf LIBGL_DRIVERS_PATH=/home/pi/mesa/lib/arm-linux-gnueabihf/dri/ GBM_DRIVERS_PATH=/home/pi/mesa/lib glxinfo -B
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Broadcom (0x14e4)
Device: V3D 4.2 (0xffffffff)
Version: 19.3.0
Accelerated: yes
Video memory: 3917MB
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 19.3.0-devel (git-1cea76274e)
OpenGL shading language version string: 1.20
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 19.3.0-devel (git-1cea76274e)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
pi@raspberrypi:~/Desktop/PPSSPP $ ./PPSSPPSDL
I: VulkanLoader.cpp:263: VulkanMayBeAvailable: Device allowed ('SDL:Linux')
I: VulkanLoader.cpp:270: VulkanMayBeAvailable: Library loaded ('libvulkan.so')
I: VulkanLoader.cpp:321: VulkanMayBeAvailable: Enumerating instance extensions
I: VulkanLoader.cpp:332: VulkanMayBeAvailable: Instance extension count: 2
I: VulkanLoader.cpp:340: VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_report (00000009)
I: VulkanLoader.cpp:340: VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_utils (00000001)
E: VulkanLoader.cpp:358: Surface extension not found
DEBUG: Vulkan is not available, not using Vulkan.
I: Config.cpp:517: Longest display side: -1 pixels. Choosing scale 1
07:49:700 Core/Config.cpp:1187 I[LOADER]: Loading controller config: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
07:49:714 Core/Config.cpp:1272 I[LOADER]: Config saved (got storage permission): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
07:49:715 Core/Config.cpp:1285 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
Pixels: 960 x 544
Virtual pixels: 960 x 544
I: gpu_features.cpp:174: GPU Vendor : Broadcom ; renderer: V3D 4.2 version str: OpenGL ES 3.0 Mesa 19.1.0-devel ; GLSL version str: OpenGL ES GLSL ES 3.00
I: gpu_features.cpp:293: OpenGL ES 3.0 support detected!
E: SDLMain.cpp:587: Output audio samples: 1024 (requested: 2048)
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
I: NativeApp.cpp:776: NativeInitGraphics
I: NativeApp.cpp:852: NativeInitGraphics completed
07:50:540 UI/DiscordIntegration.cpp:57 I[SYSTEM]: Discord connection initialized
I: GLRenderManager.cpp:196: Running first frame (0)
07:50:888 Core/Config.cpp:1272 I[LOADER]: Config saved (clearFailedGPUBackends): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
07:50:888 Core/Config.cpp:1285 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
07:53:297 Core/Config.cpp:1272 I[LOADER]: Config saved (MainScreen::OnExit): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
07:53:299 Core/Config.cpp:1285 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
I: NativeApp.cpp:863: NativeShutdownGraphics
I: NativeApp.cpp:890: NativeShutdownGraphics done
I: GLRenderManager.cpp:225: GL submission thread paused. Frame=0
I: GLRenderManager.cpp:133: ThreadEnd
07:53:343 Core/Config.cpp:1272 I[LOADER]: Config saved (NativeShutdown): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
07:53:345 Core/Config.cpp:1285 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
I: NativeApp.cpp:1308: NativeShutdown called
I: SDLMain.cpp:936: Leaving main
pi@raspberrypi:~/Desktop/PPSSPP $ LD_LIBRARY_PATH=/home/pi/mesa/lib/arm-linux-gnueabihf LIBGL_DRIVERS_PATH=/home/pi/mesa/lib/arm-linux-gnueabihf/dri/ GBM_DRIVERS_PATH=/home/pi/mesa/lib ./PPSSPPSDL
I: VulkanLoader.cpp:263: VulkanMayBeAvailable: Device allowed ('SDL:Linux')
I: VulkanLoader.cpp:270: VulkanMayBeAvailable: Library loaded ('libvulkan.so')
I: VulkanLoader.cpp:321: VulkanMayBeAvailable: Enumerating instance extensions
I: VulkanLoader.cpp:332: VulkanMayBeAvailable: Instance extension count: 2
I: VulkanLoader.cpp:340: VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_report (00000009)
I: VulkanLoader.cpp:340: VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_utils (00000001)
E: VulkanLoader.cpp:358: Surface extension not found
DEBUG: Vulkan is not available, not using Vulkan.
I: Config.cpp:517: Longest display side: -1 pixels. Choosing scale 1
07:56:630 Core/Config.cpp:1187 I[LOADER]: Loading controller config: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
07:56:644 Core/Config.cpp:1272 I[LOADER]: Config saved (got storage permission): '/home/pi/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
07:56:645 Core/Config.cpp:1285 I[LOADER]: Controller config saved: /home/pi/.config/ppsspp/PSP/SYSTEM/controls.ini
Pixels: 960 x 544
Virtual pixels: 960 x 544
ERROR: EGL Error EGL_BAD_ALLOC detected in file /home/pi/Desktop/ppsspp/SDL/SDLGLGraphicsContext.cpp at line 259 (0x3003)
EGL ERROR: Unable to create EGL surface!
EGL_Init() failed
GL init error ''
E: SDLMain.cpp:587: Output audio samples: 1024 (requested: 2048)
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
Violación de segmento
the source file says
int8_t EGL_Init(SDL_Window *window) {
int contextVersion = 0;
EGLConfig eglConfig = EGL_FindConfig(&contextVersion);
if (!eglConfig) {
EGL_ERROR("Unable to find a usable EGL config.", true);
return 1;
}
EGLint contextAttributes[] = {
EGL_CONTEXT_CLIENT_VERSION, contextVersion,
EGL_NONE,
};
if (contextVersion == 0) {
contextAttributes[0] = EGL_NONE;
}
g_eglContext = eglCreateContext(g_eglDisplay, eglConfig, nullptr, contextAttributes);
if (g_eglContext == EGL_NO_CONTEXT) {
EGL_ERROR("Unable to create GLES context!", true);
return 1;
}
g_eglSurface = eglCreateWindowSurface(g_eglDisplay, eglConfig, g_Window, nullptr);
if (g_eglSurface == EGL_NO_SURFACE) {
EGL_ERROR("Unable to create EGL surface!", true);
return 1;
}
if (eglMakeCurrent(g_eglDisplay, g_eglSurface, g_eglSurface, g_eglContext) != EGL_TRUE) {
EGL_ERROR("Unable to make GLES context current.", true);
return 1;
}
return 0;
}
Edited by Juan A. Suárez