1 /*
2  * Copyright (c) 2002-2008 LWJGL Project
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'LWJGL' nor the names of
17  *   its contributors may be used to endorse or promote products derived
18  *   from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 package org.lwjgl.opengl;
33 
34 import org.lwjgl.util.generator.*;
35 import org.lwjgl.util.generator.Alternate;
36 import org.lwjgl.util.generator.opengl.*;
37 
38 import java.nio.ByteBuffer;
39 import java.nio.DoubleBuffer;
40 import java.nio.FloatBuffer;
41 import java.nio.IntBuffer;
42 
43 import javax.lang.model.type.TypeKind;
44 
45 public interface GL40 {
46 
47 	// ----------------------------------------------------------------------
48 	// ----------------------[ ARB_draw_buffers_blend ]----------------------
49 	// ----------------------------------------------------------------------
50 
glBlendEquationi(@Luint int buf, @GLenum int mode)51 	void glBlendEquationi(@GLuint int buf, @GLenum int mode);
52 
glBlendEquationSeparatei(@Luint int buf, @GLenum int modeRGB, @GLenum int modeAlpha)53 	void glBlendEquationSeparatei(@GLuint int buf, @GLenum int modeRGB, @GLenum int modeAlpha);
54 
glBlendFunci(@Luint int buf, @GLenum int src, @GLenum int dst)55 	void glBlendFunci(@GLuint int buf, @GLenum int src, @GLenum int dst);
56 
glBlendFuncSeparatei(@Luint int buf, @GLenum int srcRGB, @GLenum int dstRGB, @GLenum int srcAlpha, @GLenum int dstAlpha)57 	void glBlendFuncSeparatei(@GLuint int buf, @GLenum int srcRGB, @GLenum int dstRGB, @GLenum int srcAlpha, @GLenum int dstAlpha);
58 
59 	// -----------------------------------------------------------------
60 	// ----------------------[ ARB_draw_indirect ]----------------------
61 	// -----------------------------------------------------------------
62 
63 	/**
64 	 * Accepted by the <target> parameters of BindBuffer, BufferData,
65 	 * BufferSubData, MapBuffer, UnmapBuffer, GetBufferSubData,
66 	 * GetBufferPointerv, MapBufferRange, FlushMappedBufferRange,
67 	 * GetBufferParameteriv, BindBufferRange, BindBufferBase, and
68 	 * CopyBufferSubData:
69 	 */
70 	int GL_DRAW_INDIRECT_BUFFER = 0x8F3F;
71 
72 	/**
73 	 * Accepted by the <value> parameter of GetIntegerv, GetBooleanv, GetFloatv,
74 	 * and GetDoublev:
75 	 */
76 	int GL_DRAW_INDIRECT_BUFFER_BINDING = 0x8F43;
77 
glDrawArraysIndirect(@Lenum int mode, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid ByteBuffer indirect)78 	void glDrawArraysIndirect(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("4 * 4") @Const @GLvoid ByteBuffer indirect);
79 
80 	@Alternate("glDrawArraysIndirect")
glDrawArraysIndirect(@Lenum int mode, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid(TypeKind.INT) IntBuffer indirect)81 	void glDrawArraysIndirect(@GLenum int mode, @BufferObject(BufferKind.IndirectBO) @Check("4") @Const @GLvoid(TypeKind.INT) IntBuffer indirect);
82 
glDrawElementsIndirect(@Lenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid ByteBuffer indirect)83 	void glDrawElementsIndirect(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("5 * 4") @Const @GLvoid ByteBuffer indirect);
84 
85 	@Alternate("glDrawElementsIndirect")
glDrawElementsIndirect(@Lenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid(TypeKind.INT) IntBuffer indirect)86 	void glDrawElementsIndirect(@GLenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check("5") @Const @GLvoid(TypeKind.INT) IntBuffer indirect);
87 
88 	// ---------------------------------------------------------------
89 	// ----------------------[ ARB_gpu_shader5 ]----------------------
90 	// ---------------------------------------------------------------
91 
92 	/** Accepted by the <pname> parameter of GetProgramiv: */
93 	int GL_GEOMETRY_SHADER_INVOCATIONS = 0x887F;
94 
95 	/**
96 	 * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
97 	 * GetDoublev, and GetInteger64v:
98 	 */
99 	int GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A;
100 	int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B;
101 	int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C;
102 	int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D;
103 	int GL_MAX_VERTEX_STREAMS = 0x8E71;
104 
105 	// -------------------------------------------------------------------
106 	// ----------------------[ ARB_gpu_shader_fp64 ]----------------------
107 	// -------------------------------------------------------------------
108 
109 	/**
110 	 * Returned in the <type> parameter of GetActiveUniform, and
111 	 * GetTransformFeedbackVarying:
112 	 */
113 	int GL_DOUBLE_VEC2 = 0x8FFC;
114 	int GL_DOUBLE_VEC3 = 0x8FFD;
115 	int GL_DOUBLE_VEC4 = 0x8FFE;
116 	int GL_DOUBLE_MAT2 = 0x8F46;
117 	int GL_DOUBLE_MAT3 = 0x8F47;
118 	int GL_DOUBLE_MAT4 = 0x8F48;
119 	int GL_DOUBLE_MAT2x3 = 0x8F49;
120 	int GL_DOUBLE_MAT2x4 = 0x8F4A;
121 	int GL_DOUBLE_MAT3x2 = 0x8F4B;
122 	int GL_DOUBLE_MAT3x4 = 0x8F4C;
123 	int GL_DOUBLE_MAT4x2 = 0x8F4D;
124 	int GL_DOUBLE_MAT4x3 = 0x8F4E;
125 
glUniform1d(int location, double x)126 	void glUniform1d(int location, double x);
127 
glUniform2d(int location, double x, double y)128 	void glUniform2d(int location, double x, double y);
129 
glUniform3d(int location, double x, double y, double z)130 	void glUniform3d(int location, double x, double y, double z);
131 
glUniform4d(int location, double x, double y, double z, double w)132 	void glUniform4d(int location, double x, double y, double z, double w);
133 
134 	@StripPostfix("value")
glUniform1dv(int location, @AutoSize(R) @GLsizei int count, @Const DoubleBuffer value)135 	void glUniform1dv(int location, @AutoSize("value") @GLsizei int count, @Const DoubleBuffer value);
136 
137 	@StripPostfix("value")
glUniform2dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const DoubleBuffer value)138 	void glUniform2dv(int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const DoubleBuffer value);
139 
140 	@StripPostfix("value")
glUniform3dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const DoubleBuffer value)141 	void glUniform3dv(int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const DoubleBuffer value);
142 
143 	@StripPostfix("value")
glUniform4dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const DoubleBuffer value)144 	void glUniform4dv(int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const DoubleBuffer value);
145 
146 	@StripPostfix("value")
glUniformMatrix2dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)147 	void glUniformMatrix2dv(int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
148 
149 	@StripPostfix("value")
glUniformMatrix3dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)150 	void glUniformMatrix3dv(int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
151 
152 	@StripPostfix("value")
glUniformMatrix4dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)153 	void glUniformMatrix4dv(int location, @AutoSize(value = "value", expression = " >> 4") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
154 
155 	@StripPostfix("value")
glUniformMatrix2x3dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)156 	void glUniformMatrix2x3dv(int location, @AutoSize(value = "value", expression = " / (2 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
157 
158 	@StripPostfix("value")
glUniformMatrix2x4dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)159 	void glUniformMatrix2x4dv(int location, @AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
160 
161 	@StripPostfix("value")
glUniformMatrix3x2dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)162 	void glUniformMatrix3x2dv(int location, @AutoSize(value = "value", expression = " / (3 * 2)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
163 
164 	@StripPostfix("value")
glUniformMatrix3x4dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)165 	void glUniformMatrix3x4dv(int location, @AutoSize(value = "value", expression = " / (3 * 4)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
166 
167 	@StripPostfix("value")
glUniformMatrix4x2dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)168 	void glUniformMatrix4x2dv(int location, @AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
169 
170 	@StripPostfix("value")
glUniformMatrix4x3dv(int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const DoubleBuffer value)171 	void glUniformMatrix4x3dv(int location, @AutoSize(value = "value", expression = " / (4 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
172 
173 	@StripPostfix("params")
glGetUniformdv(@Luint int program, int location, @OutParameter @Check DoubleBuffer params)174 	void glGetUniformdv(@GLuint int program, int location, @OutParameter @Check DoubleBuffer params);
175 
176 	// ------------------------------------------------------------------
177 	// ----------------------[ ARB_sample_shading ]----------------------
178 	// ------------------------------------------------------------------
179 
180 	/**
181 	 * Accepted by the <cap> parameter of Enable, Disable, and IsEnabled,
182 	 * and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
183 	 * and GetDoublev:
184 	 */
185 	int GL_SAMPLE_SHADING = 0x8C36;
186 
187 	/**
188 	 * Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
189 	 * GetIntegerv, and GetFloatv:
190 	 */
191 	int GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37;
192 
glMinSampleShading(float value)193 	void glMinSampleShading(float value);
194 
195 	// ---------------------------------------------------------------------
196 	// ----------------------[ ARB_shader_subroutine ]----------------------
197 	// ---------------------------------------------------------------------
198 
199 	/** Accepted by the <pname> parameter of GetProgramStageiv: */
200 	int GL_ACTIVE_SUBROUTINES = 0x8DE5;
201 	int GL_ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6;
202 	int GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47;
203 	int GL_ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48;
204 	int GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49;
205 
206 	/**
207 	 * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
208 	 * GetFloatv, GetDoublev, and GetInteger64v:
209 	 */
210 	int GL_MAX_SUBROUTINES = 0x8DE7;
211 	int GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8;
212 
213 	/** Accepted by the <pname> parameter of GetActiveSubroutineUniformiv: */
214 	int GL_NUM_COMPATIBLE_SUBROUTINES = 0x8E4A;
215 	int GL_COMPATIBLE_SUBROUTINES = 0x8E4B;
216 
glGetSubroutineUniformLocation(@Luint int program, @GLenum int shadertype, @Const @NullTerminated ByteBuffer name)217 	int glGetSubroutineUniformLocation(@GLuint int program, @GLenum int shadertype, @Const @NullTerminated ByteBuffer name);
218 
219 	@Alternate("glGetSubroutineUniformLocation")
glGetSubroutineUniformLocation(@Luint int program, @GLenum int shadertype, @NullTerminated CharSequence name)220 	int glGetSubroutineUniformLocation(@GLuint int program, @GLenum int shadertype, @NullTerminated CharSequence name);
221 
222 	@GLuint
glGetSubroutineIndex(@Luint int program, @GLenum int shadertype, @Const @NullTerminated ByteBuffer name)223 	int glGetSubroutineIndex(@GLuint int program, @GLenum int shadertype, @Const @NullTerminated ByteBuffer name);
224 
225 	@Alternate("glGetSubroutineIndex")
226 	@GLuint
glGetSubroutineIndex(@Luint int program, @GLenum int shadertype, @NullTerminated CharSequence name)227 	int glGetSubroutineIndex(@GLuint int program, @GLenum int shadertype, @NullTerminated CharSequence name);
228 
229 	@StripPostfix("values")
glGetActiveSubroutineUniformiv(@Luint int program, @GLenum int shadertype, @GLuint int index, @GLenum int pname, @OutParameter @Check(R) IntBuffer values)230 	void glGetActiveSubroutineUniformiv(@GLuint int program, @GLenum int shadertype, @GLuint int index, @GLenum int pname,
231 	                                    @OutParameter @Check("1") IntBuffer values);
232 
233 	/** @deprecated Will be removed in 3.0. Use {@link #glGetActiveSubroutineUniformi} instead. */
234 	@Alternate("glGetActiveSubroutineUniformiv")
235 	@GLreturn("values")
236 	@StripPostfix("values")
237 	@Reuse(value = "GL40", method = "glGetActiveSubroutineUniformi")
238 	@Deprecated
glGetActiveSubroutineUniformiv2(@Luint int program, @GLenum int shadertype, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer values)239 	void glGetActiveSubroutineUniformiv2(@GLuint int program, @GLenum int shadertype, @GLuint int index, @GLenum int pname,
240 	                                     @OutParameter IntBuffer values);
241 
242 	@Alternate("glGetActiveSubroutineUniformiv")
243 	@GLreturn("values")
244 	@StripPostfix(value = "values", hasPostfix = false)
glGetActiveSubroutineUniformiv3(@Luint int program, @GLenum int shadertype, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer values)245 	void glGetActiveSubroutineUniformiv3(@GLuint int program, @GLenum int shadertype, @GLuint int index, @GLenum int pname,
246 	                                     @OutParameter IntBuffer values);
247 
glGetActiveSubroutineUniformName(@Luint int program, @GLenum int shadertype, @GLuint int index, @AutoSize(R) @GLsizei int bufsize, @OutParameter @Check(value = R, canBeNull = true) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer name)248 	void glGetActiveSubroutineUniformName(@GLuint int program, @GLenum int shadertype, @GLuint int index, @AutoSize("name") @GLsizei int bufsize,
249 	                                      @OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
250 	                                      @OutParameter @GLchar ByteBuffer name);
251 
252 	@Alternate("glGetActiveSubroutineUniformName")
253 	@GLreturn(value = "name", maxLength = "bufsize")
glGetActiveSubroutineUniformName2(@Luint int program, @GLenum int shadertype, @GLuint int index, @GLsizei int bufsize, @OutParameter @Constant(R) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer name)254 	void glGetActiveSubroutineUniformName2(@GLuint int program, @GLenum int shadertype, @GLuint int index, @GLsizei int bufsize,
255 	                                       @OutParameter @Constant("MemoryUtil.getAddress0(name_length)") @GLsizei IntBuffer length,
256 	                                       @OutParameter @GLchar ByteBuffer name);
257 
glGetActiveSubroutineName(@Luint int program, @GLenum int shadertype, @GLuint int index, @AutoSize(R) @GLsizei int bufsize, @OutParameter @Check(value = R, canBeNull = true) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer name)258 	void glGetActiveSubroutineName(@GLuint int program, @GLenum int shadertype, @GLuint int index, @AutoSize("name") @GLsizei int bufsize,
259 	                               @OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
260 	                               @OutParameter @GLchar ByteBuffer name);
261 
262 	@Alternate("glGetActiveSubroutineName")
263 	@GLreturn(value = "name", maxLength = "bufsize")
glGetActiveSubroutineName2(@Luint int program, @GLenum int shadertype, @GLuint int index, @GLsizei int bufsize, @OutParameter @Constant(R) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer name)264 	void glGetActiveSubroutineName2(@GLuint int program, @GLenum int shadertype, @GLuint int index, @GLsizei int bufsize,
265 	                                @OutParameter @Constant("MemoryUtil.getAddress0(name_length)") @GLsizei IntBuffer length,
266 	                                @OutParameter @GLchar ByteBuffer name);
267 
268 	@StripPostfix("indices")
glUniformSubroutinesuiv(@Lenum int shadertype, @AutoSize(R) @GLsizei int count, @Const @GLuint IntBuffer indices)269 	void glUniformSubroutinesuiv(@GLenum int shadertype, @AutoSize("indices") @GLsizei int count, @Const @GLuint IntBuffer indices);
270 
271 	@StripPostfix("params")
glGetUniformSubroutineuiv(@Lenum int shadertype, int location, @Check(R) @OutParameter @GLuint IntBuffer params)272 	void glGetUniformSubroutineuiv(@GLenum int shadertype, int location, @Check("1") @OutParameter @GLuint IntBuffer params);
273 
274 	/** @deprecated Will be removed in 3.0. Use {@link #glGetUniformSubroutineui} instead. */
275 	@Alternate("glGetUniformSubroutineuiv")
276 	@GLreturn("params")
277 	@StripPostfix("params")
278 	@Reuse(value = "GL40", method = "glGetUniformSubroutineui")
279 	@Deprecated
glGetUniformSubroutineuiv2(@Lenum int shadertype, int location, @OutParameter @GLuint IntBuffer params)280 	void glGetUniformSubroutineuiv2(@GLenum int shadertype, int location, @OutParameter @GLuint IntBuffer params);
281 
282 	@Alternate("glGetUniformSubroutineuiv")
283 	@GLreturn("params")
284 	@StripPostfix(value = "params", hasPostfix = false)
glGetUniformSubroutineuiv3(@Lenum int shadertype, int location, @OutParameter @GLuint IntBuffer params)285 	void glGetUniformSubroutineuiv3(@GLenum int shadertype, int location, @OutParameter @GLuint IntBuffer params);
286 
287 	@StripPostfix("values")
glGetProgramStageiv(@Luint int program, @GLenum int shadertype, @GLenum int pname, @Check(R) @OutParameter IntBuffer values)288 	void glGetProgramStageiv(@GLuint int program, @GLenum int shadertype, @GLenum int pname, @Check("1") @OutParameter IntBuffer values);
289 
290 	/** @deprecated Will be removed in 3.0. Use {@link #glGetProgramStagei} instead. */
291 	@Alternate("glGetProgramStageiv")
292 	@GLreturn("values")
293 	@StripPostfix("values")
294 	@Reuse(value = "GL40", method = "glGetProgramStagei")
295 	@Deprecated
glGetProgramStageiv2(@Luint int program, @GLenum int shadertype, @GLenum int pname, @OutParameter IntBuffer values)296 	void glGetProgramStageiv2(@GLuint int program, @GLenum int shadertype, @GLenum int pname, @OutParameter IntBuffer values);
297 
298 	@Alternate("glGetProgramStageiv")
299 	@GLreturn("values")
300 	@StripPostfix(value = "values", hasPostfix = false)
glGetProgramStageiv3(@Luint int program, @GLenum int shadertype, @GLenum int pname, @OutParameter IntBuffer values)301 	void glGetProgramStageiv3(@GLuint int program, @GLenum int shadertype, @GLenum int pname, @OutParameter IntBuffer values);
302 
303 	// -----------------------------------------------------------------------
304 	// ----------------------[ ARB_tessellation_shader ]----------------------
305 	// -----------------------------------------------------------------------
306 
307 	/**
308 	 * Accepted by the <mode> parameter of Begin and all vertex array functions
309 	 * that implicitly call Begin:
310 	 */
311 	int GL_PATCHES = 0xE;
312 
313 	/**
314 	 * Accepted by the <pname> parameter of PatchParameteri, GetBooleanv,
315 	 * GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v:
316 	 */
317 	int GL_PATCH_VERTICES = 0x8E72;
318 
319 	/**
320 	 * Accepted by the <pname> parameter of PatchParameterfv, GetBooleanv,
321 	 * GetDoublev, GetFloatv, and GetIntegerv, and GetInteger64v:
322 	 */
323 	int GL_PATCH_DEFAULT_INNER_LEVEL = 0x8E73;
324 	int GL_PATCH_DEFAULT_OUTER_LEVEL = 0x8E74;
325 
326 	/** Accepted by the <pname> parameter of GetProgramiv: */
327 	int GL_TESS_CONTROL_OUTPUT_VERTICES = 0x8E75;
328 	int GL_TESS_GEN_MODE = 0x8E76;
329 	int GL_TESS_GEN_SPACING = 0x8E77;
330 	int GL_TESS_GEN_VERTEX_ORDER = 0x8E78;
331 	int GL_TESS_GEN_POINT_MODE = 0x8E79;
332 
333 	/** Returned by GetProgramiv when <pname> is TESS_GEN_MODE: */
334 	int GL_ISOLINES = 0x8E7A;
335 
336 	/** Returned by GetProgramiv when <pname> is TESS_GEN_SPACING: */
337 	int GL_FRACTIONAL_ODD = 0x8E7B;
338 	int GL_FRACTIONAL_EVEN = 0x8E7C;
339 
340 	/**
341 	 * Accepted by the <pname> parameter of GetBooleanv, GetDoublev, GetFloatv,
342 	 * GetIntegerv, and GetInteger64v:
343 	 */
344 	int GL_MAX_PATCH_VERTICES = 0x8E7D;
345 	int GL_MAX_TESS_GEN_LEVEL = 0x8E7E;
346 	int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F;
347 	int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80;
348 	int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81;
349 	int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82;
350 	int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83;
351 	int GL_MAX_TESS_PATCH_COMPONENTS = 0x8E84;
352 	int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85;
353 	int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86;
354 	int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89;
355 	int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A;
356 	int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C;
357 	int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D;
358 	int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E;
359 	int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F;
360 
361 	/** Accepted by the <pname> parameter of GetActiveUniformBlockiv: */
362 	int GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0;
363 	int GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1;
364 
365 	/**
366 	 * Accepted by the <type> parameter of CreateShader and returned by the
367 	 * <params> parameter of GetShaderiv:
368 	 */
369 	int GL_TESS_EVALUATION_SHADER = 0x8E87;
370 	int GL_TESS_CONTROL_SHADER = 0x8E88;
371 
glPatchParameteri(@Lenum int pname, int value)372 	void glPatchParameteri(@GLenum int pname, int value);
373 
374 	@StripPostfix("values")
glPatchParameterfv(@Lenum int pname, @Check(R) @Const FloatBuffer values)375 	void glPatchParameterfv(@GLenum int pname, @Check("4") @Const FloatBuffer values);
376 
377 	// --------------------------------------------------------------------------
378 	// ----------------------[ ARB_texture_cube_map_array ]----------------------
379 	// --------------------------------------------------------------------------
380 
381 	/**
382 	 * Accepted by the <target> parameter of TexParameteri, TexParameteriv,
383 	 * TexParameterf, TexParameterfv, BindTexture, and GenerateMipmap:
384 	 * <p/>
385 	 * Accepted by the &lt;target&gt; parameter of TexImage3D, TexSubImage3D,
386 	 * CompressedTeximage3D, CompressedTexSubImage3D and CopyTexSubImage3D:
387 	 * <p/>
388 	 * Accepted by the &lt;tex&gt; parameter of GetTexImage:
389 	 */
390 	int GL_TEXTURE_CUBE_MAP_ARRAY = 0x9009;
391 
392 	/**
393 	 * Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetDoublev,
394 	 * GetIntegerv and GetFloatv:
395 	 */
396 	int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A;
397 
398 	/**
399 	 * Accepted by the &lt;target&gt; parameter of TexImage3D, TexSubImage3D,
400 	 * CompressedTeximage3D, CompressedTexSubImage3D and CopyTexSubImage3D:
401 	 */
402 	int GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B;
403 
404 	/** Returned by the &lt;type&gt; parameter of GetActiveUniform: */
405 	int GL_SAMPLER_CUBE_MAP_ARRAY = 0x900C;
406 	int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D;
407 	int GL_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E;
408 	int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F;
409 
410 	// ------------------------------------------------------------------
411 	// ----------------------[ ARB_texture_gather ]----------------------
412 	// ------------------------------------------------------------------
413 
414 	/**
415 	 * Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv,
416 	 * GetFloatv, and GetDoublev:
417 	 */
418 	int GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E;
419 	int GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F;
420 	int GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = 0x8F9F;
421 
422 	// -----------------------------------------------------------------------
423 	// ----------------------[ ARB_transform_feedback2 ]----------------------
424 	// -----------------------------------------------------------------------
425 
426 	/** Accepted by the &lt;target&gt; parameter of BindTransformFeedback: */
427 	int GL_TRANSFORM_FEEDBACK = 0x8E22;
428 
429 	/**
430 	 * Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetDoublev, GetIntegerv,
431 	 * and GetFloatv:
432 	 */
433 	int GL_TRANSFORM_FEEDBACK_PAUSED = 0x8E23;
434 	int GL_TRANSFORM_FEEDBACK_ACTIVE = 0x8E24;
435 	int GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = GL_TRANSFORM_FEEDBACK_PAUSED;
436 	int GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = GL_TRANSFORM_FEEDBACK_ACTIVE;
437 	int GL_TRANSFORM_FEEDBACK_BINDING = 0x8E25;
438 
glBindTransformFeedback(@Lenum int target, @GLuint int id)439 	void glBindTransformFeedback(@GLenum int target, @GLuint int id);
440 
glDeleteTransformFeedbacks(@utoSizeR) @Lsizei int n, @Const @GLuint IntBuffer ids)441 	void glDeleteTransformFeedbacks(@AutoSize("ids") @GLsizei int n, @Const @GLuint IntBuffer ids);
442 
443 	@Alternate("glDeleteTransformFeedbacks")
glDeleteTransformFeedbacks(@onstantR) @Lsizei int n, @Constant(value = R, keepParam = true) int id)444 	void glDeleteTransformFeedbacks(@Constant("1") @GLsizei int n, @Constant(value = "APIUtil.getInt(caps, id)", keepParam = true) int id);
445 
glGenTransformFeedbacks(@utoSizeR) @Lsizei int n, @OutParameter @GLuint IntBuffer ids)446 	void glGenTransformFeedbacks(@AutoSize("ids") @GLsizei int n, @OutParameter @GLuint IntBuffer ids);
447 
448 	@Alternate("glGenTransformFeedbacks")
449 	@GLreturn("ids")
glGenTransformFeedbacks2(@onstantR) @Lsizei int n, @OutParameter @GLuint IntBuffer ids)450 	void glGenTransformFeedbacks2(@Constant("1") @GLsizei int n, @OutParameter @GLuint IntBuffer ids);
451 
glIsTransformFeedback(@Luint int id)452 	boolean glIsTransformFeedback(@GLuint int id);
453 
glPauseTransformFeedback()454 	void glPauseTransformFeedback();
455 
glResumeTransformFeedback()456 	void glResumeTransformFeedback();
457 
glDrawTransformFeedback(@Lenum int mode, @GLuint int id)458 	void glDrawTransformFeedback(@GLenum int mode, @GLuint int id);
459 
460 	// -----------------------------------------------------------------------
461 	// ----------------------[ ARB_transform_feedback3 ]----------------------
462 	// -----------------------------------------------------------------------
463 
464 	/**
465 	 * Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetDoublev, GetIntegerv,
466 	 * and GetFloatv:
467 	 */
468 	int GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70;
469 
glDrawTransformFeedbackStream(@Lenum int mode, @GLuint int id, @GLuint int stream)470 	void glDrawTransformFeedbackStream(@GLenum int mode, @GLuint int id, @GLuint int stream);
471 
glBeginQueryIndexed(@Lenum int target, @GLuint int index, @GLuint int id)472 	void glBeginQueryIndexed(@GLenum int target, @GLuint int index, @GLuint int id);
473 
glEndQueryIndexed(@Lenum int target, @GLuint int index)474 	void glEndQueryIndexed(@GLenum int target, @GLuint int index);
475 
476 	@StripPostfix("params")
glGetQueryIndexediv(@Lenum int target, @GLuint int index, @GLenum int pname, @OutParameter @Check(R) IntBuffer params)477 	void glGetQueryIndexediv(@GLenum int target, @GLuint int index, @GLenum int pname, @OutParameter @Check("1") IntBuffer params);
478 
479 	/** @deprecated Will be removed in 3.0. Use {@link #glGetQueryIndexedi} instead. */
480 	@Alternate("glGetQueryIndexediv")
481 	@GLreturn("params")
482 	@StripPostfix("params")
483 	@Reuse(value = "GL40", method = "glGetQueryIndexedi")
484 	@Deprecated
glGetQueryIndexediv2(@Lenum int target, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer params)485 	void glGetQueryIndexediv2(@GLenum int target, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer params);
486 
487 	@Alternate("glGetQueryIndexediv")
488 	@GLreturn("params")
489 	@StripPostfix(value = "params", hasPostfix = false)
glGetQueryIndexediv3(@Lenum int target, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer params)490 	void glGetQueryIndexediv3(@GLenum int target, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer params);
491 
492 }