On Fri, 18 Sep 2015 20:49:21 +0100 "Manuel A. Fernandez Montecelo" <manuel.montez...@gmail.com> wrote:
> Control: tags -1 + moreinfo > > > 2015-07-21 12:22 Prof. Dr. Gundolf Kiefer: > >Package: libsdl2 (source package) > >Version: 2.0.2+dfsg1-6 > > > >It appears that in the present version (2.0.2) of libSDL2, > >hardware acceleration based on OpenGL ES2 does not to work properly if > >both OpenGL and OpenGL ES2 support are compiled in at the same time. > > > >I am using libSDL2 on an embedded Linux board (Cubietruck, A20 SoC, > >Mali 400 GPU), running under Debian Jessie, architecture 'armhf'. > > > >With the stock Debian package, the renderer 'opengles2' is available, > >i.e. reported by 'SDL_GetNumRenderDrivers'/'SDL_GetRenderDriverInfo', > >but not functional on my system. When selected manually, 'SDL_CreateRenderer' > >fails with the SDL error "GLX is not supported". > > How do you select it manually, in code or with environment variables? In code. The invokation is sdlRenderer = SDL_CreateRenderer (sdlWindow, 1, 0); after SDL_GetRenderDriverInfo (1, &renInfo); returned the string "opengles2" in the field 'SDL_RendererInfo renInfo.name'. > Also, do you have any implementation of the relevant package installed, > like "libgles2-mesa:armhf" (there are specific packages for some cards)? Of course. Also, I tried to enforce the loading of the correct driver using LD_PRELOAD/LD_LIBRARY_PATH, without success. On the other hand, after compiling the Debian package with the option '--disable-video-opengl', everything worked out-of-the-box on the same machine and same installation. (For completeness: I used the Mali 400 driver from https://github.com/linux-sunxi/sunxi-mali.git, but this should not matter in this case.) Could the issue perhaps be related to conflicting GL and GLES2 headers? From src/video/SDL_video.c:42: ... /* GL and GLES2 headers conflict on Linux 32 bits */ #if SDL_VIDEO_OPENGL_ES2 && !SDL_VIDEO_OPENGL #include "SDL_opengles2.h" #endif /* SDL_VIDEO_OPENGL_ES2 && !SDL_VIDEO_OPENGL */ ... > > Maybe the problem is that the support is there, but when it wants to > load the library to do the actual rendering it doesn't, and emits that > error (or tries that first and defaults to GLX and also fails -- not > sure). > > > >If I rebuild the package with the only additional configuration option > >'--disable-video-opengl', it works fine. > > > >diff -p libsdl2-2.0.2+dfsg1/debian/rules libsdl2-2.0.2+dfsg1-gk1/debian/rules > >*** libsdl2-2.0.2+dfsg1/debian/rules Thu Nov 27 18:53:32 2014 > >--- libsdl2-2.0.2+dfsg1-gk1/debian/rules Fri Jul 3 17:11:37 2015 > >*************** confflags = --disable-rpath --enable-sdl > >*** 9,14 **** > >--- 9,15 ---- > > --disable-nas --disable-esd --disable-arts \ > > --disable-alsa-shared --disable-pulseaudio-shared \ > > --disable-x11-shared --disable-video-directfb \ > >+ --disable-video-opengl \ > > --enable-video-opengles \ > > --enable-video-wayland --disable-wayland-shared > > > > > >I am not too familiar with the libSDL2 code, and I am not sure if this > >issue can easily be solved upstream. For the time being, I suggest to provide > >two alternative binary packages with EITHER OpenGL or OpenGL ES2 > >enabled and the other disabled. > > SDL libraries had that in the past with audio drivers, and actually it > is quite a hassle. > > If the driver GLX does not work in armhf, maybe it's better to disable > it altogether. > > > Cheers. --------------------------------------------------------------- Prof. Dr. Gundolf Kiefer Effiziente Eingebettete Systeme - Efficient Embedded Systems Fakultät für Informatik - Faculty of Computer Science Hochschule Augsburg - University of Applied Sciences http://www.hs-augsburg.de/~kiefer ---------------------------------------------------------------