X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=docs%2Fegl.html;h=6f4028f756acfdef34ed4bcfb45b5a067a034445;hb=4793e2c88881380ce126a733dbbf5051d39c41fc;hp=240cec53af17a63b3b73cc8160ccf7e28c0d01c8;hpb=76d4f9e404697d82eb266a1652f95acee18fec61;p=mesa.git diff --git a/docs/egl.html b/docs/egl.html index 240cec53af1..6f4028f756a 100644 --- a/docs/egl.html +++ b/docs/egl.html @@ -2,24 +2,24 @@ - Mesa EGL + EGL
-

The Mesa 3D Graphics Library

+ The Mesa 3D Graphics Library
-

Mesa EGL

+

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 @@ -33,18 +33,21 @@ directly dispatched to the drivers.

  1. -

    Run configure with the desired client APIs and enable -the driver for your hardware. For example

    +

    Configure your build with the desired client APIs and enable +the driver for your hardware. For example:

    -  $ ./configure --enable-gles1 --enable-gles2 \
    -                --with-dri-drivers=... \
    -                --with-gallium-drivers=...
    +$ meson configure \
    +        -D egl=true \
    +        -D gles1=true \
    +        -D gles2=true \
    +        -D dri-drivers=... \
    +        -D gallium-drivers=...
     

    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 and Gallium drivers respectively.

    +options enables the listed classic and Gallium drivers respectively.

  2. @@ -61,7 +64,7 @@ or more EGL drivers.

    time

    -
    --enable-egl
    +
    -D egl=true

    By default, EGL is enabled. When disabled, the main library and the drivers @@ -69,40 +72,26 @@ will not be built.

    -
    --with-egl-driver-dir
    -
    - -

    The directory EGL drivers should be installed to. If not specified, EGL -drivers will be installed to ${libdir}/egl.

    - -
    - -
    --enable-gallium-egl
    -
    - -

    Enable the optional egl_gallium driver.

    - -
    - -
    --with-egl-platforms
    +
    -D platforms=...

    List the platforms (window systems) to support. Its argument is a comma -seprated string such as --with-egl-platforms=x11,drm. It decides +separated string such as -D platforms=x11,drm. It decides the platforms a driver may support. The first listed platform is also used by -the main library to decide the native platform: the platform the EGL native -types such as EGLNativeDisplayType or -EGLNativeWindowType defined for.

    +the main library to decide the native platform.

    The available platforms are x11, drm, -fbdev, and gdi. The gdi platform can -only be built with SCons. Unless for special needs, the build system should +wayland, surfaceless, android, +and haiku. +The android platform can either be built as a system +component, part of AOSP, using Android.mk files, or +cross-compiled using appropriate options. +Unless for special needs, the build system should select the right platforms automatically.

    -
    --enable-gles1
    -
    --enable-gles2
    +
    -D gles1=true and -D gles2=true

    These options enable OpenGL ES support in OpenGL. The result is one big @@ -110,7 +99,7 @@ internal library that supports multiple APIs.

    -
    --enable-shared-glapi
    +
    -D shared-glapi=true

    By default, libGL has its own copy of libglapi. @@ -119,13 +108,6 @@ is required if applications mix OpenGL and OpenGL ES.

    -
    --enable-openvg
    -
    - -

    OpenVG must be explicitly enabled by this option.

    - -
    -

    Use EGL

    @@ -141,44 +123,13 @@ mesa/demos repository.

    runtime

    -
    EGL_DRIVERS_PATH
    -
    - -

    By default, the main library will look for drivers in the directory where -the drivers are installed to. This variable specifies a list of -colon-separated directories where the main library will look for drivers, in -addition to the default directory. This variable is ignored for setuid/setgid -binaries.

    - -

    This variable is usually set to test an uninstalled build. For example, one -may set

    - -
    -  $ export LD_LIBRARY_PATH=$mesa/lib
    -  $ export EGL_DRIVERS_PATH=$mesa/lib/egl
    -
    - -

    to test a build without installation

    - -
    - -
    EGL_DRIVER
    -
    - -

    This variable specifies a full path to or the name of an EGL driver. It -forces the specified EGL driver to be loaded. It comes in handy when one wants -to test a specific driver. This variable is ignored for setuid/setgid -binaries.

    - -
    -
    EGL_PLATFORM

    This variable specifies the native platform. The valid values are the same -as those for --with-egl-platforms. When the variable is not set, +as those for -D platforms=.... When the variable is not set, the main library uses the first platform listed in ---with-egl-platforms as the native platform.

    +-D platforms=... as the native platform.

    Extensions like EGL_MESA_drm_display define new functions to create displays for non-native platforms. These extensions are usually used by @@ -194,14 +145,6 @@ probably required only for some of the demos found in mesa/demo repository.

    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.

    -
    @@ -217,54 +160,18 @@ the X server directly using (XCB-)DRI2 protocol.

    This driver can share DRI drivers with libGL.

    - - -
    egl_gallium
    -
    - -

    This driver is based on Gallium3D. It supports all rendering APIs and -hardwares supported by Gallium3D. It is the only driver that supports OpenVG. -The supported platforms are X11, DRM, FBDEV, and GDI.

    - -

    This driver comes with its own hardware drivers -(pipe_<hw>) and client API modules -(st_<api>).

    - -
    - -
    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.

    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 -is disabled by default.

    +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

    @@ -273,8 +180,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