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 argument of eglCreateWindowSurface and attribute name in the 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