Name

    NVX_blend_equation_advanced_multi_draw_buffers

Name Strings

    GL_NVX_blend_equation_advanced_multi_draw_buffers

Contact

    Kedarnath Thangudu, NVIDIA Corporation (kthangudu 'at' nvidia.com)

Contributors

    Mark Kilgard, NVIDIA Corporation

Status

    Shipping in Pascal GPUs, June 2016.

Version

    Last Modified Date:         July 15, 2016
    NVIDIA Revision:            2

Number

    OpenGL Extension #492
    OpenGL ES Extension #266

Dependencies

    This extension is written against NV_blend_equation_advanced as 
    applied to OpenGL 4.1 Specification (Compatibility Profile).

    This extension requires either NV_blend_equation_advanced or
    KHR_blend_equation_advanced.

Overview

    This extension adds support for using advanced blend equations
    introduced with NV_blend_equation_advanced (and standardized
    by KHR_blend_equation_advanced) in conjunction with multiple
    draw buffers.  The NV_blend_equation_advanced extension supports
    advanced blending equations only when rending to a single color
    buffer using fragment color zero and throws and INVALID_OPERATION
    error when multiple draw buffers are used. This extension removes
    this restriction.

New Procedures and Functions

    None

New Tokens

    None

Additions to Chapter 2 of the OpenGL 4.1 Specification (OpenGL Operation)

    None.

Additions to Chapter 3 of the OpenGL 4.1 Specification (Rasterization)

    None.

Additions to Chapter 4 of the OpenGL 4.1 Specification (Per-Fragment
Operations and the Frame Buffer)

    [[In the "Advanced Blend Equations" subsection added in 
      NV_blend_equation_advanced, delete the paragraph beginning "If any 
      non-NONE draw buffer uses a blend equation..." and replace it with the
      following paragraph. Advanced blend equations are now allowed with 
      multiple draw buffers as long as they use they use identical blend 
      equations.]]

    If any non-NONE draw buffer uses a blend equation found in table X.2, X.3, 
    or X.4, the error INVALID_OPERATION is generated by [[Compatibility 
    Profile:  Begin or any operation that implicitly calls Begin (such as 
    DrawElements)]] [[Core Profile:  DrawArrays and the other drawing commands 
    defined in section 2.8.3]] if any other non-NONE draw buffer uses a 
    different blend equation.

Additions to Chapter 5 of the OpenGL 4.1 Specification (Special Functions)

    None.

Additions to Chapter 6 of the OpenGL 4.1 Specification (State and
State Requests)

    None.

Additions to Appendix A of the OpenGL 4.1 Specification (Invariance)

    None.

Additions to the AGL/GLX/WGL/EGL Specifications

    None.

GLX Protocol

    None (since adds no API).

Dependencies on OpenGL 4.1 (Core Profile)

    [[Delete the paragraph beginning "This extension throws an 
      INVALID_OPERATION..." and replace it with the following paragraph]]

    This extension throws an INVALID_OPERATION when Begin is called if advanced
    blend equations are used and the blend equations for all the non-NONE draw 
    buffers are not identical.  For the core profile of OpenGL 4.1 (and other 
    versions of OpenGL), there is no Begin command; instead, the error is 
    thrown by other rendering commands such as DrawArrays.  The language in 
    this specification documenting the error has separate versions for the 
    core and compatibility profiles.

Errors
    
    [[Delete the paragraph beginning "If any non-NONE draw buffer uses a blend 
      equation..." and replace with the following.]]

    If any non-NONE draw buffer uses a blend equation found in table X.2, X.3,
    or X.4, the error INVALID_OPERATION is generated by Begin or any operation
    that implicitly calls Begin (such as DrawElements) if any other non-NONE 
    draw buffer uses a different blend equation.

New State

    None

New Implementation Dependent State

    None.

Issues

    1)  Why does this extension have no functions or tokens?

        RESOLVED:  This extension only relaxes error conditions
        specified by the KHR_blend_equation_advanced and
        NV_blend_equation_advanced_extensions.

    2)  Does this extension support ES 2.x and ES 3.x?

        RESOLVED:  Yes, if the extension is advertised in an ES 2.x or
        3.x context, the extension is supported.

Revision History
    
    Rev.    Date    Author      Changes
    ----  --------  ---------   -----------------------------------------
     1              kthangudu   Internal revisions.
     2    7/16/16   mjk         typo + no GLX protocol needed
