Name

    NV_coverage_sample_resolve

Name Strings

    EGL_NV_coverage_sample_resolve

Contact

    James Jones, NVIDIA Corporation (jajones 'at' nvidia.com)

Notice

    Copyright NVIDIA Corporation, 2011

Status

    NVIDIA Proprietary

Version

    Last Modified Date:  2011/04/13
    NVIDIA Revision: 1.0

Number

    EGL Extension #30

Dependencies

    Written based on the wording of the EGL 1.4 specification.

    Trivially interacts with EGL_NV_coverage_sample

    Requires EGL 1.2.

Overview

    NV_coverage_sample introduced a method to improve rendering quality
    using a separate buffer to store coverage information for pixels in
    the color buffers.  It also provided a mechanism to disable writing
    to the coverage buffer when coverage sample filtering was not needed
    or undesirable.  However, it did not provide a way to disable
    reading data from the coverage buffer at resolve time.  In some
    cases performance can be improved by eliminating these memory reads.
    To that end, this extension exposes a surface attribute that allows
    applications to specify when no coverage sample resolve is desired.

IP Status

    NVIDIA Proprietary

New Types

    None

New Procedures and Functions

    None

New Tokens

    Accepted by the <attribute> parameter of eglSurfaceAttrib and
    eglQuerySurface:

        EGL_COVERAGE_SAMPLE_RESOLVE_NV              0x3131

    Accepted by the <value> parameter of eglSurfaceAttrib and returned
    in the <value> parameter of eglQuerySurface when <attribute> is
    EGL_COVERAGE_SAMPLE_RESOLVE_NV:

        EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV      0x3132
        EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV         0x3133

Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
Errors)

    Additions to section 3.5.6 (Surface Attributes)

    Replace the last sentence of paragraph 2 (p. 35):

    "Attributes that can be specified are
    EGL_COVERAGE_SAMPLE_RESOLVE_NV, EGL_MIPMAP_LEVEL,
    EGL_MULTISAMPLE_RESOLVE, and EGL_SWAP_BEHAVIOR."

    Add the following paragraphs between paragraphs 2 and 3 (p. 35):

    "If <attribute> is EGL_COVERAGE_SAMPLE_RESOLVE_NV, then <value>
    specifies the filter to use when resolving the coverage sample
    buffer.  A <value> of EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV chooses
    the default implementation-defined filtering method, while
    EGL_MULTISAMPLE_RESOLVE_NONE_NV disables filtering based on coverage
    data.

    "The initial value of EGL_COVERAGE_SAMPLE_RESOLVE_NV is
    EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV."

    Add the following paragraph after paragraph 13 (p. 36):

    "Querying EGL_COVERAGE_SAMPLE_RESOLVE_NV returns the filtering
    method used when performing coverage buffer resolution.  The filter
    may be either EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV or
    EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV, as described above for
    eglSurfaceAttrib."

Interactions with EGL_NV_coverage_sample:

    This extension relies on language in EGL_NV_coverage_sample to
    describe the coverage sample buffer.

    If EGL_NV_coverage_sample is not present, this extension has no
    effect on rendering.

Issues

    1.  Should it be an error to set EGL_COVERAGE_SAMPLE_RESOLVE_NV on
        surfaces that don't have a coverage buffer?

        RESOLVED:  No.  EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV will behave
        the same as EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV in this case.

Revision History

#1  (James Jones, 2011-04-13)

    - Initial revision.
