X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=docs%2Fegl.html;h=3d8a85b4e7eecb1c07a15b87cd5d5dac54b19698;hb=784d81e97ee821790d1898adc5a7027050001e29;hp=33e9187ce7f9f1288fc61e2e6abfed635f6784ed;hpb=cd1cf788280a1eb10d54e1a2b8b069ed7b89c724;p=mesa.git diff --git a/docs/egl.html b/docs/egl.html index 33e9187ce7f..3d8a85b4e7e 100644 --- a/docs/egl.html +++ b/docs/egl.html @@ -1,17 +1,25 @@ - - -Mesa EGL + + + + + Mesa EGL + + + - +
+

The Mesa 3D Graphics Library

+
- + +

Mesa EGL

The current version of EGL in Mesa implements EGL 1.4. More information about EGL can be found at - -http://www.khronos.org/egl/.

+ +https://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 @@ -29,12 +37,14 @@ directly dispatched to the drivers.

the driver for your hardware. For example

-  $ ./configure --enable-gles2 --enable-openvg --enable-gallium-nouveau
+  $ ./configure --enable-gles1 --enable-gles2 \
+                --with-dri-drivers=... \
+                --with-gallium-drivers=...
 
-

The main library and OpenGL is enabled by default. The first option above -enables OpenGL ES 2.x. The second option enables -OpenVG.

+

The main library and OpenGL is enabled by default. The first two options +above enables OpenGL ES 1.x and 2.x. The last two +options enables the listed classic and Gallium drivers respectively.

@@ -42,76 +52,70 @@ enables OpenGL ES 2.x. The second option enables

In the given example, it will build and install libEGL, -libGL, libGLESv1_CM, libGLESv2, -libOpenVG, and one or more EGL drivers.

+libGL, libGLESv1_CM, libGLESv2, and one +or more EGL drivers.

Configure Options

There are several options that control the build of EGL at configuration time

- +

Use EGL

@@ -125,69 +129,37 @@ mesa/demos repository.

There are several environment variables that control the behavior of EGL at runtime

- + +

EGL Drivers

- +

Packaging

The ABI between the main library and its drivers are not stable. Nor is -there a plan to stabilize it at the moment. Of the EGL drivers, -egl_gallium has its own hardware drivers and client API modules. -They are considered internal to egl_gallium and there is also no -stable ABI between them. These should be kept in mind when packaging for -distribution.

- -

Generally, egl_dri2 is preferred over egl_gallium -when the system already has DRI drivers. As egl_gallium is loaded -before egl_dri2 when both are available, egl_gallium -may either be disabled with --disable-gallium-egl or packaged -separately.

+there a plan to stabilize it at the moment.

Developers

-

The sources of the main library and the classic drivers can be found at -src/egl/. The sources of the egl state tracker can -be found at src/gallium/state_trackers/egl/.

- -

The suggested way to learn to write a EGL driver is to see how other drivers -are written. egl_glx should be a good reference. It works in any -environment that has GLX support, and it is simpler than most drivers.

+

The sources of the main library and drivers can be found at +src/egl/.

Lifetime of Display Resources

@@ -250,8 +186,8 @@ longer than the display that creates them.

In EGL, when a display is terminated through eglTerminate, all display resources should be destroyed. Similarly, when a thread is released -throught eglReleaseThread, all current display resources should be -released. Another way to destory or release resources is through functions +through eglReleaseThread, all current display resources should be +released. Another way to destroy or release resources is through functions such as eglDestroySurface or eglMakeCurrent.

When a resource that is current to some thread is destroyed, the resource @@ -317,17 +253,6 @@ 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. -

TODOs

- - - +