Buildroot:GSoC2014 Multimedia

= Boards =

From the 2013 Google Summer of Code:
 * Pandaboard (TI OMAP4)
 * 3D acceleration: normally supported by the ti-gfx package. Should work with EGL, support under X.org unknown.
 * No more upstream support (in TI SDK or IMG DDK) since a while. No need to spend time on it right now.
 * video decoding acceleration: unknown.
 * Misc: how does gst-omapfb fit in the picture?
 * BeagleBoneBlack (TI AM335x)
 * 3D acceleration: normally supported by the ti-gfx package. Should work with EGL, support under X.org unknown. Was not tested last year, since 3D acceleration was not ready yet at the time.
 * 3D acceleration OK in framebuffer. X.org support is not tested in latest TI SDK versions, didn't try it for now.
 * video decoding acceleration: unknown.
 * BeagleBoard XM (TI OMAP3)
 * 3D acceleration: normally supported by the ti-gfx package. Should work with EGL, support under X.org unknown.
 * video decoding acceleration: unknown.
 * SABRE (Freescale i.MX6)
 * 3D acceleration: normally supported by the gpu-viv-bin-mx6q package. Should work with EGL. For X.org, there are some patches pending.
 * video decoding acceleration: unknown.
 * Wandboard (Freescale i.MX6)
 * 3D acceleration: normally supported by the gpu-viv-bin-mx6q package. Should work with EGL. For X.org, there are some patches pending.
 * video decoding acceleration: unknown.
 * Cubieboard (Allwinner)
 * 3D acceleration: normally supported by the sunxi-mali package. Should work with EGL, support under X.org unknown.
 * video decoding acceleration: normally supported by the sunxi-cedarx package. Not sure with what they are interfaced, though.
 * ODROID-U2 (Samsung Exynos)
 * 3D acceleration: not done
 * video decoding acceleration: not done

To buy or get sponsored:
 * An x86 platform with an Intel card (to test full OpenGL support in Mesa)
 * Minnowboard Max could be a candidate, see http://www.minnowboard.org/meet-minnowboard-max/
 * Thomas has requested sponsoring from CircuitCo on this topic.
 * An x86 platform with an AMD APU (ditto mesa3d)
 * A RaspberryPi:
 * 3D acceleration: through the rpi-userland</tt> package. Works with EGL, support under X.org unknown.
 * video decoding acceleration: through the rpi-userland</tt> and gst-omx</tt> packages.

Bonus:
 * An x86 platform with an NVidia card
 * using nouveau (to test full OpenGL support in Mesa)
 * using the NVidia blob (to be packaged)

= TODO =


 * Support OpenGL on Exynos
 * Make sure OpenGL on Beagle Bone Black is working
 * OK.
 * Help mainlining all the pending Buildroot patches related to multimedia
 * #278299 : sunxi-cedarx: bump to newer version, use armel2 binaries, add demo
 * #278300 : libpng12: new package (needed for #278304)
 * #278301 : libpng: ensure libpng12 is installed before libpng (needed for #278300)
 * #278304 : glmark2: new package
 * WIP: starting point.
 * #278305 : mesa3d-demos: new package
 * WIP. Currently didn't find a driver to run it.
 * #315600 : Qt4: adapt for X11
 * #336028 : qt5declarative: Reduce dependencies to GLes2 only
 * #336031 : Add support for Vivante xdriver
 * #336827 : libva: new package
 * In Bernd/Yann' series : http://lists.busybox.net/pipermail/buildroot/2014-June/099210.html
 * #336825 : libva-intel-driver: new package
 * In Bernd/Yann' series : http://lists.busybox.net/pipermail/buildroot/2014-June/099213.html
 * #336830 : ffmpeg: Add libva support
 * In Bernd/Yann' series : http://lists.busybox.net/pipermail/buildroot/2014-June/099214.html
 * #336824 : libglu: new package
 * In Bernd/Yann' series : http://lists.busybox.net/pipermail/buildroot/2014-June/099209.html
 * #336828 : libglew: new package
 * In Bernd/Yann' series : http://lists.busybox.net/pipermail/buildroot/2014-June/099212.html
 * #336826 : sdl: Add new dependency libglu for opengl support
 * In Bernd/Yann' series : http://lists.busybox.net/pipermail/buildroot/2014-June/099207.html
 * Add support for etnaviv (i.MX6 open-source OpenGL implementation)
 * Create new packages for (no specific ordering):
 * x86-video-fbturbo driver, see https://github.com/ssvb/xf86-video-fbturbo
 * glamor for 2D acceleration using OpenGL, see: http://www.freedesktop.org/wiki/Software/Glamor/
 * Qt5 Cinematic Experience demonstration, see http://quitcoding.com/?page=work
 * demo/benchmark application, see https://github.com/prabindh/xgxperf
 * gtk3
 * WIP.
 * Update Webkit
 * WIP: still have a make hang in parallel build with make 3.81.

= Weekly reports =

Day 1

 * OpenGL on BeagleBone Black
 * Defconfig based on beaglebone_defconfig with mainly ti-gfx
 * Kernel boot: OK
 * Init: OK
 * Fail to load ti-gfx module
 * track: fbset missing
 * Patchwork
 * #278305 (mesa3d-demos: new package): updating, currently not working

Day 2

 * OpenGL on BeagleBone Black
 * Still can't load ti-gfx module
 * Adding fbset eliminated of course one error
 * now /dev/fb0 is not found


 * Patchwork
 * #278305 (mesa3d-demos: new package): updated and rebased on master. Testing build for x86 failed :
 * with DRI i965 driver (depends on X.org and provides full libgl with mesa3d): failed because it needs glew (not yet packaged in BR).
 * with Gallium nouveau driver (provides only libgles and libegl with mesa3d): failed due to linking errors for xdemos/* binaries. No refererences to all OpenGL functions (mesa3d build fine, libs are installed, correct PATH).
 * at least glew is a dependency for full OpenGL/X.org demos.

Day 3

 * OpenGL on BeagleBone Black
 * Still can't load ti-gfx module
 * forget to select again OMAP DSS driver between two configs... But even with it /dev/fb0 is still missing.


 * Patchwork
 * #278305 (mesa3d-demos: new package): testing build for x86 was not a very good idea, as the support for mesa3d, especially on x86, is very recent and untested. Next builds will be done on RPi's OpenGL implementation.
 * build fine for RPi
 * no problem with the framebuffer, tested some non OpenGL program
 * but failed to execute es2gears_screen (mesa3d-demos) with error "EGLUT: EGL_MESA_screen_surface is not supported".

Day 4

 * OpenGL on BeagleBone Black
 * have to select FB_DA8XX_TDA998X in kernel config to have /dev/fb0
 * Still can't load ti-gfx modules, problem with symbols exportation. Have those errors :
 * pvrsrvkm: Unknown symbol v7_dma_map_area (err 0)
 * pvrsrvkm: Unknown symbol v7_dma_flush_range (err 0)

Day 5

 * OpenGL on BeagleBone Black
 * ti-gfx modules are loaded, have to apply this patch : https://github.com/RobertCNelson/stable-kernel/blob/b00edc3576118e9ed3e987f9a2a3499b7dd792f5/patches/omap_sgx/0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch

Day 6

 * OpenGL on BeagleBone Black
 * ti-gfx OpenGL demos run fine in framebuffer, it's OK
 * sent patches to improve OpenGL support on BBB and fix fbset dependency for ti-gfx


 * Patchwork
 * #278305 (mesa3d-demos: new package): no solution to run it on RPi.

Week's summary
OpenGL on BBB is supported out of the box in framebuffer, demos run fine

Day 1

 * ti-gfx: bump SDK version to 5_01_01_01, tested on BBB, patch sent


 * updating package/webkit to last version

Week's summary

 * bump WebKit to 2.4.3
 * need Pango >= 1.30.0
 * try Pango 1.36.3 (last version): fails, error during reconfigure: "gtk-doc.make:270: error: HAVE_GTK_DOC does not appear in AM_CONDITIONAL". Seems to need gtk-doc-am for an obscure raison. No patch yet.
 * try Pango 1.30.1: OK. Build fine, good enough for WebKit.
 * bump Pango to 1.30.1
 * enable EGL/GLES2 support fails. Doesn't find EGL/egl.h while it is there (finds well GLES2/gl2.h).
 * disable acceleration for now
 * had to provide again AR_FLAGS="cru" in WEBKIT_CONF_ENV to prevent ar to make thin archives and fix the error: `x' cannot be used on thin archives.
 * have a strange deadlock with parallel make, currently only on the build server (builds fine with -j8 on my laptop). make block and freeze on libWebCoreSVG.la (while: CXXLD libWebCoreSVG.la). Fine with -j1 (well, if >10 hours build time is fine). Is it the make version? Will try in a Debian chroot.


 * GTK3: new package
 * still some errors I resolve step by step.

Day 1

 * bump WebKit to 2.4.3
 * the problem for finding EGL/egl.h only occurs with rpi-userland for now. With ti-gfx it's found.
 * libXcomposite and libXdamage are also needed with GLES/EGL (not only GL as previously).