On Fri, Sep 15, 2017 at 11:37 AM Andrew Henderson <[email protected]>
wrote:

> BES is built without X, as it uses SGX OpenGL ES on the framebuffer. SDL
> 1.2 initializes for ALSA audio, input via the framebuffer (i.e. keyboard
> input) and Linux joystick devices, and video using full-screen 16 BPP with
> the framebuffer target. I fill the framebuffer with all black pixels and
> then ignore it (so no SDL_Flip() or SDL_UpdateRect() calls). The emulators
> render into SDL_Surfaces, and I take the pixel data of these surfaces,
> copy them into GLES textures, and then map those textures onto a pair of
> triangles covering the entire screen. This gives me scaling and bilinear
> filtering to any size display without requiring a software scaler.
>
> Whenever I'm going to process the SDL event loop, I first check the
> BBB-specific inputs (PRU gamepads or GPIO inputs), generate the
> appropriate SDL_Events to represent input events, and then add those key
> events into the SDL event queue as key events. Then I do the SDL event
> loop and process key and joystick events as I normally would. This makes
> the hardware-specific inputs appear as keypresses to the emulators and
> front-end GUI. The block of GPIOs I use for the 12 gamepad inputs (4
> d-pad, 8 buttons, 1 pause button) are the pins on the P8 header that
> aren't blocked by the LCD3 cape. If you want to change the GPIOs that are
> used, the GPIO numbers are stored in BES's SQL database.
>
> As for your EGL error, I suspect it is a change in datatype definitions.
> I've had a few people mention similar things regarding EGL. Don't install
> the Mesa headers. Or rather, the Mesa OpenGL headers should be OK, but the
> EGL ones will not be. Instead, point to the reference implementation
> headers from Khronos:
>
> https://www.khronos.org/registry/EGL/api/EGL/
>
> An apt-get of the Mesa EGL headers will get headers intended to run on an
> X11-based system. Look at the Khronos API reference for
> eglCreateWindowSurface():
>
>
> https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglCreateWindowSurface.xhtml
>
> The third parameter is of type NativeWindowType, which is intended to be a
> "placeholder" for the proper datatype. Now look at the Mesa and Khronos
> reference headers:
>
> https://github.com/mesa3d/mesa/blob/master/include/EGL/egl.h
> https://www.khronos.org/registry/EGL/api/EGL/egl.h
>
> These two list the third parameter as having the type EGLNativeWindowType.
> As the API changes, it must remain binary compatible with older versions
> of the GLES libraries. The actual datatype of EGLNativeWindowType varies a
> lot depending upon the particular platform you are working on, and the
> Mesa and Khronos reference implementations differ in that regard:
>
> https://github.com/mesa3d/mesa/blob/master/include/EGL/eglplatform.h
> https://www.khronos.org/registry/EGL/api/EGL/eglplatform.h
>
> So, use the Khronos EGL headers, not the ones from Mesa, and you should
> get a clean build. Alternatively, you can force a cast on that parameter
> and it will probably work for you OK.
>
> I've been meaning to get around to putting some fixes into BES and clean
> up its code in the next month or two, so I'll pull in any patches that you
> want to throw my way.
>

Awesome, thanks.

It seems you are still linking in libX11. Is that right?


>
> Andrew
>
>
> On Fri, 15 Sep 2017, Jason Kridner wrote:
>
> > Andrew and all,
> > I'm looking to compile https://github.com/hendersa/bes for an Adafruit
> 1.8"
> > SPI LCD and GPIO buttons.
> >
> > I'm trying to integrate on top of Debian Jessie or Stretch. I plan to
> make
> > the PRU updates to use remote-proc as that change looks pretty easy.
> >
> > Do you compile BES without X11? I'm thinking that might be my issue, but
> I'm
> > not sure how the various EGL headers get selected in Debian.
> >
> > I'm getting the following error:
> > g++ -I. -Ines -Isqlite -c -O3 -fomit-frame-pointer -pedantic -Wall -W
> > -Wno-unused-parameter -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
> > -DFRAMESKIP -DNO_FFMPEG -DFINAL_VERSION -DSDL -DNO_LINK -DC_CORE -DNO_ASM
> > -DZLIB -DHAVE_LIBPNG -DHAVE_MKSTEMP -DHAVE_STRINGS_H -DHAVE_SYS_IOCTL_H
> > -DHAVE_STDINT_H  eglSetup.cpp -o eglSetup.o
> > eglSetup.cpp: In function ‘int EGLInitialize()’:
> > eglSetup.cpp:123:64: error: invalid conversion from ‘EGLSurface {aka
> void*}’
> > to ‘EGLNativeWindowType {aka long unsigned int}’ [-fpermissive]
> >      surface = eglCreateWindowSurface(display, config, window, 0);
> >                                                                 ^
> > Makefile:75: recipe for target 'eglSetup.o' failed
> > make: *** [eglSetup.o] Error 1
> >
> > Here's what I have in my include file:
> > /usr/include/EGL/egl.h:EGLAPI EGLSurface EGLAPIENTRY
> eglCreateWindowSurface
> > (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint
> > *attrib_list);
> > /usr/include/EGL/egl.h:typedef void *EGLSurface;
> > /usr/include/EGL/eglplatform.h:typedef EGLNativeWindowType
> >  NativeWindowType;
> >
> > I'm thinking I can just adjust the BES source to use (NativeWindow)X,
> where
> > X is my framebuffer,
> > but https://e2e.ti.com/support/embedded/linux/f/354/t/116795 points to
> > problems specifying any framebuffer other than 0. Is hacking on
> eglSetup.cpp
> > what I should be doing or will it be fruitless?
> >
> > Regards,
> > Jason
> > --
> > https://beagleboard.org/about
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Beagle Alpha" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to [email protected].
> > For more options, visit https://groups.google.com/d/optout.
> >
> >

-- 
https://beagleboard.org/about

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/CA%2BT6QPkdA-f%2BJTuFvnNtBsPijBcZ0CzRTeKE_rtAdENBKT%3Dsfw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to