rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man4 / xhtml / glGetProgramResource.xml
CommitLineData
7faf1d71
AW
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
3<!-- saved from url=(0013)about:internet -->
4<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="opengl-man.css" /><title>glGetProgramResource - OpenGL 4 Reference Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.69.1" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="glGetProgramResource"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glGetProgramResource — retrieve values for multiple properties of a single active resource within a program object</p></div><div class="refsynopsisdiv"><h2>C Specification</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"><tr><td><code class="funcdef">void <b class="fsfunc">glGetProgramResourceiv</b>(</code></td><td>GLuint  </td><td><var class="pdparam">program</var>, </td></tr><tr><td> </td><td>GLenum  </td><td><var class="pdparam">programInterface</var>, </td></tr><tr><td> </td><td>GLuint  </td><td><var class="pdparam">index</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">propCount</var>, </td></tr><tr><td> </td><td>const Glenum *  </td><td><var class="pdparam">props</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">bufSize</var>, </td></tr><tr><td> </td><td>GLsizei *  </td><td><var class="pdparam">length</var>, </td></tr><tr><td> </td><td>GLint *  </td><td><var class="pdparam">params</var><code>)</code>;</td></tr></table></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>program</code></em></span></dt><dd><p>
5 The name of a program object whose resources to query.
6 </p></dd><dt><span class="term"><em class="parameter"><code>programInterface</code></em></span></dt><dd><p>
7 A token identifying the interface within <em class="parameter"><code>program</code></em> containing the resource named <em class="parameter"><code>name</code></em>.
8 </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
9 <code class="function">glGetProgramResourceiv</code> returns values for multiple properties of a single active resource with an
10 index of <em class="parameter"><code>index</code></em> in the interface <em class="parameter"><code>programInterface</code></em> of program object
11 <em class="parameter"><code>program</code></em>. For each resource, values for <em class="parameter"><code>propCount</code></em> properties specified
12 by the array <em class="parameter"><code>props</code></em> are returned. <em class="parameter"><code>propCount</code></em> may not be zero.
13 An error is generated if any value
14 in <em class="parameter"><code>props</code></em> is not one of the properties described immediately belowor if any value in <em class="parameter"><code>props</code></em> is not
15 allowed for <em class="parameter"><code>programInterface</code></em>. The set of allowed <em class="parameter"><code>programInterface</code></em>
16 values for each property can be found in the following table:
17 </p><div class="informaltable"><table border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th rowspan="2" align="center">Property</th><th rowspan="2" align="center">Supported Interfaces</th></tr></thead><tbody><tr><td align="left"><code class="constant">GL_NAME_LENGTH</code></td><td align="left">Any except <code class="constant">GL_ATOMIC_COUNTER_BUFFER</code></td></tr><tr><td align="left"><code class="constant">GL_TYPE</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code>, <code class="constant">GL_TRANSFORM_FEEDBACK_VARYING</code>, <code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_ARRAY_SIZE</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_BUFFER_VARIABLE</code>, <code class="constant">GL_PROGRAM_INPUT</code>,
18 <code class="constant">GL_PROGRAM_OUTPUT, VERTEX_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_TESS_CONTROL_SUBROUTINE_UNIFORM</code>,
19 <code class="constant">GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_GEOMETRY_SUBROUTINE_UNIFORM</code>,
20 <code class="constant">GL_FRAGMENT_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_COMPUTE_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_TRANSFORM_FEEDBACK_VARYING</code></td></tr><tr><td align="left"><code class="constant">GL_OFFSET</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_BLOCK_INDEX</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_ARRAY_STRIDE</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_MATRIX_STRIDE</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_IS_ROW_MAJOR</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_ATOMIC_COUNTER_BUFFER_INDEX</code></td><td align="left"><code class="constant">GL_UNIFORM</code></td></tr><tr><td align="left"><code class="constant">GL_TEXTURE_BUFFER</code></td><td align="left"><span class="ERROR">&lt;emph&gt;none&lt;/emph&gt;</span></td></tr><tr><td align="left"><code class="constant">GL_BUFFER_BINDING</code></td><td align="left"><code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code></td></tr><tr><td align="left"><code class="constant">GL_BUFFER_DATA_SIZE</code></td><td align="left"><code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code></td></tr><tr><td align="left"><code class="constant">GL_NUM_ACTIVE_VARIABLES</code></td><td align="left"><code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code></td></tr><tr><td align="left"><code class="constant">GL_ACTIVE_VARIABLES</code></td><td align="left"><code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code></td></tr><tr><td align="left"><code class="constant">GL_REFERENCED_BY_VERTEX_SHADER</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_SHADER</code>,
21 <code class="constant">GL_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code>, <code class="constant">GL_BUFFER_VARIABLE</code>,
22 <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_REFERENCED_BY_TESS_CONTROL_SHADER</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_SHADER</code>,
23 <code class="constant">GL_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code>, <code class="constant">GL_BUFFER_VARIABLE</code>,
24 <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_REFERENCED_BY_TESS_EVALUATION_SHADER</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_SHADER</code>,
25 <code class="constant">GL_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code>, <code class="constant">GL_BUFFER_VARIABLE</code>,
26 <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_REFERENCED_BY_GEOMETRY_SHADER</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_SHADER</code>,
27 <code class="constant">GL_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code>, <code class="constant">GL_BUFFER_VARIABLE</code>,
28 <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_REFERENCED_BY_FRAGMENT_SHADER</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_SHADER</code>,
29 <code class="constant">GL_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code>, <code class="constant">GL_BUFFER_VARIABLE</code>,
30 <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_REFERENCED_BY_COMPUTE_SHADER</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_UNIFORM_BLOCK</code>, <code class="constant">GL_ATOMIC_COUNTER_SHADER</code>,
31 <code class="constant">GL_BUFFER</code>, <code class="constant">GL_SHADER_STORAGE_BLOCK</code>, <code class="constant">GL_BUFFER_VARIABLE</code>,
32 <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_NUM_COMPATIBLE_SUBROUTINES</code></td><td align="left"><code class="constant">GL_VERTEX_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_TESS_CONTROL_SUBROUTINE_UNIFORM</code>,
33 <code class="constant">GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_GEOMETRY_SUBROUTINE_UNIFORM</code>,
34 <code class="constant">GL_FRAGMENT_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_COMPUTE_SUBROUTINE_UNIFORM</code></td></tr><tr><td align="left"><code class="constant">GL_COMPATIBLE_SUBROUTINES</code></td><td align="left"><code class="constant">GL_VERTEX_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_TESS_CONTROL_SUBROUTINE_UNIFORM</code>,
35 <code class="constant">GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_GEOMETRY_SUBROUTINE_UNIFORM</code>,
36 <code class="constant">GL_FRAGMENT_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_COMPUTE_SUBROUTINE_UNIFORM</code></td></tr><tr><td align="left"><code class="constant">GL_TOP_LEVEL_ARRAY_SIZE</code></td><td align="left"><code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_TOP_LEVEL_ARRAY_STRIDE</code></td><td align="left"><code class="constant">GL_BUFFER_VARIABLE</code></td></tr><tr><td align="left"><code class="constant">GL_LOCATION</code></td><td align="left"><code class="constant">GL_UNIFORM</code>, <code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code>,
37 <code class="constant">GL_VERTEX_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_TESS_CONTROL_SUBROUTINE_UNIFORM</code>,
38 <code class="constant">GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_GEOMETRY_SUBROUTINE_UNIFORM</code>,
39 <code class="constant">GL_FRAGMENT_SUBROUTINE_UNIFORM</code>, <code class="constant">GL_COMPUTE_SUBROUTINE_UNIFORM</code></td></tr><tr><td align="left"><code class="constant">GL_LOCATION_INDEX</code></td><td align="left"><code class="constant">GL_PROGRAM_OUTPUT</code></td></tr><tr><td align="left"><code class="constant">GL_IS_PER_PATCH</code></td><td align="left"><code class="constant">GL_PROGRAM_INPUT</code>, <code class="constant">GL_PROGRAM_OUTPUT</code></td></tr></tbody></table></div><p>
40 For the property <code class="constant">GL_NAME_LENGTH</code>, a single integer identifying the length of
41 the name string associated with an active variable, interface block, or
42 subroutine is written to <em class="parameter"><code>params</code></em>. The name length includes a terminating
43 null character.
44
45 For the property <code class="constant">GL_TYPE</code>, a single integer identifying the type of an active
46 variable is written to <em class="parameter"><code>params</code></em>. The integer returned is one of the
47 values found in table 2.16.
48
49 For the property <code class="constant">GL_ARRAY_SIZE</code>, a single integer identifying the number of
50 active array elements of an active variable is written to <em class="parameter"><code>params</code></em>. The
51 array size returned is in units of the type associated with the property
52 TYPE. For active variables not corresponding to an array of basic types,
53 the value zero is written to <em class="parameter"><code>params</code></em>.
54
55 For the property <code class="constant">GL_BLOCK_INDEX</code>, a single integer identifying the index of
56 the active interface block containing an active variable is written to
57 <em class="parameter"><code>params</code></em>. If the variable is not the member of an interface block, the
58 value -1 is written to <em class="parameter"><code>params</code></em>.
59
60 For the property <code class="constant">GL_OFFSET</code>, a single integer identifying the offset of an
61 active variable is written to <em class="parameter"><code>params</code></em>. For active variables backed by a
62 buffer object, the value written is the offset, in basic machine units,
63 relative to the base of buffer range holding the values of the variable.
64 For active variables not backed by a buffer object, an offset of -1 is
65 written to <em class="parameter"><code>params</code></em>.
66
67 For the property <code class="constant">GL_ARRAY_STRIDE</code>, a single integer identifying the stride
68 between array elements in an active variable is written to <em class="parameter"><code>params</code></em>. For
69 active variables declared as an array of basic types, the value written is
70 the difference, in basic machine units, between the offsets of consecutive
71 elements in an array. For active variables not declared as an array of
72 basic types, zero is written to <em class="parameter"><code>params</code></em>. For active variables not backed
73 by a buffer object, -1 is written to <em class="parameter"><code>params</code></em>, regardless of the variable
74 type.
75
76 For the property <code class="constant">GL_MATRIX_STRIDE</code>, a single integer identifying the stride
77 between columns of a column-major matrix or rows of a row-major matrix is
78 written to <em class="parameter"><code>params</code></em>. For active variables declared a single matrix or
79 array of matrices, the value written is the difference, in basic machine
80 units, between the offsets of consecutive columns or rows in each matrix.
81 For active variables not declared as a matrix or array of matrices, zero
82 is written to <em class="parameter"><code>params</code></em>. For active variables not backed by a buffer
83 object, -1 is written to <em class="parameter"><code>params</code></em>, regardless of the variable type.
84
85 For the property <code class="constant">GL_IS_ROW_MAJOR</code>, a single integer identifying whether an
86 active variable is a row-major matrix is written to <em class="parameter"><code>params</code></em>. For active
87 variables backed by a buffer object, declared as a single matrix or array
88 of matrices, and stored in row-major order, one is written to <em class="parameter"><code>params</code></em>.
89 For all other active variables, zero is written to <em class="parameter"><code>params</code></em>.
90
91 For the property <code class="constant">GL_ATOMIC_COUNTER_BUFFER_INDEX</code>, a single integer identifying
92 the index of the active atomic counter buffer containing an active
93 variable is written to <em class="parameter"><code>params</code></em>. If the variable is not an atomic counter
94 uniform, the value -1 is written to <em class="parameter"><code>params</code></em>.
95
96 For the property <code class="constant">GL_BUFFER_BINDING</code>, to index of the buffer binding point
97 associated with the active uniform block, shader storage block, or atomic
98 counter buffer is written to <em class="parameter"><code>params</code></em>.
99
100 For the property <code class="constant">GL_BUFFER_DATA_SIZE</code>, then the implementation-dependent
101 minimum total buffer object size, in basic machine units, required to hold
102 all active variables associated with an active uniform block, shader
103 storage block, or atomic counter buffer is written to <em class="parameter"><code>params</code></em>. If the
104 final member of an active shader storage block is array with no declared
105 size, the minimum buffer size is computed assuming the array was declared
106 as an array with one element.
107
108 For the property <code class="constant">GL_NUM_ACTIVE_VARIABLES</code>, the number of active variables
109 associated with an active uniform block, shader storage block, or atomic
110 counter buffer is written to <em class="parameter"><code>params</code></em>.
111
112 For the property <code class="constant">GL_of ACTIVE_VARIABLES</code>, an array of active variable indices
113 associated with an active uniform block, shader storage block, or atomic
114 counter buffer is written to <em class="parameter"><code>params</code></em>. The number of values written to
115 <em class="parameter"><code>params</code></em> for an active resource is given by the value of the property
116 <code class="constant">GL_NUM_ACTIVE_VARIABLES</code> for the resource.
117
118 For the properties <code class="constant">GL_REFERENCED_BY_VERTEX_SHADER</code>,
119 <code class="constant">GL_REFERENCED_BY_TESS_CONTROL_SHADER</code>, <code class="constant">GL_REFERENCED_BY_TESS_EVALUATION_SHADER</code>,
120 <code class="constant">GL_REFERENCED_BY_GEOMETRY_SHADER</code>, <code class="constant">GL_REFERENCED_BY_FRAGMENT_SHADER</code>, and
121 <code class="constant">GL_REFERENCED_BY_COMPUTE_SHADER</code>, a single integer is written to <em class="parameter"><code>params</code></em>,
122 identifying whether the active resource is referenced by the vertex,
123 tessellation control, tessellation evaluation, geometry, or fragment
124 shaders, respectively, in the program object. The value one is written to
125 <em class="parameter"><code>params</code></em> if an active variable is referenced by the corresponding shader,
126 or if an active uniform block, shader storage block, or atomic counter
127 buffer contains at least one variable referenced by the corresponding
128 shader. Otherwise, the value zero is written to <em class="parameter"><code>params</code></em>.
129
130 For the property <code class="constant">GL_TOP_LEVEL_ARRAY_SIZE</code>, a single integer identifying the
131 number of active array elements of the top-level shader storage block
132 member containing to the active variable is written to <em class="parameter"><code>params</code></em>. If the
133 top-level block member is not declared as an array, the value one is
134 written to <em class="parameter"><code>params</code></em>. If the top-level block member is an array with no
135 declared size, the value zero is written to <em class="parameter"><code>params</code></em>.
136
137 For the property <code class="constant">GL_TOP_LEVEL_ARRAY_STRIDE</code>, a single integer identifying the
138 stride between array elements of the top-level shader storage block member
139 containing the active variable is written to <em class="parameter"><code>params</code></em>. For top-level
140 block members declared as arrays, the value written is the difference, in
141 basic machine units, between the offsets of the active variable for
142 consecutive elements in the top-level array. For top-level block members
143 not declared as an array, zero is written to <em class="parameter"><code>params</code></em>.
144
145 For the property <code class="constant">GL_LOCATION</code>, a single integer identifying the assigned
146 location for an active uniform, input, output, or subroutine uniform
147 variable is written to <em class="parameter"><code>params</code></em>. For input, output, or uniform variables
148 with locations specified by a layout qualifier, the specified location is
149 used. For vertex shader input or fragment shader output variables without
150 a layout qualifier, the location assigned when a program is linked is
151 written to <em class="parameter"><code>params</code></em>. For all other input and output variables, the value
152 -1 is written to <em class="parameter"><code>params</code></em>. For uniforms in uniform blocks, the value -1
153 is written to <em class="parameter"><code>params</code></em>.
154
155 For the property <code class="constant">GL_LOCATION_INDEX</code>, a single integer identifying the fragment
156 color index of an active fragment shader output variable is written to
157 <em class="parameter"><code>params</code></em>. If the active variable is an output for a non-fragment shader,
158 the value -1 will be written to <em class="parameter"><code>params</code></em>.
159
160 For the property <code class="constant">GL_IS_PER_PATCH</code>, a single integer identifying whether the
161 input or output is a per-patch attribute. If the active variable is a
162 per-patch attribute (declared with the <code class="code">patch</code> qualifier), the value one
163 is written to <em class="parameter"><code>params</code></em>; otherwise, the value zero is written to <em class="parameter"><code>params</code></em>.
164 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
165 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>program</code></em> is
166 not the name of an existing program object.
167 </p><p>
168 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>propCount</code></em> is
169 zero.
170 </p><p>
171 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>programInterface</code></em>
172 is not one of the accepted interface types.
173 </p><p>
174 <code class="constant">GL_INVLALID_ENUM</code> is generated if any value in <em class="parameter"><code>props</code></em>
175 is not one of the accepted tokens for the interface <em class="parameter"><code>programInterface</code></em>
176 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
177 <a href="glGetProgramResourceName.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgramResourceName</span></span></a>,
178 <a href="glGetGetProgramResourceIndex.xml"><span class="citerefentry"><span class="refentrytitle">glGetGetProgramResourceIndex</span></span></a>,
179 <a href="glGetProgramResourceLocation.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgramResourceLocation</span></span></a>,
180 <a href="glGetProgramResourceLocationIndex.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgramResourceLocationIndex</span></span></a>.
181 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
182 Copyright <span class="trademark"></span>© 2012 Khronos Group.
183 This material may be distributed subject to the terms and conditions set forth in
184 the Open Publication License, v 1.0, 8 June 1999.
185 <a href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
186 </p></div></div></body></html>