Name

    MESA_framebuffer_flip_y

Name Strings

    GL_MESA_framebuffer_flip_y

Contact

    Fritz Koenig <frkoenig@google.com>

Contributors

    Fritz Koenig, Google
    Kristian Høgsberg, Google
    Chad Versace, Google

Status

    Proposal

Version

    Version 1, June 7, 2018

Number

    OpenGL ES Extension #302

Dependencies

    OpenGL ES 3.1 is required, for FramebufferParameteri.

Overview

    This extension defines a new framebuffer parameter,
    GL_FRAMEBUFFER_FLIP_Y_MESA, that changes the behavior of the reads and
    writes to the framebuffer attachment points. When GL_FRAMEBUFFER_FLIP_Y_MESA
    is GL_TRUE, render commands and pixel transfer operations access the
    backing store of each attachment point with an y-inverted coordinate
    system. This y-inversion is relative to the coordinate system set when
    GL_FRAMEBUFFER_FLIP_Y_MESA is GL_FALSE.

    Access through TexSubImage2D and similar calls will notice the effect of
    the flip when they are not attached to framebuffer objects because
    GL_FRAMEBUFFER_FLIP_Y_MESA is associated with the framebuffer object and
    not the attachment points.

IP Status

    None

Issues

    None

New Procedures and Functions

    None

New Types

    None

New Tokens

    Accepted by the <pname> argument of FramebufferParameteri and
    GetFramebufferParameteriv:

        GL_FRAMEBUFFER_FLIP_Y_MESA                      0x8BBB

Errors

    An INVALID_OPERATION error is generated by GetFramebufferParameteriv if the
    default framebuffer is bound to <target> and <pname> is FRAMEBUFFER_FLIP_Y_MESA.



Revision History

    Version 1, June, 2018
        Initial draft (Fritz Koenig)
