Git Product home page Git Product logo

egl-registry's Introduction

EGL-Registry

The EGL-Registry repository contains the EGL API and Extension Registry, including specifications, reference pages and reference cards, and the enumerant registry. It is also used as a backing store for the web view of the registry at https://www.khronos.org/registry/egl/ ; commits to the main branch of this repository will be reflected there.

In the past, the EGL registry was maintained in a public Subversion repository. The history in that repository has not been imported to github, but it is still available at https://cvs.khronos.org/svn/repos/registry/trunk/public/egl/ .

Interesting files in this repository include:

  • index.php - toplevel index page for the web view. This relies on PHP include files found elsewhere on www.khronos.org and so is not very useful in isolation.
  • registry.tcl - extension number registry. Documents the names and index numbers assigned to EGL extension specifications.
  • api/egl.xml - extension enumerant and API registry. Defines the EGL API, including extensions, and is used to generate headers. Documents the EGL enumerant ranges assigned to different vendors.
  • api/EGL/ and api/KHR/ - header files used by an EGL implementation. EGL/eglext.h and EGL/egl.h are generated from egl.xml. The other headers are handcoded and express OS and window system (platform) dependencies.
  • extensions/ - EGL extension specifications, grouped into vendor-specific subdirectories.
  • sdk/ - EGL reference pages and reference cards. There are separate sets for each API version.
  • specs/ - EGL specification documents.

Reserving EGL Enumerant Ranges

EGL enumerants are documented in api/egl.xml . New ranges can be allocated by proposing a pull request to main modifying this file, following the existing examples. Allocate ranges starting at the lowest free values available (search for "Reservable for future use"). Ranges are not officially allocated until your pull request is accepted into main. At that point you can use values from your assigned range for API extensions.

Adding Extension Specifications

Extension specification documents can be added by proposing a pull request to main, adding the specification .txt file and related changes under extensions/<vendor>/filename.txt. Your pull request must also:

  • Allocate an extension number in registry.tcl (follow the existing <extension> examples, search for "Next free extension number", and use the lowest available extension number).
  • Include that extension number in the extension specification document.
  • Define the interfaces introduced by this extension in api/egl.xml, following the examples of existing extensions. If you have difficulty doing this, consult the registry schema documentation in the GL registry at www.khronos.org/registry/gl/; you may also create Issues in the EGL-Registry repository to request help.
  • Verify that the EGL headers regenerate properly after applying your XML changes. In the api/ directory, you must be able to do the following without errors:
    # Validate XML changes
    make validate
    # Verify headers build and are legal C
    make clobber
    make
    make tests
  • Finally, add a link from the extensions section of index.php to the extension document, using the specified extension number, so it shows up in the web view (this could in principle be generated automatically from registry.tcl / egl.xml, but isn't at present).

Sometimes extension text files contain inappropriate UTF-8 characters. They should be restricted to the ASCII subset of UTF-8 at present. They can be removed using the iconv Linux command-line tool via

iconv -c -f utf-8 -t ascii filename.txt

(see internal Bugzilla issue 16141 for more).

We may transition to an asciidoc-based extension specification format at some point.

Build Tools

This section is not complete (see KhronosGroup#92).

To validate the XML and build the headers you will need at least GNU make, 'jing' for the 'make validate' step (https://relaxng.org/jclark/jing.html), and Python 3.5 and the lxml.etree Python library (https://pypi.org/project/lxml/) for the 'make' step. The 'make tests' step requires whatever the C and C++ compilers configured for GNU make are, usually gcc and g++.

All of these components are available prepackaged for major Linux distributions and for the Windows 10 Debian WSL.

egl-registry's People

Contributors

oddhack avatar 1ace avatar courtney-g avatar santanu-thangaraj avatar kbrenneman avatar tweenk avatar fooishbar avatar stonesthrow avatar shadazar avatar velurimithun avatar phuang avatar kdashg avatar dkartch-nv avatar janharaldfredriksen-arm avatar critsec avatar briandersn avatar kenrussell avatar c0d1f1ed avatar caramelli avatar rmader avatar klausw avatar mstorsjo avatar mkeshavanv avatar nathankidd avatar sashinde avatar bl4ckb0ne avatar k3wlbuddy avatar tate-hornbeck avatar tomwardio avatar weiwliu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.