rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man4 / glGetProgramResource.xml
diff --git a/upstream-doc/man4/glGetProgramResource.xml b/upstream-doc/man4/glGetProgramResource.xml
new file mode 100644 (file)
index 0000000..ecad016
--- /dev/null
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"\r
+              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">\r
+<refentry id="glGetProgramResource">\r
+    <refmeta>\r
+        <refmetainfo>\r
+            <copyright>\r
+                <year>2012</year>\r
+                <holder>Khronos Group</holder>\r
+            </copyright>\r
+        </refmetainfo>\r
+        <refentrytitle>glGetProgramResource</refentrytitle>\r
+        <manvolnum>3G</manvolnum>\r
+    </refmeta>\r
+    <refnamediv>\r
+        <refname>glGetProgramResource</refname>\r
+        <refpurpose>retrieve values for multiple properties of a single active resource within a program object</refpurpose>\r
+    </refnamediv>\r
+    <refsynopsisdiv><title>C Specification</title>\r
+        <funcsynopsis>\r
+            <funcprototype>\r
+                <funcdef>void <function>glGetProgramResourceiv</function></funcdef>\r
+                <paramdef>GLuint <parameter>program</parameter></paramdef>\r
+                <paramdef>GLenum <parameter>programInterface</parameter></paramdef>\r
+                <paramdef>GLuint <parameter>index</parameter></paramdef>\r
+                <paramdef>GLsizei <parameter>propCount</parameter></paramdef>\r
+                <paramdef>const Glenum * <parameter>props</parameter></paramdef>\r
+                <paramdef>GLsizei <parameter>bufSize</parameter></paramdef>\r
+                <paramdef>GLsizei * <parameter>length</parameter></paramdef>\r
+                <paramdef>GLint * <parameter>params</parameter></paramdef>\r
+            </funcprototype>\r
+        </funcsynopsis>\r
+    </refsynopsisdiv>\r
+    <refsect1 id="parameters"><title>Parameters</title>\r
+        <variablelist>\r
+        <varlistentry>\r
+            <term><parameter>program</parameter></term>\r
+            <listitem>\r
+                <para>\r
+                    The name of a program object whose resources to query.\r
+                </para>\r
+            </listitem>\r
+        </varlistentry>\r
+        <varlistentry>\r
+            <term><parameter>programInterface</parameter></term>\r
+            <listitem>\r
+                <para>\r
+                    A token identifying the interface within <parameter>program</parameter> containing the resource named <parameter>name</parameter>.\r
+                </para>\r
+            </listitem>\r
+        </varlistentry>\r
+        </variablelist>\r
+    </refsect1>\r
+    <refsect1 id="description"><title>Description</title>\r
+        <para>\r
+            <function>glGetProgramResourceiv</function> returns values for multiple properties of a single active resource with an\r
+            index of <parameter>index</parameter> in the interface <parameter>programInterface</parameter> of program object\r
+            <parameter>program</parameter>.  For each resource, values for <parameter>propCount</parameter> properties specified\r
+            by the array <parameter>props</parameter> are returned.  <parameter>propCount</parameter> may not be zero.\r
+            An error is generated if any value\r
+            in <parameter>props</parameter> is not one of the properties described immediately belowor if any value in <parameter>props</parameter> is not\r
+            allowed for <parameter>programInterface</parameter>.  The set of allowed <parameter>programInterface</parameter>\r
+            values for each property can be found in the following table:\r
+        </para>\r
+        <informaltable frame="topbot">\r
+            <tgroup cols="2" align="left">\r
+                <colspec colnum="1" colname="col1" colwidth="1*"/>\r
+                <colspec colnum="2" colname="col2" colwidth="2*"/>\r
+                <thead>\r
+                    <row>\r
+                        <entry morerows="1" rowsep="1" align="center">Property</entry>\r
+                        <entry morerows="1" rowsep="1" align="center">Supported Interfaces</entry>\r
+                    </row>\r
+                </thead>\r
+                <tbody>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_NAME_LENGTH</constant></entry>\r
+                        <entry align="left">Any except <constant>GL_ATOMIC_COUNTER_BUFFER</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_TYPE</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant>, <constant>GL_TRANSFORM_FEEDBACK_VARYING</constant>, <constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_ARRAY_SIZE</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_BUFFER_VARIABLE</constant>, <constant>GL_PROGRAM_INPUT</constant>,\r
+                                            <constant>GL_PROGRAM_OUTPUT, VERTEX_SUBROUTINE_UNIFORM</constant>, <constant>GL_TESS_CONTROL_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</constant>, <constant>GL_GEOMETRY_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_FRAGMENT_SUBROUTINE_UNIFORM</constant>, <constant>GL_COMPUTE_SUBROUTINE_UNIFORM</constant>, <constant>GL_TRANSFORM_FEEDBACK_VARYING</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_OFFSET</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_BLOCK_INDEX</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_ARRAY_STRIDE</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_MATRIX_STRIDE</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_IS_ROW_MAJOR</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_ATOMIC_COUNTER_BUFFER_INDEX</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_TEXTURE_BUFFER</constant></entry>\r
+                        <entry align="left"><emph>none</emph></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_BUFFER_BINDING</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_BUFFER_DATA_SIZE</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_NUM_ACTIVE_VARIABLES</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_ACTIVE_VARIABLES</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_REFERENCED_BY_VERTEX_SHADER</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_SHADER</constant>,\r
+                                            <constant>GL_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant>, <constant>GL_BUFFER_VARIABLE</constant>,\r
+                                            <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_REFERENCED_BY_TESS_CONTROL_SHADER</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_SHADER</constant>,\r
+                                            <constant>GL_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant>, <constant>GL_BUFFER_VARIABLE</constant>,\r
+                                            <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_REFERENCED_BY_TESS_EVALUATION_SHADER</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_SHADER</constant>,\r
+                                            <constant>GL_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant>, <constant>GL_BUFFER_VARIABLE</constant>,\r
+                                            <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_REFERENCED_BY_GEOMETRY_SHADER</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_SHADER</constant>,\r
+                                            <constant>GL_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant>, <constant>GL_BUFFER_VARIABLE</constant>,\r
+                                            <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_REFERENCED_BY_FRAGMENT_SHADER</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_SHADER</constant>,\r
+                                            <constant>GL_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant>, <constant>GL_BUFFER_VARIABLE</constant>,\r
+                                            <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_REFERENCED_BY_COMPUTE_SHADER</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_UNIFORM_BLOCK</constant>, <constant>GL_ATOMIC_COUNTER_SHADER</constant>,\r
+                                            <constant>GL_BUFFER</constant>, <constant>GL_SHADER_STORAGE_BLOCK</constant>, <constant>GL_BUFFER_VARIABLE</constant>,\r
+                                            <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_NUM_COMPATIBLE_SUBROUTINES</constant></entry>\r
+                        <entry align="left"><constant>GL_VERTEX_SUBROUTINE_UNIFORM</constant>, <constant>GL_TESS_CONTROL_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</constant>, <constant>GL_GEOMETRY_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_FRAGMENT_SUBROUTINE_UNIFORM</constant>, <constant>GL_COMPUTE_SUBROUTINE_UNIFORM</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_COMPATIBLE_SUBROUTINES</constant></entry>\r
+                        <entry align="left"><constant>GL_VERTEX_SUBROUTINE_UNIFORM</constant>, <constant>GL_TESS_CONTROL_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</constant>, <constant>GL_GEOMETRY_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_FRAGMENT_SUBROUTINE_UNIFORM</constant>, <constant>GL_COMPUTE_SUBROUTINE_UNIFORM</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_TOP_LEVEL_ARRAY_SIZE</constant></entry>\r
+                        <entry align="left"><constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_TOP_LEVEL_ARRAY_STRIDE</constant></entry>\r
+                        <entry align="left"><constant>GL_BUFFER_VARIABLE</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_LOCATION</constant></entry>\r
+                        <entry align="left"><constant>GL_UNIFORM</constant>, <constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant>,\r
+                                            <constant>GL_VERTEX_SUBROUTINE_UNIFORM</constant>, <constant>GL_TESS_CONTROL_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</constant>, <constant>GL_GEOMETRY_SUBROUTINE_UNIFORM</constant>,\r
+                                            <constant>GL_FRAGMENT_SUBROUTINE_UNIFORM</constant>, <constant>GL_COMPUTE_SUBROUTINE_UNIFORM</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_LOCATION_INDEX</constant></entry>\r
+                        <entry align="left"><constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                    <row>\r
+                        <entry align="left"><constant>GL_IS_PER_PATCH</constant></entry>\r
+                        <entry align="left"><constant>GL_PROGRAM_INPUT</constant>, <constant>GL_PROGRAM_OUTPUT</constant></entry>\r
+                    </row>\r
+                </tbody>\r
+            </tgroup>\r
+        </informaltable>\r
+\r
+        <para>\r
+            For the property <constant>GL_NAME_LENGTH</constant>, a single integer identifying the length of\r
+            the name string associated with an active variable, interface block, or\r
+            subroutine is written to <parameter>params</parameter>.  The name length includes a terminating\r
+            null character.\r
+\r
+            For the property <constant>GL_TYPE</constant>, a single integer identifying the type of an active\r
+            variable is written to <parameter>params</parameter>.  The integer returned is one of the\r
+            values found in table 2.16.\r
+\r
+            For the property <constant>GL_ARRAY_SIZE</constant>, a single integer identifying the number of\r
+            active array elements of an active variable is written to <parameter>params</parameter>.  The\r
+            array size returned is in units of the type associated with the property\r
+            TYPE.  For active variables not corresponding to an array of basic types,\r
+            the value zero is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_BLOCK_INDEX</constant>, a single integer identifying the index of\r
+            the active interface block containing an active variable is written to\r
+            <parameter>params</parameter>.  If the variable is not the member of an interface block, the\r
+            value -1 is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_OFFSET</constant>, a single integer identifying the offset of an\r
+            active variable is written to <parameter>params</parameter>.  For active variables backed by a\r
+            buffer object, the value written is the offset, in basic machine units,\r
+            relative to the base of buffer range holding the values of the variable.\r
+            For active variables not backed by a buffer object, an offset of -1 is\r
+            written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_ARRAY_STRIDE</constant>, a single integer identifying the stride\r
+            between array elements in an active variable is written to <parameter>params</parameter>.  For\r
+            active variables declared as an array of basic types, the value written is\r
+            the difference, in basic machine units, between the offsets of consecutive\r
+            elements in an array.  For active variables not declared as an array of\r
+            basic types, zero is written to <parameter>params</parameter>.  For active variables not backed\r
+            by a buffer object, -1 is written to <parameter>params</parameter>, regardless of the variable\r
+            type.\r
+\r
+            For the property <constant>GL_MATRIX_STRIDE</constant>, a single integer identifying the stride\r
+            between columns of a column-major matrix or rows of a row-major matrix is\r
+            written to <parameter>params</parameter>.  For active variables declared a single matrix or\r
+            array of matrices, the value written is the difference, in basic machine\r
+            units, between the offsets of consecutive columns or rows in each matrix.\r
+            For active variables not declared as a matrix or array of matrices, zero\r
+            is written to <parameter>params</parameter>.  For active variables not backed by a buffer\r
+            object, -1 is written to <parameter>params</parameter>, regardless of the variable type.\r
+\r
+            For the property <constant>GL_IS_ROW_MAJOR</constant>, a single integer identifying whether an\r
+            active variable is a row-major matrix is written to <parameter>params</parameter>.  For active\r
+            variables backed by a buffer object, declared as a single matrix or array\r
+            of matrices, and stored in row-major order, one is written to <parameter>params</parameter>.\r
+            For all other active variables, zero is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_ATOMIC_COUNTER_BUFFER_INDEX</constant>, a single integer identifying\r
+            the index of the active atomic counter buffer containing an active\r
+            variable is written to <parameter>params</parameter>.  If the variable is not an atomic counter\r
+            uniform, the value -1 is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_BUFFER_BINDING</constant>, to index of the buffer binding point\r
+            associated with the active uniform block, shader storage block, or atomic\r
+            counter buffer is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_BUFFER_DATA_SIZE</constant>, then the implementation-dependent\r
+            minimum total buffer object size, in basic machine units, required to hold\r
+            all active variables associated with an active uniform block, shader\r
+            storage block, or atomic counter buffer is written to <parameter>params</parameter>.  If the\r
+            final member of an active shader storage block is array with no declared\r
+            size, the minimum buffer size is computed assuming the array was declared\r
+            as an array with one element.\r
+\r
+            For the property <constant>GL_NUM_ACTIVE_VARIABLES</constant>, the number of active variables\r
+            associated with an active uniform block, shader storage block, or atomic\r
+            counter buffer is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_of ACTIVE_VARIABLES</constant>, an array of active variable indices\r
+            associated with an active uniform block, shader storage block, or atomic\r
+            counter buffer is written to <parameter>params</parameter>.  The number of values written to\r
+            <parameter>params</parameter> for an active resource is given by the value of the property\r
+            <constant>GL_NUM_ACTIVE_VARIABLES</constant> for the resource.\r
+\r
+            For the properties <constant>GL_REFERENCED_BY_VERTEX_SHADER</constant>,\r
+            <constant>GL_REFERENCED_BY_TESS_CONTROL_SHADER</constant>, <constant>GL_REFERENCED_BY_TESS_EVALUATION_SHADER</constant>,\r
+            <constant>GL_REFERENCED_BY_GEOMETRY_SHADER</constant>, <constant>GL_REFERENCED_BY_FRAGMENT_SHADER</constant>, and\r
+            <constant>GL_REFERENCED_BY_COMPUTE_SHADER</constant>, a single integer is written to <parameter>params</parameter>,\r
+            identifying whether the active resource is referenced by the vertex,\r
+            tessellation control, tessellation evaluation, geometry, or fragment\r
+            shaders, respectively, in the program object.  The value one is written to\r
+            <parameter>params</parameter> if an active variable is referenced by the corresponding shader,\r
+            or if an active uniform block, shader storage block, or atomic counter\r
+            buffer contains at least one variable referenced by the corresponding\r
+            shader.  Otherwise, the value zero is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_TOP_LEVEL_ARRAY_SIZE</constant>, a single integer identifying the\r
+            number of active array elements of the top-level shader storage block\r
+            member containing to the active variable is written to <parameter>params</parameter>.  If the\r
+            top-level block member is not declared as an array, the value one is\r
+            written to <parameter>params</parameter>.  If the top-level block member is an array with no\r
+            declared size, the value zero is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_TOP_LEVEL_ARRAY_STRIDE</constant>, a single integer identifying the\r
+            stride between array elements of the top-level shader storage block member\r
+            containing the active variable is written to <parameter>params</parameter>.  For top-level\r
+            block members declared as arrays, the value written is the difference, in\r
+            basic machine units, between the offsets of the active variable for\r
+            consecutive elements in the top-level array.  For top-level block members\r
+            not declared as an array, zero is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_LOCATION</constant>, a single integer identifying the assigned\r
+            location for an active uniform, input, output, or subroutine uniform\r
+            variable is written to <parameter>params</parameter>.  For input, output, or uniform variables\r
+            with locations specified by a layout qualifier, the specified location is\r
+            used.  For vertex shader input or fragment shader output variables without\r
+            a layout qualifier, the location assigned when a program is linked is\r
+            written to <parameter>params</parameter>.  For all other input and output variables, the value\r
+            -1 is written to <parameter>params</parameter>.  For uniforms in uniform blocks, the value -1\r
+            is written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_LOCATION_INDEX</constant>, a single integer identifying the fragment\r
+            color index of an active fragment shader output variable is written to\r
+            <parameter>params</parameter>.  If the active variable is an output for a non-fragment shader,\r
+            the value -1 will be written to <parameter>params</parameter>.\r
+\r
+            For the property <constant>GL_IS_PER_PATCH</constant>, a single integer identifying whether the\r
+            input or output is a per-patch attribute.  If the active variable is a\r
+            per-patch attribute (declared with the <code>patch</code> qualifier), the value one\r
+            is written to <parameter>params</parameter>; otherwise, the value zero is written to <parameter>params</parameter>.\r
+        </para>\r
+    </refsect1>\r
+    <refsect1 id="errors"><title>Errors</title>\r
+        <para>\r
+            <constant>GL_INVALID_VALUE</constant> is generated if <parameter>program</parameter> is\r
+            not the name of an existing program object.\r
+        </para>\r
+        <para>\r
+            <constant>GL_INVALID_VALUE</constant> is generated if <parameter>propCount</parameter> is\r
+            zero.\r
+        </para>\r
+        <para>\r
+            <constant>GL_INVALID_ENUM</constant> is generated if <parameter>programInterface</parameter>\r
+            is not one of the accepted interface types.\r
+        </para>\r
+        <para>\r
+            <constant>GL_INVLALID_ENUM</constant> is generated if any value in <parameter>props</parameter>\r
+            is not one of the accepted tokens for the interface <parameter>programInterface</parameter>\r
+        </para>\r
+    </refsect1>\r
+    <refsect1 id="seealso"><title>See Also</title>\r
+        <para>\r
+            <citerefentry><refentrytitle>glGetProgramResourceName</refentrytitle></citerefentry>,\r
+            <citerefentry><refentrytitle>glGetGetProgramResourceIndex</refentrytitle></citerefentry>,\r
+            <citerefentry><refentrytitle>glGetProgramResourceLocation</refentrytitle></citerefentry>,\r
+            <citerefentry><refentrytitle>glGetProgramResourceLocationIndex</refentrytitle></citerefentry>.\r
+        </para>\r
+    </refsect1>\r
+    <refsect1 id="Copyright"><title>Copyright</title>\r
+        <para>\r
+            Copyright <trademark class="copyright"></trademark> 2012 Khronos Group. \r
+            This material may be distributed subject to the terms and conditions set forth in \r
+            the Open Publication License, v 1.0, 8 June 1999.\r
+            <ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.\r
+        </para>\r
+    </refsect1>\r
+</refentry>\r