From d8299af4ab6fe4b334292e3b6e69e4331c05d86f Mon Sep 17 00:00:00 2001
From: Chia-I Wu The current version of the OpenGL ES state trackers implement OpenGL ES 1.1 and OpenGL ES 2.0.
+More informations about OpenGL ES can be found at
+http://www.khronos.org/opengles/. The OpenGL ES state trackers depends on the Gallium architecture and a
+working EGL implementation. It will install libGLESv1_CM, libGLESv2, libEGL, and one or more EGL drivers for your hardware. There are some demos in The core of OpenGL ES state trackers is the ES overlay. It is located in
+ The ES overlay uses as much code as possible from Mesa. It has its own glapi XMLs to describe the APIs of OpenGL ES. The ES overlay can be built parallelly with Mesa, and they will give The OpenGL ES state trackers and APIs are then used by The ES overlay uses an additional indirection when dispatching fucntions The indirection serves several purposes Other than the last case, the ES overlay uses OpenGL ES State Trackers
+
+Build the Libraries
+
+
+
+configure with --with-state-trackers=egl_g3d,es and enable the Gallium driver for your hardware.Run the Demos
+
+progs/es1/ and progs/es2/. You can use them to test your build. For example,
+ $ export EGL_DRIVER=/usr/local/lib/dri/egl_x11_i915.so # specify the EGL driver
+ $ cd progs/es1/xegl
+ $ make
+ $ ./torus
+
+
+Developers
+
+src/mesa/es/.Structure
+
+
+
+
+
+ Library Name Usage Source
+ libmesagallium.a OpenGL state tracker Mesa
+ libes1gallium.a OpenGL ES 1.x state tracker ES overlay
+ libes2gallium.a OpenGL ES 2.x state tracker ES overlay
+ libglapi.a OpenGL API Mesa
+ libes1api.a OpenGL ES 1.x API ES overlay
+libes2api.a OpenGL ES 2.x API ES overlay src/gallium/state_trackers/es/ to create the final libraries.Dispatch Table
+
+
+ Mesa: glFoo() --> _mesa_Foo()
+ ES overlay: glFoo() --> _es_Foo() --> _mesa_Foo()
+
+
+
+
+
+APIspec.xml to generate functions to check and/or converts the arguments.
+Follow the links above for list archives. +
+For mailing lists about Direct Rendering Modules (drm) in Linux/BSD -kernels, see wiki. +kernels, see the + +DRI wiki. +
-Notice: non-member posts to any of these lists will be automatically -rejected. +Notice: You must subscribe to these lists in order to post to them.
-- cgit v1.2.3 From ada46053a4b37967cc53355b9baf712aa5a8bafd Mon Sep 17 00:00:00 2001 From: Chia-I WuThe current version of EGL in Mesa implements EGL 1.4. More information +about EGL can be found at +http://www.khronos.org/egl/.
+ +The Mesa's implementation of EGL uses a driver architecture. The main
+library (libEGL) is window system neutral. It provides the EGL
+API entry points and helper functions for use by the drivers. Drivers are
+dynamically loaded by the main library and most of the EGL API calls are
+directly dispatched to the drivers.
The driver in use decides the window system to support. For drivers that +support hardware rendering, there are usually multiple drivers supporting the +same window system. Each one of of them supports a certain range of graphics +cards.
+ +Run configure with the desired state trackers and and enable
+the Gallium driver for your hardware. For example
+ $ ./configure --with-state-trackers=egl_g3d,es,vega --enable-gallium-intel ++ +
The main library will be enabled by default. The egl_g3d 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
+1.x.
In the given example, it will build and install libEGL,
+libGLESv1_CM, libGLESv2, libOpenVG, and
+one or more EGL drivers.
There are several options that control the build of EGL at configuration +time
+ +--enable-egl
+
+By default, EGL is enabled. When disabled, the main library and the drivers +will not be built.
+ +--with-egl-displays
+
+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).
--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_g3d state tracker.
+They will not be built without the egl_g3d state
+tracker.
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 several environment variables that control the behavior of EGL at +runtime
+ +EGL_DRIVER
+
+This variable forces the specified EGL driver to be loaded. It comes in +handy when one wants to test a specific driver.
+ +EGL_DISPLAY
+
+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,
+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.
+
+
EGL_LOG_LEVEL
+
+This changes the log level of the main library and the drivers. The valid
+values are: debug, info, warning, and
+fatal.
EGL_SOFTWARE
+
+For drivers that support both hardware and software rendering, setting this +variable to true forces the use of software rendering.
+ +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_g3d state
+tracker to build. The available drivers are
egl_<dpy>_i915egl_<dpy>_i965egl_<dpy>_radeonegl_<dpy>_nouveauegl_<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.
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
egl_glx
+
+This driver provides a wrapper to GLX. It uses exclusively GLX to implement +the EGL API. It supports both direct and indirect rendering when the GLX does. +It is accelerated when the GLX is. As such, it cannot provide functions that +is not available in GLX or GLX extensions.
+egl_xdri
+
+This driver supports the X Window System as its window system. It functions
+as a DRI driver loader. Unlike egl_glx, it has no dependency on
+libGL. It talks to the X server directly using DRI or DRI2
+protocols. It also talks minimal GLX protocol for things like available
+visuals or fbconfigs. With direct access to the DRI drivers, it has the
+potential to support more EGL functions that are not possible with
+egl_glx
egl_dri
+
+This driver lacks maintenance and does not build. It is similiar
+to egl_xdri in that it functions as a DRI driver loader. But
+unlike egl_xdri, it supports Linux framebuffer devices as its
+window system and supports EGL_MESA_screen_surface extension. It loads only
+DRI1 drivers. As DRI1 drivers is phasing out, it might be better to rewrite
+the driver to support KMS and DRI2.
To use the classic drivers, one must manually set EGL_DRIVER at
+runtime.
src/egl/. The sources of the egl_g3d state tracker
+can be found at src/gallium/state_trackers/egl_g3d/.
+
+EGL_DISPLAY loads all
+drivers and might eat too much memory.The OpenGL ES state trackers depends on the Gallium architecture and a -working EGL implementation.
+working EGL implementation. Please refer to Mesa EGL +for more information about EGL.There are some demos in progs/es1/ and progs/es2/. You can use them to test your build. For example,
- $ export EGL_DRIVER=/usr/local/lib/dri/egl_x11_i915.so # specify the EGL driver $ cd progs/es1/xegl $ make $ ./torus diff --git a/docs/openvg.html b/docs/openvg.html index 442ee522f1..cd39b133c4 100644 --- a/docs/openvg.html +++ b/docs/openvg.html @@ -1,6 +1,6 @@ --Mesa Release Notes +OpenVG State Tracker @@ -20,12 +20,13 @@ http://www.khronos.org/openvg/ .The OpenVG state tracker depends on the Gallium architecture and a working EGL implementation. +Please refer to Mesa EGL for more information about EGL.
Building the library
-
@@ -33,12 +34,9 @@ The OpenVG state tracker depends on the Gallium architecture and a working EGL i- Build Mesa3D with Gallium3D. Any build that builds Gallium3D libraries and EGL will suffice
+- Build Mesa3D with Gallium3D. Any build that builds Gallium3D libraries, EGL, and Gallium EGL drivers will suffice
- cd src/gallium/state_trackers/vega; make
- The last step will build libOpenVG library. You can add the libdir to LD_LIBRARY_PATH or install libOpenVG
Sample build
A sample build looks as follows:- make linux-x86-64-debug - cd src/gallium/state_trackers/vega - make - cd ../../../.. - export LD_LIBRARY_PATH=$PWD/lib64 - export EGL_DRIVER="egl_softpipe" + $ ./configure --with-state-trackers=egl_g3d,vega --enable-gallium-intel + $ make + $ make installOpenVG Demos
@@ -59,10 +57,5 @@ To run a demo: