Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] AM3517 Neon, OpenGL & EGLFS support
Date: Fri, 7 Jun 2013 18:48:29 +0200	[thread overview]
Message-ID: <20130607184829.36e06bfb@skate> (raw)
In-Reply-To: <CALo-6+jJ7CNYrQnxdvZiS-zC8n4XqeLMHf7h9CwaGnC=u4SjfA@mail.gmail.com>

Dear Charles Krinke,

On Fri, 7 Jun 2013 08:40:40 -0700, Charles Krinke wrote:

> You touch on the key piece of understanding I am seeking.
> Unfortunately some of this understanding is obfuscated by similar
> terms used by different groups.
> 
> In the AM3517, there is a source tree called the "Graphics_SDK". And
> it contains, I believe, EGL and OpenGL implementations for the AM3517
> and other SoC from TI. Wojciech patch does define several variables
> which include headers and libraries for Qt.
> 
> I *think* we are 99% there and the missing part is this library
> constant from Raspberry Pi, but, ... because all the alphabet soup is
> different between Ti, Qt, and the rest of the opensource community, we
> get to deal with ambiguity a bit.

I am not sure what is confusing you here. OpenGL, EGL, OpenVG and so on
are APIs. Those APIs are provided by different implementations,
depending on which SoC you're using. Those implementations are
generally provided by libraries given by the SoC vendor. So in
Buildroot, a package that needs OpenGL doesn't depend directly on a
specific OpenGL implementation. Instead, it depends on 'libgles',
which is a virtual package that guarantees that *one* OpenGLES
implementation has been selected in the system.

The rpi-userland is currently the only OpenGL implementation that we
support in Buildroot (but more are coming!). So what the rpi-userland
package does in its Config.in is:

        select BR2_PACKAGE_HAS_OPENGL_EGL
        select BR2_PACKAGE_HAS_OPENGL_ES
        select BR2_PACKAGE_HAS_OPENVG
        select BR2_PACKAGE_HAS_OPENMAX

This "announces" to packages like Qt that an OpenGLES, an EGL, an
OpenVG and an OpenMAX implementation is available. Therefore, packages
like Qt are allowed to depend on virtual packages libgles, libegl,
libopenvg and libopenmax.

In turn, those virtual packages do the following:

ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
LIBGLES_DEPENDENCIES += rpi-userland
endif

ifeq ($(LIBGLES_DEPENDENCIES),)
define LIBGLES_CONFIGURE_CMDS
        echo "No libGLES implementation selected. Configuration error."
        exit 1
endef
endif

This allows to make the virtual package 'libgles' depend on
'rpi-userland' is this package is selected. However, if no dependency
exists of libgles, it means that no OpenGL implementation was selected,
which is an error: some packages (Qt for example) uses the libgles
dependency, but no OpenGLES implementation has been enabled in the
Buildroot configuration.

Again, just wait for Spenser to post his patches, it should make OpenGL
work out-of-the-box for AM3xxx.

Thanks!

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2013-06-07 16:48 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-05 17:36 [Buildroot] AM3517 Neon, OpenGL & EGLFS support Charles Krinke
2013-06-05 18:05 ` Wojciech Sleńska
2013-06-05 18:17   ` Charles Krinke
2013-06-05 22:16     ` Charles Krinke
2013-06-06 17:16       ` Wojciech Sleńska
2013-06-06 18:20         ` Charles Krinke
2013-06-06 18:26           ` Charles Krinke
2013-06-06 19:26             ` Wojciech Sleńska
2013-06-07  8:08           ` Thomas Petazzoni
2013-06-07 14:44             ` Charles Krinke
2013-06-07 15:23               ` Thomas Petazzoni
2013-06-07 15:40                 ` Charles Krinke
2013-06-07 16:48                   ` Thomas Petazzoni [this message]
2013-06-07 17:06                     ` Charles Krinke
2013-06-07 20:18                       ` [Buildroot] [RFC] ti-gfx: add new package Spenser Gilliland
2013-06-11 17:58                         ` Charles Krinke
2013-06-12 17:33                           ` Spenser Gilliland
2013-06-12 17:55                             ` Charles Krinke
2013-06-12 18:37                               ` Spenser Gilliland
2013-06-13  8:03                             ` Naumann Andreas
2013-06-13 14:11                               ` Charles Krinke
2013-06-14 20:22                                 ` Thomas Petazzoni
2013-06-14 20:58                                   ` Charles Krinke
2013-06-14 23:12                                     ` Yann E. MORIN
2013-06-15 16:28                                     ` Thomas Petazzoni
2013-06-15  9:37                                   ` Sundareson, Prabindh
2013-06-13 14:58                               ` Spenser Gilliland
2013-06-17 13:35                                 ` Andreas Naumann
2013-06-17 16:26                                   ` Spenser Gilliland
2013-06-13 16:49                         ` Arnout Vandecappelle
2013-06-14  2:20                           ` Sundareson, Prabindh
2013-06-15 16:33                             ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130607184829.36e06bfb@skate \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox