Name

    QCOM_binning_control

Name Strings

    GL_QCOM_binning_control

Contributors

    Maurice Ribble

Contact

    Maurice Ribble (mribble 'at' qualcomm.com)

Notice

    Copyright Qualcomm 2010

IP Status

    Qualcomm Proprietary.

Status

    Draft

Version

    Date: May 2, 2012

Number

    OpenGL ES Extension #119

Dependencies

    OpenGL ES 1.0 is required.

    This extension is written against the OpenGL ES 2.0 specification.

Overview

    This extension adds some new hints to give more control to application
    developers over the driver's binning algorithm.

    Only change this state right before changing rendertargets or right after
    a swap or there will be a large performance penalty.

Issues

    None

New Procedures and Functions

    None

New Tokens

    Accepted by the <target> parameter of Hint:

    BINNING_CONTROL_HINT_QCOM           0x8FB0

    Accepted by the <hint> parameter of Hint:
    CPU_OPTIMIZED_QCOM                  0x8FB1
    GPU_OPTIMIZED_QCOM                  0x8FB2
    RENDER_DIRECT_TO_FRAMEBUFFER_QCOM   0x8FB3
    DONT_CARE                           0x1100

Additions to Section 5.1 (Hints) of the OpenGL ES 2.0 Specification

    Replace "target is a symoblic...." with:
    
    target is a symbolic constant indicating the behavior to be controlled, and
    hint is a symbolic constant indicating what type of behavior is desired. 
    target can be GENERATE_MIPMAP_HINT or BINNING_CONTROL_HINT_QCOM.
    GENERATE_MIPMAP_HINT  indicates the desired quality and performance of
    mipmap level generation with GenerateMipmap. When target is
    GENERATE_MIPMAP_HINT hint must be one of FASTEST, indicating that the most
    efficient option should be chosen; NICEST, indicating that the highest
    quality option should be chosen; and DONT_CARE, indicating no preference in
    the matter.  A target of BINNING_CONTROL_HINT_QCOM gives hints at what 
    binning algorithm is to be used.  When the target is BINNING_CONTROL_QCOM 
    the hint must be one of the values below:

    CPU_OPTIMIZED_QCOM                - binning algorithm focuses on lower CPU
                                        utilization (this path increases vertex
                                        processing)
    GPU_OPTIMIZED_QCOM                - binning algorithm focuses on lower GPU
                                        utilization (this path increases CPU
                                        usage)
    RENDER_DIRECT_TO_FRAMEBUFFER_QCOM - render directly to the final 
                                        framebuffer and bypass tile memory 
                                        (this path has a low CPU usage, but
                                        in some cases uses more memory 
                                        bandwidth)
    DONT_CARE                         - the driver picks which binning 
                                        algorithm to use (default)

    The Qualcomm Adreno 200 family does not support 
    RENDER_DIRECT_TO_FRAMEBUFFER_QCOM option and this hint will be ignored on that
    hardware.

    When BINNING_CONTROL_QCOM do so right before changing rendertargets or right after
    swap or there will be a large performance penalty.
    
New State

Get Value                                 Type          Command      Value
---------                                 ----          -------     -------
BINNING_CONTROL_HINT_QCOM                special      GetIntegerv   DONT_CARE

Revision History

    6/15/2010  Created.
    6/22/2010  Name changes, cleanup, add token numbers.
    10/11/2010 Simplified extension to remove some of the extra modes.
    1/27/2012  Added in RENDER_DIRECT_TO_FRAMEBUFFER_QCOM
    5/2/2012   Added IP Status
