Name

    CHROMIUM_get_multiple

Name Strings

    GL_CHROMIUM_get_multiple

Version

    Last Modifed Date: July 22, 2011

Dependencies

    OpenGL ES 2.0 is required.

Overview

    This extension adds the ability to query multiple state and program
    information in a single call.

Issues


New Tokens

    None

New Procedures and Functions

    void GetMultipleIntegervCHROMIUM (const GLenum* pnames, GLuint count,
                                      GLint* results, GLsizeiptr size)

    <pnames> points to an array of state enums that would normally be queried by
    GetIntegerv. <count> is the number of pnames. <results> points memory large
    enough to contain all the state being queried. <size> is the size of the
    buffer pointed to be <results>

    Example: <pnames> points to an array with VIEWPORT and MAX_TEXTURE_SIZE.
    VIEWPORT returns 4 values, MAX_TEXTURE_SIZE returns 1 value. Therefore
    results must point to a buffer of size 5 * sizeof(GLint) and size must be at
    least 5 * sizeof(GLint)

    INVALID_ENUM is generated if any of the pnames are not valid for GetIntegerv

    INVALID_VALUE is generated if <size> does not equal the size needed for the
    query

    INVALID_VALUE is generated if the memory pointed to be <results> has not
    been zeroed out.

    void GetProgrmaInfoCHROMIUM (GLuint program, GLsizei bufsize,
                                 GLsizei* size, void* info)

    <program> is the program to query. <bufsize> is the size of the buffer to
    hold the results. <size> is a pointer to a GLsizei to store the size needed
    to hold the results. <info> is a pointer to memory to store the result.

    To query the space needed for the results set <info> to NULL.

    The format of the data that will be stored in the memory pointed to by
    <info> is as follows.

        struct ProgramInfoHeader {
          uint32 link_status;  // same as GetProgramiv called with LINK_STATUS
          uint32 num_attribs;  // the number of active attributes
          uint32 num_uniforms;  // the number of active uniforms
          ProgramInput inputs[num_attribs + num_uniforms];
        }

        // The data for one attrib or uniform from GetProgramInfoCHROMIUM.
        struct ProgramInput {
          uint32 type;             // The type (GL_VEC3, GL_SAMPLER_2D, etc.
          int32 size;              // The size (size of array for uniforms)
          uint32 location_offset;  // offset from ProgramInfoHeader to 'size'
                                   // locations for uniforms, 1 for attribs.
          uint32 name_offset;      // offset from ProgrmaInfoHeader to start of
                                   // name.
          uint32 name_length;      // length of the name.
        };

    It is important to note that for attribs, size is the size of the attrib and
    location_offset points to a single location. For uniforms, size is the
    number of array elements and location_offset points to an array of size
    locations, one of each element of the array.

    INVALID_VALUE is generated if <bufsize> is less than 0

    INVALID_VALUE is generated if <size> is NULL

    INVALID_OPERATION is returned if <size> is less than the size needed to hold
    all the results.


    NOTE: This function is not intended to be used directly. Chromium uses it
    internally to cache data.


Errors

    None.

New State

    None.

Revision History

    7/22/2011    Documented the extension
