summaryrefslogtreecommitdiff
path: root/lib/mesa/docs/specs
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2016-12-11 08:40:05 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2016-12-11 08:40:05 +0000
commit21ab4c9f31674b113c24177398ed39f29b7cd8e6 (patch)
tree8be392d7a792d9663c2586396be77bfd506f5164 /lib/mesa/docs/specs
parenta8f0a7916e26e550dd2a26e7188835c481978004 (diff)
Import Mesa 13.0.2
Diffstat (limited to 'lib/mesa/docs/specs')
-rw-r--r--lib/mesa/docs/specs/EGL_MESA_platform_surfaceless.txt120
-rw-r--r--lib/mesa/docs/specs/MESA_configless_context.spec8
-rw-r--r--lib/mesa/docs/specs/MESA_shader_integer_functions.txt520
-rw-r--r--lib/mesa/docs/specs/OLD/EGL_MESA_screen_surface.txt564
-rw-r--r--lib/mesa/docs/specs/enums.txt41
5 files changed, 1245 insertions, 8 deletions
diff --git a/lib/mesa/docs/specs/EGL_MESA_platform_surfaceless.txt b/lib/mesa/docs/specs/EGL_MESA_platform_surfaceless.txt
new file mode 100644
index 000000000..871ee509c
--- /dev/null
+++ b/lib/mesa/docs/specs/EGL_MESA_platform_surfaceless.txt
@@ -0,0 +1,120 @@
+Name
+
+ MESA_platform_surfaceless
+
+Name Strings
+
+ EGL_MESA_platform_surfaceless
+
+Contributors
+
+ Chad Versace <chadversary@google.com>
+ Haixia Shi <hshi@google.com>
+ Stéphane Marchesin <marcheu@google.com>
+ Zach Reizner <zachr@chromium.org>
+ Gurchetan Singh <gurchetansingh@google.com>
+
+Contacts
+
+ Chad Versace <chadversary@google.com>
+
+Status
+
+ DRAFT
+
+Version
+
+ Version 2, 2016-10-13
+
+Number
+
+ EGL Extension #TODO
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.5 or later; or EGL 1.4 with EGL_EXT_platform_base.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+ This extension interacts with EGL_EXT_platform_base as follows. If the
+ implementation supports EGL_EXT_platform_base, then text regarding
+ eglGetPlatformDisplay applies also to eglGetPlatformDisplayEXT;
+ eglCreatePlatformWindowSurface to eglCreatePlatformWindowSurfaceEXT; and
+ eglCreatePlatformPixmapSurface to eglCreatePlatformPixmapSurfaceEXT.
+
+Overview
+
+ This extension defines a new EGL platform, the "surfaceless" platform. This
+ platfom's defining property is that it has no native surfaces, and hence
+ neither eglCreatePlatformWindowSurface nor eglCreatePlatformPixmapSurface
+ can be used. The platform is independent of any native window system.
+
+ The platform's intended use case is for enabling OpenGL and OpenGL ES
+ applications on systems where no window system exists. However, the
+ platform's permitted usage is not restricted to this case. Since the
+ platform is independent of any native window system, it may also be used on
+ systems where a window system is present.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay on the surfaceless platform, call
+ eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_SURFACELESS_MESA.
+ The <native_display> parameter must be EGL_DEFAULT_DISPLAY.
+
+ eglCreatePlatformWindowSurface fails when called with a <display> that
+ belongs to the surfaceless platform. It returns EGL_NO_SURFACE and
+ generates EGL_BAD_NATIVE_WINDOW. The justification for this unconditional
+ failure is that the surfaceless platform has no native windows, and
+ therefore the <native_window> parameter is always invalid.
+
+ Likewise, eglCreatePlatformPixmapSurface also fails when called with a
+ <display> that belongs to the surfaceless platform. It returns
+ EGL_NO_SURFACE and generates EGL_BAD_NATIVE_PIXMAP.
+
+ The surfaceless platform imposes no platform-specific restrictions on the
+ creation of pbuffers, as eglCreatePbufferSurface has no native surface
+ parameter. Specifically, if the EGLDisplay advertises an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_PBUFFER_BIT, then the EGLDisplay
+ permits the creation of pbuffers with that config.
+
+Issues
+
+ None.
+
+Revision History
+
+ Version 2, 2016-10-13 (Chad Versace)
+ - Assign enum values
+ - Define interfactions with EGL 1.4 and EGL_EXT_platform_base.
+ - Add Gurchetan as contributor, as he implemented the pbuffer support.
+
+ Version 1, 2016-09-23 (Chad Versace)
+ - Initial version
+ - Posted for review at
+ https://lists.freedesktop.org/archives/mesa-dev/2016-September/129549.html
diff --git a/lib/mesa/docs/specs/MESA_configless_context.spec b/lib/mesa/docs/specs/MESA_configless_context.spec
index f2fafb35a..d7ba62dd8 100644
--- a/lib/mesa/docs/specs/MESA_configless_context.spec
+++ b/lib/mesa/docs/specs/MESA_configless_context.spec
@@ -12,11 +12,12 @@ Contact
Status
- Proposal
+ Superseded by the functionally identical EGL_KHR_no_config_context
+ extension.
Version
- Version 1, February 28, 2014
+ Version 2, September 9, 2016
Number
@@ -121,5 +122,8 @@ Issues
Revision History
+ Version 2, September 9, 2016
+ Defer to EGL_KHR_no_config_context (Adam Jackson)
+
Version 1, February 28, 2014
Initial draft (Neil Roberts)
diff --git a/lib/mesa/docs/specs/MESA_shader_integer_functions.txt b/lib/mesa/docs/specs/MESA_shader_integer_functions.txt
new file mode 100644
index 000000000..58a956f44
--- /dev/null
+++ b/lib/mesa/docs/specs/MESA_shader_integer_functions.txt
@@ -0,0 +1,520 @@
+Name
+
+ MESA_shader_integer_functions
+
+Name Strings
+
+ GL_MESA_shader_integer_functions
+
+Contact
+
+ Ian Romanick <ian.d.romanick@intel.com>
+
+Contributors
+
+ All the contributors of GL_ARB_gpu_shader5
+
+Status
+
+ Supported by all GLSL 1.30 capable drivers in Mesa 12.1 and later
+
+Version
+
+ Version 2, July 7, 2016
+
+Number
+
+ TBD
+
+Dependencies
+
+ This extension is written against the OpenGL 3.2 (Compatibility Profile)
+ Specification.
+
+ This extension is written against Version 1.50 (Revision 09) of the OpenGL
+ Shading Language Specification.
+
+ GLSL 1.30 is required.
+
+ This extension interacts with ARB_gpu_shader5.
+
+ This extension interacts with ARB_gpu_shader_fp64.
+
+ This extension interacts with NV_gpu_shader5.
+
+Overview
+
+ GL_ARB_gpu_shader5 extends GLSL in a number of useful ways. Much of this
+ added functionality requires significant hardware support. There are many
+ aspects, however, that can be easily implmented on any GPU with "real"
+ integer support (as opposed to simulating integers using floating point
+ calculations).
+
+ This extension provides a set of new features to the OpenGL Shading
+ Language to support capabilities of these GPUs, extending the capabilities
+ of version 1.30 of the OpenGL Shading Language. Shaders
+ using the new functionality provided by this extension should enable this
+ functionality via the construct
+
+ #extension GL_MESA_shader_integer_functions : require (or enable)
+
+ This extension provides a variety of new features for all shader types,
+ including:
+
+ * support for implicitly converting signed integer types to unsigned
+ types, as well as more general implicit conversion and function
+ overloading infrastructure to support new data types introduced by
+ other extensions;
+
+ * new built-in functions supporting:
+
+ * splitting a floating-point number into a significand and exponent
+ (frexp), or building a floating-point number from a significand and
+ exponent (ldexp);
+
+ * integer bitfield manipulation, including functions to find the
+ position of the most or least significant set bit, count the number
+ of one bits, and bitfield insertion, extraction, and reversal;
+
+ * extended integer precision math, including add with carry, subtract
+ with borrow, and extenended multiplication;
+
+ The resulting extension is a strict subset of GL_ARB_gpu_shader5.
+
+IP Status
+
+ No known IP claims.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to Chapter 2 of the OpenGL 3.2 (Compatibility Profile) Specification
+(OpenGL Operation)
+
+ None.
+
+Additions to Chapter 3 of the OpenGL 3.2 (Compatibility Profile) Specification
+(Rasterization)
+
+ None.
+
+Additions to Chapter 4 of the OpenGL 3.2 (Compatibility Profile) Specification
+(Per-Fragment Operations and the Frame Buffer)
+
+ None.
+
+Additions to Chapter 5 of the OpenGL 3.2 (Compatibility Profile) Specification
+(Special Functions)
+
+ None.
+
+Additions to Chapter 6 of the OpenGL 3.2 (Compatibility Profile) Specification
+(State and State Requests)
+
+ None.
+
+Additions to Appendix A of the OpenGL 3.2 (Compatibility Profile)
+Specification (Invariance)
+
+ None.
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None.
+
+Modifications to The OpenGL Shading Language Specification, Version 1.50
+(Revision 09)
+
+ Including the following line in a shader can be used to control the
+ language features described in this extension:
+
+ #extension GL_MESA_shader_integer_functions : <behavior>
+
+ where <behavior> is as specified in section 3.3.
+
+ New preprocessor #defines are added to the OpenGL Shading Language:
+
+ #define GL_MESA_shader_integer_functions 1
+
+
+ Modify Section 4.1.10, Implicit Conversions, p. 27
+
+ (modify table of implicit conversions)
+
+ Can be implicitly
+ Type of expression converted to
+ --------------------- -----------------
+ int uint, float
+ ivec2 uvec2, vec2
+ ivec3 uvec3, vec3
+ ivec4 uvec4, vec4
+
+ uint float
+ uvec2 vec2
+ uvec3 vec3
+ uvec4 vec4
+
+ (modify second paragraph of the section) No implicit conversions are
+ provided to convert from unsigned to signed integer types or from
+ floating-point to integer types. There are no implicit array or structure
+ conversions.
+
+ (insert before the final paragraph of the section) When performing
+ implicit conversion for binary operators, there may be multiple data types
+ to which the two operands can be converted. For example, when adding an
+ int value to a uint value, both values can be implicitly converted to uint
+ and float. In such cases, a floating-point type is chosen if either
+ operand has a floating-point type. Otherwise, an unsigned integer type is
+ chosen if either operand has an unsigned integer type. Otherwise, a
+ signed integer type is chosen.
+
+
+ Modify Section 5.9, Expressions, p. 57
+
+ (modify bulleted list as follows, adding support for implicit conversion
+ between signed and unsigned types)
+
+ Expressions in the shading language are built from the following:
+
+ * Constants of type bool, int, int64_t, uint, uint64_t, float, all vector
+ types, and all matrix types.
+
+ ...
+
+ * The operator modulus (%) operates on signed or unsigned integer scalars
+ or vectors. If the fundamental types of the operands do not match, the
+ conversions from Section 4.1.10 "Implicit Conversions" are applied to
+ produce matching types. ...
+
+
+ Modify Section 6.1, Function Definitions, p. 63
+
+ (modify description of overloading, beginning at the top of p. 64)
+
+ Function names can be overloaded. The same function name can be used for
+ multiple functions, as long as the parameter types differ. If a function
+ name is declared twice with the same parameter types, then the return
+ types and all qualifiers must also match, and it is the same function
+ being declared. For example,
+
+ vec4 f(in vec4 x, out vec4 y); // (A)
+ vec4 f(in vec4 x, out uvec4 y); // (B) okay, different argument type
+ vec4 f(in ivec4 x, out uvec4 y); // (C) okay, different argument type
+
+ int f(in vec4 x, out ivec4 y); // error, only return type differs
+ vec4 f(in vec4 x, in vec4 y); // error, only qualifier differs
+ vec4 f(const in vec4 x, out vec4 y); // error, only qualifier differs
+
+ When function calls are resolved, an exact type match for all the
+ arguments is sought. If an exact match is found, all other functions are
+ ignored, and the exact match is used. If no exact match is found, then
+ the implicit conversions in Section 4.1.10 (Implicit Conversions) will be
+ applied to find a match. Mismatched types on input parameters (in or
+ inout or default) must have a conversion from the calling argument type
+ to the formal parameter type. Mismatched types on output parameters (out
+ or inout) must have a conversion from the formal parameter type to the
+ calling argument type.
+
+ If implicit conversions can be used to find more than one matching
+ function, a single best-matching function is sought. To determine a best
+ match, the conversions between calling argument and formal parameter
+ types are compared for each function argument and pair of matching
+ functions. After these comparisons are performed, each pair of matching
+ functions are compared. A function definition A is considered a better
+ match than function definition B if:
+
+ * for at least one function argument, the conversion for that argument
+ in A is better than the corresponding conversion in B; and
+
+ * there is no function argument for which the conversion in B is better
+ than the corresponding conversion in A.
+
+ If a single function definition is considered a better match than every
+ other matching function definition, it will be used. Otherwise, a
+ semantic error occurs and the shader will fail to compile.
+
+ To determine whether the conversion for a single argument in one match is
+ better than that for another match, the following rules are applied, in
+ order:
+
+ 1. An exact match is better than a match involving any implicit
+ conversion.
+
+ 2. A match involving an implicit conversion from float to double is
+ better than a match involving any other implicit conversion.
+
+ 3. A match involving an implicit conversion from either int or uint to
+ float is better than a match involving an implicit conversion from
+ either int or uint to double.
+
+ If none of the rules above apply to a particular pair of conversions,
+ neither conversion is considered better than the other.
+
+ For the function prototypes (A), (B), and (C) above, the following
+ examples show how the rules apply to different sets of calling argument
+ types:
+
+ f(vec4, vec4); // exact match of vec4 f(in vec4 x, out vec4 y)
+ f(vec4, uvec4); // exact match of vec4 f(in vec4 x, out ivec4 y)
+ f(vec4, ivec4); // matched to vec4 f(in vec4 x, out vec4 y)
+ // (C) not relevant, can't convert vec4 to
+ // ivec4. (A) better than (B) for 2nd
+ // argument (rule 2), same on first argument.
+ f(ivec4, vec4); // NOT matched. All three match by implicit
+ // conversion. (C) is better than (A) and (B)
+ // on the first argument. (A) is better than
+ // (B) and (C).
+
+
+ Modify Section 8.3, Common Functions, p. 84
+
+ (add support for single-precision frexp and ldexp functions)
+
+ Syntax:
+
+ genType frexp(genType x, out genIType exp);
+ genType ldexp(genType x, in genIType exp);
+
+ The function frexp() splits each single-precision floating-point number in
+ <x> into a binary significand, a floating-point number in the range [0.5,
+ 1.0), and an integral exponent of two, such that:
+
+ x = significand * 2 ^ exponent
+
+ The significand is returned by the function; the exponent is returned in
+ the parameter <exp>. For a floating-point value of zero, the significant
+ and exponent are both zero. For a floating-point value that is an
+ infinity or is not a number, the results of frexp() are undefined.
+
+ If the input <x> is a vector, this operation is performed in a
+ component-wise manner; the value returned by the function and the value
+ written to <exp> are vectors with the same number of components as <x>.
+
+ The function ldexp() builds a single-precision floating-point number from
+ each significand component in <x> and the corresponding integral exponent
+ of two in <exp>, returning:
+
+ significand * 2 ^ exponent
+
+ If this product is too large to be represented as a single-precision
+ floating-point value, the result is considered undefined.
+
+ If the input <x> is a vector, this operation is performed in a
+ component-wise manner; the value passed in <exp> and returned by the
+ function are vectors with the same number of components as <x>.
+
+
+ (add support for new integer built-in functions)
+
+ Syntax:
+
+ genIType bitfieldExtract(genIType value, int offset, int bits);
+ genUType bitfieldExtract(genUType value, int offset, int bits);
+
+ genIType bitfieldInsert(genIType base, genIType insert, int offset,
+ int bits);
+ genUType bitfieldInsert(genUType base, genUType insert, int offset,
+ int bits);
+
+ genIType bitfieldReverse(genIType value);
+ genUType bitfieldReverse(genUType value);
+
+ genIType bitCount(genIType value);
+ genIType bitCount(genUType value);
+
+ genIType findLSB(genIType value);
+ genIType findLSB(genUType value);
+
+ genIType findMSB(genIType value);
+ genIType findMSB(genUType value);
+
+ The function bitfieldExtract() extracts bits <offset> through
+ <offset>+<bits>-1 from each component in <value>, returning them in the
+ least significant bits of corresponding component of the result. For
+ unsigned data types, the most significant bits of the result will be set
+ to zero. For signed data types, the most significant bits will be set to
+ the value of bit <offset>+<base>-1. If <bits> is zero, the result will be
+ zero. The result will be undefined if <offset> or <bits> is negative, or
+ if the sum of <offset> and <bits> is greater than the number of bits used
+ to store the operand. Note that for vector versions of bitfieldExtract(),
+ a single pair of <offset> and <bits> values is shared for all components.
+
+ The function bitfieldInsert() inserts the <bits> least significant bits of
+ each component of <insert> into the corresponding component of <base>.
+ The result will have bits numbered <offset> through <offset>+<bits>-1
+ taken from bits 0 through <bits>-1 of <insert>, and all other bits taken
+ directly from the corresponding bits of <base>. If <bits> is zero, the
+ result will simply be <base>. The result will be undefined if <offset> or
+ <bits> is negative, or if the sum of <offset> and <bits> is greater than
+ the number of bits used to store the operand. Note that for vector
+ versions of bitfieldInsert(), a single pair of <offset> and <bits> values
+ is shared for all components.
+
+ The function bitfieldReverse() reverses the bits of <value>. The bit
+ numbered <n> of the result will be taken from bit (<bits>-1)-<n> of
+ <value>, where <bits> is the total number of bits used to represent
+ <value>.
+
+ The function bitCount() returns the number of one bits in the binary
+ representation of <value>.
+
+ The function findLSB() returns the bit number of the least significant one
+ bit in the binary representation of <value>. If <value> is zero, -1 will
+ be returned.
+
+ The function findMSB() returns the bit number of the most significant bit
+ in the binary representation of <value>. For positive integers, the
+ result will be the bit number of the most significant one bit. For
+ negative integers, the result will be the bit number of the most
+ significant zero bit. For a <value> of zero or negative one, -1 will be
+ returned.
+
+
+ (support for unsigned integer add/subtract with carry-out)
+
+ Syntax:
+
+ genUType uaddCarry(genUType x, genUType y, out genUType carry);
+ genUType usubBorrow(genUType x, genUType y, out genUType borrow);
+
+ The function uaddCarry() adds 32-bit unsigned integers or vectors <x> and
+ <y>, returning the sum modulo 2^32. The value <carry> is set to zero if
+ the sum was less than 2^32, or one otherwise.
+
+ The function usubBorrow() subtracts the 32-bit unsigned integer or vector
+ <y> from <x>, returning the difference if non-negative or 2^32 plus the
+ difference, otherwise. The value <borrow> is set to zero if x >= y, or
+ one otherwise.
+
+
+ (support for signed and unsigned multiplies, with 32-bit inputs and a
+ 64-bit result spanning two 32-bit outputs)
+
+ Syntax:
+
+ void umulExtended(genUType x, genUType y, out genUType msb,
+ out genUType lsb);
+ void imulExtended(genIType x, genIType y, out genIType msb,
+ out genIType lsb);
+
+ The functions umulExtended() and imulExtended() multiply 32-bit unsigned
+ or signed integers or vectors <x> and <y>, producing a 64-bit result. The
+ 32 least significant bits are returned in <lsb>; the 32 most significant
+ bits are returned in <msb>.
+
+
+GLX Protocol
+
+ None.
+
+Dependencies on ARB_gpu_shader_fp64
+
+ This extension, ARB_gpu_shader_fp64, and NV_gpu_shader5 all modify the set
+ of implicit conversions supported in the OpenGL Shading Language. If more
+ than one of these extensions is supported, an expression of one type may
+ be converted to another type if that conversion is allowed by any of these
+ specifications.
+
+ If ARB_gpu_shader_fp64 or a similar extension introducing new data types
+ is not supported, the function overloading rule in the GLSL specification
+ preferring promotion an input parameters to smaller type to a larger type
+ is never applicable, as all data types are of the same size. That rule
+ and the example referring to "double" should be removed.
+
+
+Dependencies on NV_gpu_shader5
+
+ This extension, ARB_gpu_shader_fp64, and NV_gpu_shader5 all modify the set
+ of implicit conversions supported in the OpenGL Shading Language. If more
+ than one of these extensions is supported, an expression of one type may
+ be converted to another type if that conversion is allowed by any of these
+ specifications.
+
+ If NV_gpu_shader5 is supported, integer data types are supported with four
+ different precisions (8-, 16, 32-, and 64-bit) and floating-point data
+ types are supported with three different precisions (16-, 32-, and
+ 64-bit). The extension adds the following rule for output parameters,
+ which is similar to the one present in this extension for input
+ parameters:
+
+ 5. If the formal parameters in both matches are output parameters, a
+ conversion from a type with a larger number of bits per component is
+ better than a conversion from a type with a smaller number of bits
+ per component. For example, a conversion from an "int16_t" formal
+ parameter type to "int" is better than one from an "int8_t" formal
+ parameter type to "int".
+
+ Such a rule is not provided in this extension because there is no
+ combination of types in this extension and ARB_gpu_shader_fp64 where this
+ rule has any effect.
+
+
+Errors
+
+ None
+
+
+New State
+
+ None
+
+New Implementation Dependent State
+
+ None
+
+Issues
+
+ (1) What should this extension be called?
+
+ UNRESOLVED. This extension borrows from GL_ARB_gpu_shader5, so creating
+ some sort of a play on that name would be viable. However, nothing in
+ this extension should require SM5 hardware, so such a name would be a
+ little misleading and weird.
+
+ Since the primary purpose is to add integer related functions from
+ GL_ARB_gpu_shader5, call this extension GL_MESA_shader_integer_functions
+ for now.
+
+ (2) Why is some of the formatting in this extension weird?
+
+ RESOLVED: This extension is formatted to minimize the differences (as
+ reported by 'diff --side-by-side -W180') with the GL_ARB_gpu_shader5
+ specification.
+
+ (3) Should ldexp and frexp be included?
+
+ RESOLVED: Yes. Few GPUs have native instructions to implement these
+ functions. These are generally implemented using existing GLSL built-in
+ functions and the other functions provided by this extension.
+
+ (4) Should umulExtended and imulExtended be included?
+
+ RESOLVED: Yes. These functions should be implementable on any GPU that
+ can support the rest of this extension, but the implementation may be
+ complex. The implementation on a GPU that only supports 32bit x 32bit =
+ 32bit multiplication would be quite expensive. However, many GPUs
+ (including OpenGL 4.0 GPUs that already support this function) have a
+ 32bit x 16bit = 48bit multiplier. The implementation there is only
+ trivially more expensive than regular 32bit multiplication.
+
+ (5) Should the pack and unpack functions be included?
+
+ RESOLVED: No. These functions are already available via
+ GL_ARB_shading_language_packing.
+
+ (6) Should the "BitsTo" functions be included?
+
+ RESOLVED: No. These functions are already available via
+ GL_ARB_shader_bit_encoding.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ----------- -------- -----------------------------------------
+ 2 7-Jul-2016 idr Fix typo in #extension line
+ 1 20-Jun-2016 idr Initial version based on GL_ARB_gpu_shader5.
diff --git a/lib/mesa/docs/specs/OLD/EGL_MESA_screen_surface.txt b/lib/mesa/docs/specs/OLD/EGL_MESA_screen_surface.txt
new file mode 100644
index 000000000..698a24057
--- /dev/null
+++ b/lib/mesa/docs/specs/OLD/EGL_MESA_screen_surface.txt
@@ -0,0 +1,564 @@
+Name
+
+ MESA_screen_surface
+
+Name Strings
+
+ EGL_MESA_screen_surface
+
+Contact
+
+ Brian Paul
+
+ To discuss, join the dri-egl@lists.freedesktop.org list.
+
+Status
+
+ Obsolete.
+
+Version
+
+ 11 (27 January 2006)
+
+Number
+
+ TBD
+
+Dependencies
+
+ EGL 1.0 or later.
+
+Overview
+
+ EGL 1.1 supports three types of drawing surfaces:
+ * Window surfaces
+ * Pixmap surfaces
+ * Pbuffer surfaces
+ This extension defines a fourth type of drawing surface:
+ * Screen surface
+
+ A screen surface is a surface for which the (front) color buffer can
+ be directly displayed (i.e. scanned out) on a monitor (such as a flat
+ panel or CRT). In particular the color buffer memory will be allocated
+ at a location in VRAM (and in a suitable format) which can be displayed
+ by the graphics hardware.
+
+ Note that the width and height of the screen surface need not exactly
+ match the monitor's current resolution. For example, while the monitor
+ may be configured to to show 1024x768 pixels, the associated screen
+ surface may be larger, such as 1200x1000. The "screen origin" attribute
+ will specify which region of the screen surface which is visible on the
+ monitor. The screen surface can be scrolled by changing this origin.
+
+ This extension also defines functions for controlling the monitor's
+ display mode (width, height, refresh rate, etc), and specifing which
+ screen surface is to be displayed on a monitor.
+
+ The new EGLModeMESA type and related functions are very similar to the
+ EGLConfig type and related functions. The user may get a list of
+ supported modes for a screen and specify the mode to be used when
+ displaying a screen surface.
+
+
+Issues
+
+ 1. Should EGL_INTERLACE be a supported mode attribute?
+
+ Arguments against:
+
+ No, this should be provided by another extension which would
+ also provide the mechanisms needed to play back interlaced video
+ material correctly on hardware that supports it.
+ This extension should prefer non-interlaced modes. [M. Danzer]
+
+ Arguments for:
+
+ An interlaced display can be of use without considering video
+ material. Being able to query whether a screen is operating in
+ interlaced mode can be used by applications to control their
+ drawing. For example: avoid drawing 1-pixel-wide horizontal lines
+ if screen is interlaced. [B. Paul]
+
+ Resolution: Defer for future extension?
+
+
+ 2. Should EGL_REFRESH_RATE be a supported mode attribute?
+
+ Arguments for:
+
+ Yes, it's been shown that applications and/or users need to select
+ modes by this. [M. Danzer]
+
+ Many examples have been given in which it's desirable to let the
+ user choose from a variety of refresh rates without having to
+ restart/reconfigure. [B. Paul]
+
+ Arguments against:
+
+ TBD.
+
+ Resolution: Yes.
+
+
+ 3. Exactly how should the list of modes returned by eglChooseConfigMESA
+ be sorted?
+
+ Current method is described in the text below. Subject to change.
+
+ Alternately, leave the sorting order undefined so that each
+ implementation can return the modes in order of "most desirable"
+ to "least desirable" which may depend on the display technology
+ (CRT vs LCD, etc) or other factors.
+
+
+ 4. How should screen blanking be supported? Note that a screen can be
+ disabled or turned off by calling eglShowSurface(dpy, scrn,
+ EGL_NO_SURFACE, EGL_NO_MODE_MESA). But what about power-save mode?
+
+ I would defer this to other extensions that depend on this one.
+ I can imagine people wanting different semantics not just in
+ relation to the power management API being exposed (DPMS or whatever)
+ but also relating to what events can trigger EGL_CONTEXT_LOST. Also
+ I'm not sure whether power management commands are properly operations
+ on the Display or on a screen surface. [A. Jackson]
+
+
+ 5. Should the EGL_PHYSICAL_SIZE_EGL query be kept? The size information
+ isn't always reliable (consider video projectors) but can still be
+ used to determine the pixel aspect ratio.
+
+ Resolution: Omit. The EGL 1.2 specification includes queries for
+ the display resolution and pixel aspect ratio.
+
+
+ 6. Should detailed mode timing information be exposed by this API?
+
+ Probably not. Instead, offer that information in a layered extension.
+
+
+ 7. How should the notion of a screen's "native" mode be expressed?
+ For example, LCD panels have a native resolution and refresh rate
+ that looks best but other sub-optimal resolutions may be supported.
+
+ The mode attribute EGL_OPTIMAL_MESA will be set for modes which
+ best match the screen. [M. Danzer]
+
+
+ 8. Should eglQueryModeStringMESA() be included? This function returns
+ a human-readable string which corresponds to an EGLMode.
+
+ Arguments for:
+
+ A mode name such as "HDTV-720P" might mean more to users than
+ "1280x720@60Hz" if the later were generated via code.
+
+ Arguments against:
+
+ There's no standard syntax for the strings. May cause more
+ trouble than it's worth.
+
+ Postpone for future extension. [A. Jackson]
+
+ Latest discussion leaning toward omitting this function.
+
+
+ 9. Should we use "Get" or "Query" for functions which return state?
+ The EGL 1.x specification doesn't seem to be totally consistent
+ in this regard, but "Query" is used more often.
+
+ Use "Get" for mode-related queries (as for EGLConfigs) but "Query"
+ for everything else.
+
+
+ 10. What should be the default size for screen surfaces?
+
+ For Pbuffer surfaces the default width and height are zero.
+ We'll do the same for screen surfaces. Since there's no function
+ to resize surfaces it's useless to have a 0x0 screen, but this isn't
+ a situation that'll normally be encountered.
+
+
+ 11. Should there be a function for resizing a screen surface?
+
+ Suppose one wants to change the screen's size in the EGL application.
+ Also suppose there's a hardware restriction such that only one screen
+ surface can exist at a time (either for lack of memory or because of
+ memory layout restrictions).
+
+ The basic idea is that the currently displayed screen surface must
+ be deallocated before a new one can be created. Perhaps a resize
+ function would work better?
+
+
+ 12. How should sub-pixel LCD color information be made available?
+ What about the display's gamma value?
+
+ Perhaps expose as additional read-only mode attributes.
+
+ Perhaps postpone for a layered extension.
+
+
+ 13. What happens if the user attempts to delete a screen surface that
+ is currently being shown?
+
+ Spec currently says that's illegal and that an error (TBD) will be
+ generated.
+
+
+ 14. What if the physical screen size can't be determined? Should
+ a query of EGL_PHYSICAL_SIZE_MESA return [0,0]?
+
+ Obsolete: EGL_PHYSICAL_SIZE_MESA not used.
+
+
+ 15. Suppose the device's number of RAMDACs is different from the
+ number of output ports. For example, a graphics card with
+ two RAMDACs but three ports (VGA, DVI, TV).
+
+ Address this in a follow-on extension. [Matthias Hopf]
+
+
+ 16. How should we deal with on-the-fly device changes? For example,
+ the monitor being unplugged and replaced by another with different
+ characteristics?
+
+ A HAL event could be received via DBUS in the application [J. Smirl,
+ A. Jackson].
+
+ Should there be an EGL mechanism for detecting this? Maybe an
+ EGL_SCREEN_LOST error (similar to EGL_CONTEXT_LOST) can be recorded
+ when there's a screen change. At least then the application can
+ poll to detect this situation.
+
+ Maybe leave that to a future extension.
+
+ See also the EGL_SCREEN_COUNT_MESA query.
+
+
+ 17. What if pixel-accurate panning is not supported (see
+ eglScreenPositionMESA)? [M. Danzer]
+
+ Is this a common problem? Can we ignore it for now?
+
+
+ 18. Should eglShowSurfaceMESA be renamed to eglShowScreenSurfaceMESA?
+
+ Probably.
+
+
+
+New Procedures and Functions
+
+ EGLBoolean eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ const EGLint *attrib_list,
+ EGLModeMESA *modes, EGLint modes_size,
+ EGLint *num_modes)
+
+ EGLBoolean eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLModeMESA *modes, EGLint modes_size,
+ EGLint *num_modes)
+
+ EGLBoolean eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode,
+ EGLint attrib, EGLint *value)
+
+
+ EGLBoolean eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens,
+ EGLint screens_size, EGLint *num_screens)
+
+ EGLSurface eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list)
+
+ EGLBoolean eglShowSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLSurface surface, EGLModeMESA mode)
+
+ EGLBoolean eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLint x, EGLint y)
+
+
+ EGLBoolean eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLint attrib, EGLint *value);
+
+ EGLBoolean eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLSurface *surface)
+
+ EGLBoolean eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLModeMESA *mode)
+
+ const char *eglQueryModeStringMESA(EGLDisplay dpy, EGLMode mode);
+
+
+New Types
+
+ EGLModeMESA
+ EGLScreenMESA
+
+New Tokens
+
+ New error codes:
+
+ EGL_BAD_SCREEN_MESA
+ EGL_BAD_MODE_MESA
+
+ Screen-related tokens:
+
+ EGL_SCREEN_COUNT_MESA
+ EGL_SCREEN_POSITION_MESA
+ EGL_SCREEN_BIT_MESA
+ EGL_SCREEN_POSITION_GRANULARITY_MESA
+
+ Mode-related tokens:
+
+ EGL_MODE_ID_MESA
+ EGL_REFRESH_RATE_MESA
+ EGL_INTERLACED_MESA
+ EGL_OPTIMAL_MESA
+ EGL_NO_MODE_MESA
+
+
+Additions to Chapter X of the EGL 1.1 Specification
+
+ [XXX this all has to be rewritten to fit into the EGL specification
+ and match the conventions of an EGL extension. For now, just list
+ all the functions with brief descriptions.]
+
+
+ EGLBoolean eglChooseModeMESA(EGLDisplay dpy, const EGLScreenMESA screen,
+ EGLint *attrib_list, EGLModeMESA *modes,
+ EGLint modes_size, EGLint *num_modes)
+
+ Like eglChooseConfig, returns a list of EGLModes which match the given
+ attribute list. This does not set the screen's current display mode.
+ The attribute list is a list of token/value pairs terminated with
+ EGL_NONE. Supported attributes include:
+
+ Name Description
+ --------------------- ---------------------------------------------
+ EGL_WIDTH Mode width (resolution)
+ EGL_HEIGHT Mode height (resolution)
+ EGL_REFRESH_RATE_MESA The mode's refresh rate, multiplied by 1000
+ EGL_INTERLACED_MESA 1 indicates an interlaced mode, 0 otherwise
+ EGL_OPTIMAL_MESA Set if the most is especially optimal for the
+ screen (ex. for particular LCD resolutions)
+
+ Any other token will generate the error EGL_BAD_ATTRIBUTE.
+
+ The list of modes returned by eglChooseModeMESA will be sorted
+ according to the following criteria. See the discussion of table 3.3
+ in the EGL specification for more information.
+
+ Selection Sort Sort
+ Attribute Default Criteria Order Priority
+ -------------------- -------------- ----------- ------ --------
+ EGL_OPTIMAL_MESA EGL_DONT_CARE Exact 1,0 1
+ EGL_INTERLACED_MESA EGL_DONT_CARE Exact 0,1 2
+ EGL_REFRESH_RATE EGL_DONT_CARE AtLeast Larger 3
+ EGL_WIDTH EGL_DONT_CARE AtLeast Larger 4
+ EGL_HEIGHT EGL_DONT_CARE AtLeast Larger 5
+ EGL_MODE_ID_MESA EGL_DONT_CARE Exact Smaller 6
+
+
+ EGLBoolean eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLModeMESA *modes, EGLint modes_size,
+ EGLint *num_modes)
+
+ Like eglGetConfigs, returns a list of all modes supported by the
+ given screen. The returned modes will be sorted in the same manner
+ as for eglChooseModeMESA().
+
+
+
+ EGLBoolean eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode,
+ EGLint attrib, EGLint *value)
+
+ Used to query mode attributes. The following attributes are supported:
+
+ Name Return value description
+ --------------------- ----------------------------------------------
+ EGL_OPTIMAL_MESA 1 indicates an optimal mode, 0 otherwise
+ EGL_INTERLACED_MESA 1 indicates an interlaced mode, 0 otherwise
+ EGL_REFRESH_RATE_MESA The mode's refresh rate, multiplied by 1000
+ EGL_WIDTH Mode width (resolution)
+ EGL_HEIGHT Mode height (resolution)
+ EGL_MODE_ID_MESA A unique small integer identifier for the mode
+
+ Any other token will generate the error EGL_BAD_ATTRIBUTE.
+
+
+
+ EGLBoolean eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens,
+ EGLint screens_size, EGLint *num_screens)
+
+ This function returns an array of all available screen handles.
+ <screens_size> is the maximum number of screens to return in the
+ <screens> array. <num_screens> will return the number of screen handles
+ placed in the array, even if <screens> is NULL.
+
+ The number of screens and the availability of each may change over
+ time (hot-plugging). Screen handles will not be reused. When a
+ screen handle becomes invalid, function calls which reference an
+ invalid handle will generate EGL_BAD_SCREEN_MESA.
+
+ The first screen handle returned will be considered to be the primary
+ one.
+
+
+
+ EGLSurface eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list)
+
+ Create a surface that can be displayed on a screen. <attrib_list> is
+ an array of token/value pairs terminated with EGL_NONE. Valid tokens
+ include:
+
+ Name Description
+ ---------------- --------------------------------
+ EGL_WIDTH desired surface width in pixels
+ EGL_HEIGHT desired surface height in pixels
+
+ Any other token will generate the error EGL_BAD_ATTRIBUTE.
+ The default width and height are zero.
+
+
+
+ EGLBoolean eglShowSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLSurface surface, EGLModeMESA mode)
+
+ This function causes a screen to show the given surface (or more
+ precisely, the surface's front color buffer) with the given mode.
+
+ If the surface is in any way incompatible with the mode, the error
+ EGL_BAD_MATCH will be generated, EGL_FALSE will be returned, and the
+ previous screen state will remain in effect. This might occur when
+ the bandwidth of the video-out subsystem is exceeded, or if the mode
+ specifies a width or height that's greater than the width or height
+ of the surface.
+
+ To disable a screen, the values EGL_NO_SURFACE and EGL_NO_MODE_MESA
+ be passed as the <surface> and <mode> parameters.
+
+ The values of EGL_SCREEN_POSITION_MESA are clamped to the new valid
+ range computed from the screen size and surface size. If the new
+ surface is EGL_NO_SURFACE, EGL_SCREEN_POSITION_MESA is set to [0, 0].
+
+
+ Attempting to delete a screen surface which is currently being
+ displayed will result in the error EGL_BAD_ACCESS being generated.
+
+
+
+ EGLBoolean eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLint x, EGLint y)
+
+ Specifies the origin of the screen's view into the surface, if the
+ surface is larger than the screen. Valid values for x and y are
+ [0, surfaceWidth - screenWidth] and [0, surfaceHeight - screenHeight],
+ respectively.
+
+ The x and y values are also constrained to be integer multiples of the
+ EGL_SCREEN_POSITION_GRANULARITY_MESA values.
+
+
+
+
+ EGLBoolean eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLint attrib, EGLint *value);
+
+ Used to query screen attributes. <attrib> may be one of the following:
+
+ Name Return value description
+ ------------------------ ---------------------------------------------
+ EGL_SCREEN_POSITION_MESA x, y position of the screen's origin with
+ respect to the surface. If no surface is
+ attached to the screen, [0, 0] is returned.
+ EGL_SCREEN_POSITION_GRANULARITY_MESA
+ Returns the granularity, in pixels, for
+ which the screen position is constrained.
+
+ Any other token will generate the error EGL_BAD_ATTRIBUTE.
+
+
+
+
+ EGLBoolean eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLSurface *surface)
+
+ Returns the surface currently displayed on the given screen. <surface>
+ may be EGL_NO_SURFACE if the screen isn't currently showing any surface.
+
+
+
+
+ EGLBoolean eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
+ EGLModeMESA *mode)
+
+ Returns the given screen's current display mode. The mode may be
+ EGL_NO_MODE_MESA if the screen is currently disabled.
+
+
+
+ const char *eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode);
+
+ Returns a human-readable string for the given mode. The string is a
+ zero-terminated C string which the user should not attempt to free.
+ There is no standard syntax for mode strings. Applications should
+ not directly rely on mode strings.
+
+
+
+Version History
+
+ 1. 15 March 2005 - BrianP
+ Initial version
+
+ 2. 16 March 2005 - BrianP
+ Removed EGL_DEPTH_MESA
+ Added EGL_PHYSICAL_WIDTH_MESA, EGL_PHYSICAL_HEIGHT_MESA queries
+ Added EGL_OPTIMAL_MESA for width/height/refresh rate selection
+ Added possible eglQueryModeStringMESA() function
+ More details of the new functions explained.
+
+ 3. 18 March 2005 - BrianP
+ Added screen_number to eglChooseModeMESA().
+ Fix off by one mistake in value range for ORIGIN attributes
+ Added Issues section
+
+ 4. 21 March 2005 - BrianP
+ Removed eglScreenAttribsMESA().
+ Added eglScreenPositionMESA() to set screen origin.
+ Replaced EGL_SCREEN_X/Y_OFFSET_MESA with EGL_SCREEN_POSITION_MESA.
+ Replaced EGL_PHYSICAL_WIDTH/HEIGHT_MESA with EGL_PHYSICAL_SIZE_MESA.
+ Use EGL_OPTIMAL_MESA as a new mode attribute. (Michel Danzer)
+ Added a few more issues.
+
+ 5. 6 April 2005 - BrianP
+ More language for eglGetModeStringMESA().
+ Added issues 10, 11, 12, 13, 14.
+ Updated issue 3 discussion about mode sorting.
+
+ 6. 22 April 2005 - BrianP
+ Fixed "LDC" typo.
+ Added issues 15, 16.
+ Changed dependency on EGL 1.1 to EGL 1.0
+ s/EGL_NUM_SCREENS_MESA/EGL_SCREEN_COUNT_MESA/
+ Added eglQueryDisplayMESA() to New Functions section.
+ Clarified language for the EGL_SCREEN_COUNT_MESA query.
+
+ 7. 29 April 2005 - BrianP
+ Added EGLScreenMESA type and eglGetScreensMESA() function. [J. Smirl].
+ Replaced EGLint screen_number parameters with EGLScreenMESA screen.
+ Added issue 17 (pixel-accurate panning)
+
+ 8. 2 May 2005 - BrianP
+ Removed eglQueryDisplayMESA.
+ Fixed a few more EGLint -> EGLScreenMESA changes.
+
+ 9. 20 May 2005 - BrianP
+ Fixed a few typos.
+ Updated some open issues text.
+
+ 10. 10 August 2005 - BrianP
+ Added EGL_SCREEN_POSITION_GRANULARITY_MESA.
+
+ 11. 27 January 2006 - BrianP
+ EGL_PHYSICAL_SIZE_MESA removed since EGL 1.2 has a similar feature.
+
diff --git a/lib/mesa/docs/specs/enums.txt b/lib/mesa/docs/specs/enums.txt
index b37768e20..1caa28459 100644
--- a/lib/mesa/docs/specs/enums.txt
+++ b/lib/mesa/docs/specs/enums.txt
@@ -1,10 +1,18 @@
+The definitive source for enum values and reserved ranges are the XML files in
+the Khronos registry:
-See the OpenGL ARB enum registry at http://www.opengl.org/registry/api/enum.spec
+ https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/egl.xml
+ https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/gl.xml
+ https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/glx.xml
+ https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/wgl.xml
-Blocks allocated to Mesa:
+GL blocks allocated to Mesa:
0x8750-0x875F
0x8BB0-0x8BBF
+EGL blocks allocated to Mesa:
+ 0x31D0-0x31DF
+ 0x3290-0x329F
GL_MESA_packed_depth_stencil
GL_DEPTH_STENCIL_MESA 0x8750
@@ -13,7 +21,7 @@ GL_MESA_packed_depth_stencil
GL_UNSIGNED_SHORT_15_1_MESA 0x8753
GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
-GL_MESA_trace.spec:
+GL_MESA_trace:
GL_TRACE_ALL_BITS_MESA 0xFFFF
GL_TRACE_OPERATIONS_BIT_MESA 0x0001
GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
@@ -24,12 +32,12 @@ GL_MESA_trace.spec:
GL_TRACE_MASK_MESA 0x8755
GL_TRACE_NAME_MESA 0x8756
-MESA_ycbcr_texture.spec:
+GL_MESA_ycbcr_texture:
GL_YCBCR_MESA 0x8757
GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
-GL_MESA_pack_invert.spec
+GL_MESA_pack_invert:
GL_PACK_INVERT_MESA 0x8758
GL_MESA_shader_debug.spec: (obsolete)
@@ -37,7 +45,7 @@ GL_MESA_shader_debug.spec: (obsolete)
GL_DEBUG_PRINT_MESA 0x875A
GL_DEBUG_ASSERT_MESA 0x875B
-GL_MESA_program_debug.spec: (obsolete)
+GL_MESA_program_debug: (obsolete)
GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x????
GL_VERTEX_PROGRAM_CALLBACK_MESA 0x????
GL_FRAGMENT_PROGRAM_POSITION_MESA 0x????
@@ -55,3 +63,24 @@ GL_MESAX_texture_stack:
GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+EGL_MESA_drm_image
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+ EGL_DRM_BUFFER_USE_MESA 0x31D1
+ EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+ EGL_DRM_BUFFER_MESA 0x31D3
+ EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+
+EGL_MESA_platform_gbm
+ EGL_PLATFORM_GBM_MESA 0x31D7
+
+EGL_MESA_platform_surfaceless
+ EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+
+EGL_WL_bind_wayland_display
+ EGL_TEXTURE_FORMAT 0x3080
+ EGL_WAYLAND_BUFFER_WL 0x31D5
+ EGL_WAYLAND_PLANE_WL 0x31D6
+ EGL_TEXTURE_Y_U_V_WL 0x31D7
+ EGL_TEXTURE_Y_UV_WL 0x31D8
+ EGL_TEXTURE_Y_XUXV_WL 0x31D9
+ EGL_WAYLAND_Y_INVERTED_WL 0x31DB