blob: c6e3b27fe5a20f860304c8107a5cce769c476ebd [file] [log] [blame]
Name
ANGLE_surface_orientation
Name Strings
EGL_ANGLE_surface_orientation
Contributors
Geoff Lang, Google
Contacts
Geoff Lang, Google (geofflang 'at' google 'dot' com)
Status
Draft
Version
Version 1, 2015-12-15
Number
EGL Extension XXX
Extension Type
EGL display extension
Dependencies
Written based on the wording of the EGL 1.5 Specification
(August 7 2014).
Overview
This extension provides a mechanism for querying the most optimal
orientation of a window surface and creating window sufraces with
non-default orientations for the most performant rendering.
New Types
None
New Procedures and Functions
None
New Tokens
New EGLConfig bitmask attribute name:
EGL_OPTIMAL_SURFACE_ORIENTATION_ANGLE 0x33A7
Accepted as an attribute name in the <attrib_list> argument of
eglCreateWindowSurface and attribute name in the <attribute>
argument of eglQuerySurface:
EGL_SURFACE_ORIENTATION_ANGLE 0x33A8
Valid bitfields in the EGL_OPTIMAL_SURFACE_ORIENTATION_ANGLE bitmask
attribute of EGLConfig and EGL_SURFACE_ORIENTATION_ANGLE bitmask attribute
of eglCreateWindowSurface:
EGL_SURFACE_ORIENTATION_INVERT_X_ANGLE 0x0001
EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE 0x0002
Additions to the EGL Specification
Additions to Chapter 3 of the EGL 1.5 Specification (EGL Functions and Errors)
Add to table 3.1 (EGLConfig Attributes)
Attribute Type Notes
------------------------------------- ------- ----------------------
EGL_OPTIMAL_SURFACE_ORIENTATION_ANGLE bitmask Optimal window surface
orientation.
Add a paragraph to section 3.4, section Other EGLConfig Attribute
Descriptions.
"EGL_OPTIMAL_SURFACE_ORIENTATION_ANGLE is a mask indicating which
window surface orientation will provide the best performance."
Add to table 3.4 (Default values and match criteria for EGLConfig
attributes):
Attribute Default Selection Sort Sort
Criteria Order Priority
------------------------------------- ------- --------- ------- --------
EGL_OPTIMAL_SURFACE_ORIENTATION_ANGLE 0 Exact None
Add a paragraph to section 3.5.1, section Creating On-Screen Rendering
Surfaces.
EGL_SURFACE_ORIENTATION_ANGLE attribute specifies how the surface's content
will appear on the screen. If its value contains
EGL_SURFACE_ORIENTATION_INVERT_X_ANGLE then all displayed content will be
inverted along the vertical axis. Similarly, if its value contains
EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE then all displayed content will be
inverted along the horizontal axis.
Add to table 3.5 (Queryable surface attributes and types):
Attribute Type Description
----------------------------- ------- ----------------------
EGL_SURFACE_ORIENTATION_ANGLE bitmask Orientation of surface
Add a paragraph to section 3.5.6, Surface Attributes:
"Querying EGL_SURFACE_ORIENTATION_ANGLE returns the orientation of the
surface. For a window surface, this is the same attribute value specified
when the surface was created. For other types of surfaces, it is always
0."
Issues
1) What about dirty regions and sub regions specified by extensions such as
NV_post_sub_buffer?
These regions will be applied to the same region of the window as
before because they are often specified based on events from the
operating system. The content in these regions will be displayed
according to the value of EGL_SURFACE_ORIENTATION_ANGLE.
Revision History
Version 1, 2015-12-15 (Geoff Lang)
- Initial draft