Conformance Test

    CTS_ARB_texture_filter_minmax

Contributors

    Filip Demczewski, Mobica

Contacts

    Filip Demczewski, Mobica (filip.demczewski 'at' mobica.com)

Status

    In review

Version

    November 17, 2016 (version 1)

Dependencies

    OpenGL 3.3 is required.

    ARB_texture_filter_minmax extension is required.

    This specification is written against:
      - ARB_texture_filter_minmax specification,
      - OpenGL 4.5 (core) specification.

Overview

    This tests verifies if functionality provided by ARB_texture_filter_minmax
    works as expected:

      * Verify if new texture and sampler parameter (TEXTURE_REDUCTION_MODE_ARB)
        allows application to produce a filtered texel value by computing
        component-wise minimum (MIN) or maximum (MAX).

      * The filter parameters are used to identify the set of texels used to
        produce a final filtered value. Verify if reduction mode identifies how
        these texels are combined.

New Tests

    New State Queries Test

      * Test SamplerParameter{i f}{v},
        SamplerParameterI{u}iv, GetSamplerParameter{i f}v,
        GetSamplerParameterI{u}iv, TexParameter{i f}{v}, TexParameterI{u}iv,
        GetTexParameter{i f}v, GetTexParameterI{u}iv, TextureParameter{i f}{v},
        TextureParameterI{u}iv, GetTextureParameter{i f}v,
        and GetTextureParameterI{u}iv queries for <pname>:

          - TEXTURE_REDUCTION_MODE_ARB

        Check default values and set manually.

    Minification/Magnification Filtering Test

      * Iterate through all supported targets and texture formats.
            Iterate through TEXTURE_REDUCTION_MODE_ARB modes
            (MIN, WEIGHTED_AVERAGE_ARB, MAX).
                Compose texture where pixels have extreme values (0 and max).
                Set LINEAR filtering.
                Render polygon smaller or bigger than texture to a frame buffer.
                Sum up pixel values - final result should increase with
                each consecutive TEXTURE_REDUCTION_MODE_ARB mode.

        When anisotropic texture filtering is enabled final filtered texel
        value is computed by using implementation-dependent set of texels and
        weights, so it cannot be tested.

    Mipmap Minification Filtering Test

      * Iterate through all supported targets
            Iterate through TEXTURE_REDUCTION_MODE_ARB modes (MIN, MAX)
                Iterate through filters (NEAREST_MIPMAP_LINEAR, LINEAR_MIPMAP_LINEAR)
                    Compose texture where pixels have extreme values (0 and max).
                    Set filtering.
                    Render polygon smaller than texture size to the frame buffer.
                    Sum up pixel values - final result should increase with
                    each consecutive TEXTURE_REDUCTION_MODE_ARB mode.

    Support Test

      * Test support for TEXTURE_REDUCTION_MODE_ARB by calling GetInternalFormat*
        Support should be provided if:
          - texture is not multisampled
          - internal format of texture is GL_RED
          - internal format of texture is GL_LUMINANCE
            (if compatibility profile is supported)
          - data type of texture is fixed- or floating-point

Revision History

    Revision 1, 17 November, 2016 (Filip Demczewski)
      - Intial version;

    Revision 2, 22 November, 2016 (Filip Demczewski)
      - Filtering tests change. Due to implementation-dependency the steps of
        the test has been change to validate general differences between reduction
        modes instead of validating each pixel separately.