Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / gpu / GLES2 / extensions / CHROMIUM / CHROMIUM_get_multiple.txt
blobd4685d59f5d10e046ed0ad979b0eee095430c81b
1 Name
3     CHROMIUM_get_multiple
5 Name Strings
7     GL_CHROMIUM_get_multiple
9 Version
11     Last Modifed Date: July 22, 2011
13 Dependencies
15     OpenGL ES 2.0 is required.
17 Overview
19     This extension adds the ability to query multiple program information in a
20     single call.
22 Issues
25 New Tokens
27     None
29 New Procedures and Functions
31     void GetProgrmaInfoCHROMIUM (GLuint program, GLsizei bufsize,
32                                  GLsizei* size, void* info)
34     <program> is the program to query. <bufsize> is the size of the buffer to
35     hold the results. <size> is a pointer to a GLsizei to store the size needed
36     to hold the results. <info> is a pointer to memory to store the result.
38     To query the space needed for the results set <info> to NULL.
40     The format of the data that will be stored in the memory pointed to by
41     <info> is as follows.
43         struct ProgramInfoHeader {
44           uint32 link_status;  // same as GetProgramiv called with LINK_STATUS
45           uint32 num_attribs;  // the number of active attributes
46           uint32 num_uniforms;  // the number of active uniforms
47           ProgramInput inputs[num_attribs + num_uniforms];
48         }
50         // The data for one attrib or uniform from GetProgramInfoCHROMIUM.
51         struct ProgramInput {
52           uint32 type;             // The type (GL_VEC3, GL_SAMPLER_2D, etc.
53           int32 size;              // The size (size of array for uniforms)
54           uint32 location_offset;  // offset from ProgramInfoHeader to 'size'
55                                    // locations for uniforms, 1 for attribs.
56           uint32 name_offset;      // offset from ProgrmaInfoHeader to start of
57                                    // name.
58           uint32 name_length;      // length of the name.
59         };
61     It is important to note that for attribs, size is the size of the attrib and
62     location_offset points to a single location. For uniforms, size is the
63     number of array elements and location_offset points to an array of size
64     locations, one of each element of the array.
66     INVALID_VALUE is generated if <bufsize> is less than 0
68     INVALID_VALUE is generated if <size> is NULL
70     INVALID_OPERATION is returned if <size> is less than the size needed to hold
71     all the results.
74     NOTE: This function is not intended to be used directly. Chromium uses it
75     internally to cache data.
78 Errors
80     None.
82 New State
84     None.
86 Revision History
88     7/22/2011    Documented the extension