X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=docs%2Fegl.html;h=b2198e931d078035bd1f075c68150c283a2ddbde;hb=7a9246c5d72290ed8455a426801b85b54374e102;hp=9eba402411d9f1a420173d96f9ada800e831d1f7;hpb=a1af8eec66c5f7ec421e8011b41c1a7c36319f9f;p=mesa.git diff --git a/docs/egl.html b/docs/egl.html index 9eba402411d..b2198e931d0 100644 --- a/docs/egl.html +++ b/docs/egl.html @@ -28,17 +28,17 @@ cards.
Run configure
with the desired state trackers and and enable
+
Run configure
with the desired state trackers and enable
the Gallium driver for your hardware. For example
- $ ./configure --with-state-trackers=egl,es,vega --enable-gallium-{swrast,intel} + $ ./configure --enable-gles-overlay --with-state-trackers=egl,vega --enable-gallium-{swrast,intel}-
The main library will be enabled by default. The egl
state
+
The main library and OpenGL is enabled by default. The first option enables
+OpenGL ES 1.x and 2.x. The egl
state
tracker is needed by a number of EGL drivers. EGL drivers will be covered
-later. The es state tracker provides OpenGL ES 1.x
-and 2.x and the vega state tracker provides OpenVG
+later. The vega state tracker provides OpenVG
1.x.
In the given example, it will build and install libEGL
,
-libGLESv1_CM
, libGLESv2
, libOpenVG
, and
-one or more EGL drivers.
libGL
, libGLESv1_CM
, libGLESv2
,
+libOpenVG
, and one or more EGL drivers.
${libdir}/egl
.
---with-egl-displays
+--with-egl-platforms
-List the window system(s) to support. It is by default x11
,
-which supports the X Window System. Its argument is a comma separated string
-like, for example, --with-egl-displays=x11,kms
. Because an EGL
-driver decides which window system to support, this example will enable two
-(sets of) EGL drivers. One supports the X window system and the other supports
-bare KMS (kernel modesetting).
List the native platform window system(s) to support. It is by default
+x11
, which supports the X Window System. Its argument is a comma
+separated string like, for example, --with-egl-platforms=x11,kms
.
+Because an EGL driver decides which window system to support, this example will
+enable two (sets of) EGL drivers. One supports the X window system and the
+other supports bare KMS (kernel modesetting).
The available platforms are x11
, kms
,
+fbdev
, and gdi
. The gdi
platform can
+only be built with SCons.
--with-state-trackers
The argument is a comma separated string. It is usually used to specify the
-rendering APIs, like OpenGL ES or OpenVG, to build. But it should be noted
-that a number of EGL drivers depend on the egl
state tracker.
-They will not be built without the egl
state tracker.
egl
state tracker. They will
+not be built without the egl
state tracker.
+
+--enable-gles-overlay
+
+OpenGL and OpenGL ES are not controlled by
+--with-state-trackers
. OpenGL is always built. To build OpenGL
+ES, this option must be explicitly given.
--enable-gles1
and --enable-gles2
+
+Unlike --enable-gles-overlay
, which builds one library for each
+rendering API, these options enable OpenGL ES support in OpenGL. The result is
+one big library that supports multiple APIs. This is used by DRI drivers and
+egl_dri2
EGL driver.
The OpenGL state tracker is not built in the above example. It should be
-noted that the classic libGL
is not a state tracker and cannot be
-used with EGL (unless the EGL driver in use is egl_glx
). To build
-the OpenGL state tracker, one may append glx
to
---with-state-trackers
and manually build
-src/gallium/winsys/xlib/
.
The demos for OpenGL ES and OpenVG can be found in progs/es1/
,
-progs/es2/
and progs/openvg/
. You can use them to
-test your build. For example,
- $ cd progs/es1/xegl - $ make - $ ./torus -+
There are demos for the client APIs supported by EGL. They can be found in +mesa/demos repository.
EGL_DISPLAY
+EGL_PLATFORM
When EGL_DRIVER
is not set, the main library loads all
-EGL drivers that support a certain window system. EGL_DISPLAY
can
-be used to specify the window system and the valid values are, for example,
+EGL drivers that support a certain window system. EGL_PLATFORM
+can be used to specify the window system and the valid values are, for example,
x11
or kms
. When the variable is not set, the main
library defaults the value to the first window system listed in
---with-egl-displays
at configuration time.
+--with-egl-platforms
at configuration time.
There are two categories of EGL drivers: Gallium and classic.
-Gallium EGL drivers supports all rendering APIs specified in EGL 1.4. The
-support for optional EGL functions and EGL extensions is usually more complete
-than the classic ones. These drivers depend on the egl
state
-tracker to build. The available drivers are
Gallium EGL drivers supports all rendering APIs specified in EGL 1.4. These
+drivers depend on the egl
state tracker to build. The available
+drivers are
egl_<dpy>_i915
egl_<dpy>_i965
egl_<dpy>_radeon
egl_<dpy>_nouveau
egl_<dpy>_radeon
egl_<dpy>_swrast
egl_<dpy>_vmwgfx
<dpy>
is given by --with-egl-displays
at
-configuration time. There will be one EGL driver for each combination of the
-displays listed and the hardware drivers enabled.
<dpy>
is given by --with-egl-platforms
at
+configuration time. There is usually one EGL driver for each combination of
+the platforms listed and the pipe drivers enabled. When the platform is pure
+software or pure hardware, non-working combinations will not be built.
Classic EGL drivers, on the other hand, supports only OpenGL as its
-rendering API. They can be found under src/egl/drivers/
. There
-are 3 of them
Classic EGL drivers, on the other hand, support only a subset of the
+available rendering APIs. They can be found under
+src/egl/drivers/
. There are 3 of them
egl_glx
@@ -302,14 +309,21 @@ pbuffer surfaces. Therefore, the driver is responsible to guarantee that the
client API renders to the specified render buffer for pixmap and pbuffer
surfaces.
+EGLDisplay
MutexEGLDisplay
will be locked before calling any of the dispatch
+functions (well, except for GetProcAddress which does not take an
+EGLDisplay
). This guarantees that the same dispatch function will
+not be called with the sample display at the same time. If a driver has access
+to an EGLDisplay
without going through the EGL APIs, the driver
+should as well lock the display before using it.
+
EGL_DISPLAY
loads all
+EGL_PLATFORM
loads all
drivers and might eat too much memory.glxinit.c
and sources from src/glx/x11/