1 /*
2  * Copyright (c) 2002-2012 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.opengl.*;
36 
37 import java.nio.ByteBuffer;
38 import java.nio.IntBuffer;
39 import java.nio.LongBuffer;
40 import javax.lang.model.type.TypeKind;
41 
42 
43 public interface GL43 {
44 
45 	/** No. of supported Shading Language Versions. Accepted by the <pname> parameter of GetIntegerv. */
46 	int GL_NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9;
47 
48 	/** Vertex attrib array has unconverted doubles. Accepted by the <pname> parameter of GetVertexAttribiv. */
49 	int GL_VERTEX_ATTRIB_ARRAY_LONG = 0x874E;
50 
51 	// ---------------------------------------------------------------------
52 	// ----------------------[ ARB_ES3_compatibility ]----------------------
53 	// ---------------------------------------------------------------------
54 
55 	/** Accepted by the <internalformat> parameter of CompressedTexImage2D */
56 	int GL_COMPRESSED_RGB8_ETC2                      = 0x9274,
57 		GL_COMPRESSED_SRGB8_ETC2                     = 0x9275,
58 		GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2  = 0x9276,
59 		GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,
60 		GL_COMPRESSED_RGBA8_ETC2_EAC                 = 0x9278,
61 		GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC          = 0x9279,
62 		GL_COMPRESSED_R11_EAC                        = 0x9270,
63 		GL_COMPRESSED_SIGNED_R11_EAC                 = 0x9271,
64 		GL_COMPRESSED_RG11_EAC                       = 0x9272,
65 		GL_COMPRESSED_SIGNED_RG11_EAC                = 0x9273;
66 
67 	/** Accepted by the <target> parameter of Enable and Disable: */
68 	int GL_PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69;
69 
70 	/**
71 	 * Accepted by the <target> parameter of BeginQuery, EndQuery,
72 	 * GetQueryIndexediv and GetQueryiv:
73 	 */
74 	int GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
75 
76 	/** Accepted by the <value> parameter of the GetInteger* functions: */
77 	int GL_MAX_ELEMENT_INDEX = 0x8D6B;
78 
79 	// -----------------------------------------------------------------------
80 	// ----------------------[ ARB_clear_buffer_object ]----------------------
81 	// -----------------------------------------------------------------------
82 
glClearBufferData(@Lenum int target, @GLenum int internalformat, @GLenum int format, @GLenum int type, @Check(R) @Const @GLvoid ByteBuffer data)83 	void glClearBufferData(@GLenum int target,
84 	                       @GLenum int internalformat,
85 	                       @GLenum int format,
86 	                       @GLenum int type,
87 	                       @Check("1") @Const @GLvoid ByteBuffer data);
88 
glClearBufferSubData(@Lenum int target, @GLenum int internalformat, @GLintptr long offset, @GLsizeiptr long size, @GLenum int format, @GLenum int type, @Check(R) @Const @GLvoid ByteBuffer data)89 	void glClearBufferSubData(@GLenum int target,
90 	                          @GLenum int internalformat,
91 	                          @GLintptr long offset,
92 	                          @GLsizeiptr long size,
93 	                          @GLenum int format,
94 	                          @GLenum int type,
95 	                          @Check("1") @Const @GLvoid ByteBuffer data);
96 
97 	// ------------------------------------------------------------------
98 	// ----------------------[ ARB_compute_shader ]----------------------
99 	// ------------------------------------------------------------------
100 
101 	/**
102 	 * Accepted by the <type> parameter of CreateShader and returned in the
103 	 * <params> parameter by GetShaderiv:
104 	 */
105 	int GL_COMPUTE_SHADER = 0x91B9;
106 
107 	/**
108 	 * Accepted by the <pname> parameter of GetIntegerv, GetBooleanv, GetFloatv,
109 	 * GetDoublev and GetInteger64v:
110 	 */
111 	int GL_MAX_COMPUTE_UNIFORM_BLOCKS              = 0x91BB,
112 		GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS         = 0x91BC,
113 		GL_MAX_COMPUTE_IMAGE_UNIFORMS              = 0x91BD,
114 		GL_MAX_COMPUTE_SHARED_MEMORY_SIZE          = 0x8262,
115 		GL_MAX_COMPUTE_UNIFORM_COMPONENTS          = 0x8263,
116 		GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS      = 0x8264,
117 		GL_MAX_COMPUTE_ATOMIC_COUNTERS             = 0x8265,
118 		GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266,
119 		GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS      = 0x90EB;
120 
121 	/**
122 	 * Accepted by the <pname> parameter of GetIntegeri_v, GetBooleani_v,
123 	 * GetFloati_v, GetDoublei_v and GetInteger64i_v:
124 	 */
125 
126 	int GL_MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE,
127 		GL_MAX_COMPUTE_WORK_GROUP_SIZE  = 0x91BF;
128 
129 	/** Accepted by the <pname> parameter of GetProgramiv: */
130 	int GL_COMPUTE_WORK_GROUP_SIZE = 0x8267;
131 
132 	/** Accepted by the <pname> parameter of GetActiveUniformBlockiv: */
133 	int GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC;
134 
135 	/** Accepted by the <pname> parameter of GetActiveAtomicCounterBufferiv: */
136 	int GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED;
137 
138 	/**
139 	 * Accepted by the <target> parameters of BindBuffer, BufferData,
140 	 * BufferSubData, MapBuffer, UnmapBuffer, GetBufferSubData, and
141 	 * GetBufferPointerv:
142 	 */
143 	int GL_DISPATCH_INDIRECT_BUFFER = 0x90EE;
144 
145 	/**
146 	 * Accepted by the <value> parameter of GetIntegerv, GetBooleanv,
147 	 * GetInteger64v, GetFloatv, and GetDoublev:
148 	 */
149 	int GL_DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF;
150 
151 	/** Accepted by the <stages> parameter of UseProgramStages: */
152 	int GL_COMPUTE_SHADER_BIT = 0x00000020;
153 
glDispatchCompute(@Luint int num_groups_x, @GLuint int num_groups_y, @GLuint int num_groups_z)154 	void glDispatchCompute(@GLuint int num_groups_x,
155 	                       @GLuint int num_groups_y,
156 	                       @GLuint int num_groups_z);
157 
glDispatchComputeIndirect(@Lintptr long indirect)158 	void glDispatchComputeIndirect(@GLintptr long indirect);
159 
160 	// --------------------------------------------------------------
161 	// ----------------------[ ARB_copy_image ]----------------------
162 	// --------------------------------------------------------------
163 
glCopyImageSubData( @Luint int srcName, @GLenum int srcTarget, int srcLevel, int srcX, int srcY, int srcZ, @GLuint int dstName, @GLenum int dstTarget, int dstLevel, int dstX, int dstY, int dstZ, @GLsizei int srcWidth, @GLsizei int srcHeight, @GLsizei int srcDepth)164 	void glCopyImageSubData(
165 		@GLuint int srcName, @GLenum int srcTarget, int srcLevel,
166 		int srcX, int srcY, int srcZ,
167 		@GLuint int dstName, @GLenum int dstTarget, int dstLevel,
168 		int dstX, int dstY, int dstZ,
169 		@GLsizei int srcWidth, @GLsizei int srcHeight, @GLsizei int srcDepth);
170 
171 	// ----------------------------------------------------------------
172 	// ----------------------[ KHR_debug_output ]----------------------
173 	// ----------------------[ ARB_debug_output2 ]---------------------
174 	// ----------------------[ ARB_debug_group ]-----------------------
175 	// ----------------------[ ARB_debug_label ]-----------------------
176 	// ----------------------------------------------------------------
177 
178 	/**
179 	 * Tokens accepted by the <target> parameters of Enable, Disable, and
180 	 * IsEnabled:
181 	 */
182 	int GL_DEBUG_OUTPUT             = 0x92E0,
183 		GL_DEBUG_OUTPUT_SYNCHRONOUS = 0x8242;
184 
185 	/** Returned by GetIntegerv when <pname> is CONTEXT_FLAGS: */
186 	int GL_CONTEXT_FLAG_DEBUG_BIT = 0x00000002;
187 
188 	/**
189 	 * Tokens accepted by the <value> parameters of GetBooleanv, GetIntegerv,
190 	 * GetFloatv, GetDoublev and GetInteger64v:
191 	 */
192 	int GL_MAX_DEBUG_MESSAGE_LENGTH         = 0x9143,
193 		GL_MAX_DEBUG_LOGGED_MESSAGES        = 0x9144,
194 		GL_DEBUG_LOGGED_MESSAGES            = 0x9145,
195 		GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243,
196 		GL_MAX_DEBUG_GROUP_STACK_DEPTH      = 0x826C,
197 		GL_DEBUG_GROUP_STACK_DEPTH          = 0x826D,
198 		GL_MAX_LABEL_LENGTH                 = 0x82E8;
199 
200 	/** Tokens accepted by the <pname> parameter of GetPointerv: */
201 	int GL_DEBUG_CALLBACK_FUNCTION   = 0x8244,
202 		GL_DEBUG_CALLBACK_USER_PARAM = 0x8245;
203 
204 	/**
205 	 * Tokens accepted or provided by the <source> parameters of
206 	 * DebugMessageControl, DebugMessageInsert and DEBUGPROC, and the <sources>
207 	 * parameter of GetDebugMessageLog:
208 	 */
209 	int GL_DEBUG_SOURCE_API             = 0x8246,
210 		GL_DEBUG_SOURCE_WINDOW_SYSTEM   = 0x8247,
211 		GL_DEBUG_SOURCE_SHADER_COMPILER = 0x8248,
212 		GL_DEBUG_SOURCE_THIRD_PARTY     = 0x8249,
213 		GL_DEBUG_SOURCE_APPLICATION     = 0x824A,
214 		GL_DEBUG_SOURCE_OTHER           = 0x824B;
215 
216 	/**
217 	 * Tokens accepted or provided by the <type> parameters of
218 	 * DebugMessageControl, DebugMessageInsert and DEBUGPROC, and the <types>
219 	 * parameter of GetDebugMessageLog:
220 	 */
221 	int GL_DEBUG_TYPE_ERROR               = 0x824C,
222 		GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D,
223 		GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR  = 0x824E,
224 		GL_DEBUG_TYPE_PORTABILITY         = 0x824F,
225 		GL_DEBUG_TYPE_PERFORMANCE         = 0x8250,
226 		GL_DEBUG_TYPE_OTHER               = 0x8251,
227 		GL_DEBUG_TYPE_MARKER              = 0x8268;
228 
229 	/**
230 	 * Tokens accepted or provided by the <type> parameters of
231 	 * DebugMessageControl and DEBUGPROC, and the <types> parameter of
232 	 * GetDebugMessageLog:
233 	 */
234 	int GL_DEBUG_TYPE_PUSH_GROUP = 0x8269,
235 		GL_DEBUG_TYPE_POP_GROUP  = 0x826A;
236 
237 	/**
238 	 * Tokens accepted or provided by the <severity> parameters of
239 	 * DebugMessageControl, DebugMessageInsert and DEBUGPROC callback functions,
240 	 * and the <severities> parameter of GetDebugMessageLog:
241 	 */
242 	int GL_DEBUG_SEVERITY_HIGH         = 0x9146,
243 		GL_DEBUG_SEVERITY_MEDIUM       = 0x9147,
244 		GL_DEBUG_SEVERITY_LOW          = 0x9148,
245 		GL_DEBUG_SEVERITY_NOTIFICATION = 0x826B;
246 
247 	/**
248 	 * Tokens accepted or provided by the <identifier> parameters of
249 	 * ObjectLabel and GetObjectLabel:
250 	 */
251 	int GL_BUFFER           = 0x82E0,
252 		GL_SHADER           = 0x82E1,
253 		GL_PROGRAM          = 0x82E2,
254 		GL_QUERY            = 0x82E3,
255 		GL_PROGRAM_PIPELINE = 0x82E4,
256 		GL_SAMPLER          = 0x82E6,
257 		GL_DISPLAY_LIST     = 0x82E7;
258 
259 	// -----------------------------
260 
glDebugMessageControl(@Lenum int source, @GLenum int type, @GLenum int severity, @AutoSize(value = R, canBeNull = true) @GLsizei int count, @Check(canBeNull = true) @Const @GLuint IntBuffer ids, boolean enabled)261 	void glDebugMessageControl(@GLenum int source,
262 	                           @GLenum int type,
263 	                           @GLenum int severity,
264 	                           @AutoSize(value = "ids", canBeNull = true) @GLsizei int count,
265 	                           @Check(canBeNull = true) @Const @GLuint IntBuffer ids,
266 	                           boolean enabled);
267 
glDebugMessageInsert(@Lenum int source, @GLenum int type, @GLuint int id, @GLenum int severity, @AutoSize(R) @GLsizei int length, @Const @GLchar ByteBuffer buf)268 	void glDebugMessageInsert(@GLenum int source,
269 	                          @GLenum int type,
270 	                          @GLuint int id,
271 	                          @GLenum int severity,
272 	                          @AutoSize("buf") @GLsizei int length,
273 	                          @Const @GLchar ByteBuffer buf);
274 
275 	@Alternate("glDebugMessageInsert")
glDebugMessageInsert(@Lenum int source, @GLenum int type, @GLuint int id, @GLenum int severity, @Constant(R) @GLsizei int length, CharSequence buf)276 	void glDebugMessageInsert(@GLenum int source,
277 	                          @GLenum int type,
278 	                          @GLuint int id,
279 	                          @GLenum int severity,
280 	                          @Constant("buf.length()") @GLsizei int length,
281 	                          CharSequence buf);
282 
283 	/**
284 	 * The {@code KHRDebugCallback.Handler} implementation passed to this method will be used for
285 	 * KHR_debug messages. If callback is null, any previously registered handler for the current
286 	 * thread will be unregistered and stop receiving messages.
287 	 *
288 	 * @param callback the callback function to use
289 	 */
290 	@Code(
291 		// Create a GlobalRef to the callback object and register it with the current context.
292 		javaBeforeNative = "\t\tlong userParam = callback == null ? 0 : CallbackUtil.createGlobalRef(callback.getHandler());\n" +
293 		                   "\t\tCallbackUtil.registerContextCallbackKHR(userParam);"
294 	)
glDebugMessageCallback(@ointerWrappervalue = R, canBeNull = true) KHRDebugCallback callback, @Constant(R) @PointerWrapper(R) long userParam)295 	void glDebugMessageCallback(@PointerWrapper(value = "GLDEBUGPROC", canBeNull = true) KHRDebugCallback callback,
296 	                            @Constant("userParam") @PointerWrapper("GLvoid *") long userParam);
297 
298 	@GLuint
glGetDebugMessageLog(@Luint int count, @AutoSize(value = R, canBeNull = true) @GLsizei int bufsize, @Check(value = R, canBeNull = true) @GLenum IntBuffer sources, @Check(value = R, canBeNull = true) @GLenum IntBuffer types, @Check(value = R, canBeNull = true) @GLuint IntBuffer ids, @Check(value = R, canBeNull = true) @GLenum IntBuffer severities, @Check(value = R, canBeNull = true) @GLsizei IntBuffer lengths, @Check(canBeNull = true) @OutParameter @GLchar ByteBuffer messageLog)299 	int glGetDebugMessageLog(@GLuint int count,
300 	                         @AutoSize(value = "messageLog", canBeNull = true) @GLsizei int bufsize,
301 	                         @Check(value = "count", canBeNull = true) @GLenum IntBuffer sources,
302 	                         @Check(value = "count", canBeNull = true) @GLenum IntBuffer types,
303 	                         @Check(value = "count", canBeNull = true) @GLuint IntBuffer ids,
304 	                         @Check(value = "count", canBeNull = true) @GLenum IntBuffer severities,
305 	                         @Check(value = "count", canBeNull = true) @GLsizei IntBuffer lengths,
306 	                         @Check(canBeNull = true) @OutParameter @GLchar ByteBuffer messageLog);
307 
glPushDebugGroup(@Lenum int source, @GLuint int id, @AutoSize(R) @GLsizei int length, @Const @GLchar ByteBuffer message)308 	void glPushDebugGroup(@GLenum int source, @GLuint int id, @AutoSize("message") @GLsizei int length,
309 	                      @Const @GLchar ByteBuffer message);
310 
311 	@Alternate("glPushDebugGroup")
glPushDebugGroup(@Lenum int source, @GLuint int id, @Constant(R) @GLsizei int length, CharSequence message)312 	void glPushDebugGroup(@GLenum int source, @GLuint int id, @Constant("message.length()") @GLsizei int length,
313 	                      CharSequence message);
314 
glPopDebugGroup()315 	void glPopDebugGroup();
316 
glObjectLabel(@Lenum int identifier, @GLuint int name, @AutoSize(value = R, canBeNull = true) @GLsizei int length, @Check(canBeNull = true) @Const @GLchar ByteBuffer label)317 	void glObjectLabel(@GLenum int identifier, @GLuint int name, @AutoSize(value = "label", canBeNull = true) @GLsizei int length,
318 	                   @Check(canBeNull = true) @Const @GLchar ByteBuffer label);
319 
320 	@Alternate("glObjectLabel")
glObjectLabel(@Lenum int identifier, @GLuint int name, @Constant(R) @GLsizei int length, CharSequence label)321 	void glObjectLabel(@GLenum int identifier, @GLuint int name, @Constant("label.length()") @GLsizei int length,
322 	                   CharSequence label);
323 
glGetObjectLabel(@Lenum int identifier, @GLuint int name, @AutoSize(R) @GLsizei int bufSize, @OutParameter @Check(value = R, canBeNull = true) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer label)324 	void glGetObjectLabel(@GLenum int identifier, @GLuint int name, @AutoSize("label") @GLsizei int bufSize,
325 	                      @OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
326 	                      @OutParameter @GLchar ByteBuffer label);
327 
328 	@Alternate("glGetObjectLabel")
329 	@GLreturn(value = "label", maxLength = "bufSize")
glGetObjectLabel2(@Lenum int identifier, @GLuint int name, @GLsizei int bufSize, @OutParameter @GLsizei @Constant(R) IntBuffer length, @OutParameter @GLchar ByteBuffer label)330 	void glGetObjectLabel2(@GLenum int identifier, @GLuint int name, @GLsizei int bufSize,
331 	                       @OutParameter @GLsizei @Constant("MemoryUtil.getAddress0(label_length)") IntBuffer length,
332 	                       @OutParameter @GLchar ByteBuffer label);
333 
glObjectPtrLabel(@ointerWrapperR) org.lwjgl.PointerWrapper ptr, @AutoSize(value = R, canBeNull = true) @GLsizei int length, @Check(canBeNull = true) @Const @GLchar ByteBuffer label)334 	void glObjectPtrLabel(@PointerWrapper("GLvoid *") org.lwjgl.PointerWrapper ptr, @AutoSize(value = "label", canBeNull = true) @GLsizei int length,
335 	                      @Check(canBeNull = true) @Const @GLchar ByteBuffer label);
336 
337 	@Alternate("glObjectPtrLabel")
glObjectPtrLabel(@ointerWrapperR) org.lwjgl.PointerWrapper ptr, @Constant(R) @GLsizei int length, CharSequence label)338 	void glObjectPtrLabel(@PointerWrapper("GLvoid *") org.lwjgl.PointerWrapper ptr, @Constant("label.length()") @GLsizei int length,
339 	                      CharSequence label);
340 
glGetObjectPtrLabel(@ointerWrapperR) org.lwjgl.PointerWrapper ptr, @AutoSize(R) @GLsizei int bufSize, @OutParameter @Check(value = R, canBeNull = true) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer label)341 	void glGetObjectPtrLabel(@PointerWrapper("GLvoid *") org.lwjgl.PointerWrapper ptr, @AutoSize("label") @GLsizei int bufSize,
342 	                         @OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
343 	                         @OutParameter @GLchar ByteBuffer label);
344 
345 	@Alternate("glGetObjectPtrLabel")
346 	@GLreturn(value = "label", maxLength = "bufSize")
glGetObjectPtrLabel2(@ointerWrapperR) org.lwjgl.PointerWrapper ptr, @GLsizei int bufSize, @OutParameter @GLsizei @Constant(R) IntBuffer length, @OutParameter @GLchar ByteBuffer label)347 	void glGetObjectPtrLabel2(@PointerWrapper("GLvoid *") org.lwjgl.PointerWrapper ptr, @GLsizei int bufSize,
348 	                          @OutParameter @GLsizei @Constant("MemoryUtil.getAddress0(label_length)") IntBuffer length,
349 	                          @OutParameter @GLchar ByteBuffer label);
350 
351 	// -----------------------------------------------------------------------------
352 	// ----------------------[ ARB_explicit_uniform_location ]----------------------
353 	// -----------------------------------------------------------------------------
354 
355 	/**
356 	 * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
357 	 * GetFloatv, GetDoublev, and GetInteger64v:
358 	 */
359 	int GL_MAX_UNIFORM_LOCATIONS = 0x826E;
360 
361 	// -----------------------------------------------------------------------------
362 	// ----------------------[ ARB_framebuffer_no_attachment ]----------------------
363 	// -----------------------------------------------------------------------------
364 
365 	/**
366 	 * Accepted by the <pname> parameter of FramebufferParameteri,
367 	 * GetFramebufferParameteriv, NamedFramebufferParameteriEXT, and
368 	 * GetNamedFramebufferParameterivEXT:
369 	 */
370 	int GL_FRAMEBUFFER_DEFAULT_WIDTH                  = 0x9310,
371 		GL_FRAMEBUFFER_DEFAULT_HEIGHT                 = 0x9311,
372 		GL_FRAMEBUFFER_DEFAULT_LAYERS                 = 0x9312,
373 		GL_FRAMEBUFFER_DEFAULT_SAMPLES                = 0x9313,
374 		GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314;
375 
376 	/**
377 	 * Accepted by the <pname> parameter of GetIntegerv, GetBooleanv,
378 	 * GetInteger64v, GetFloatv, and GetDoublev:
379 	 */
380 	int GL_MAX_FRAMEBUFFER_WIDTH   = 0x9315,
381 		GL_MAX_FRAMEBUFFER_HEIGHT  = 0x9316,
382 		GL_MAX_FRAMEBUFFER_LAYERS  = 0x9317,
383 		GL_MAX_FRAMEBUFFER_SAMPLES = 0x9318;
384 
glFramebufferParameteri(@Lenum int target, @GLenum int pname, int param)385 	void glFramebufferParameteri(@GLenum int target, @GLenum int pname, int param);
386 
387 	@StripPostfix("params")
glGetFramebufferParameteriv(@Lenum int target, @GLenum int pname, @OutParameter @Check(R) IntBuffer params)388 	void glGetFramebufferParameteriv(@GLenum int target, @GLenum int pname, @OutParameter @Check("1") IntBuffer params);
389 
390 	@Alternate("glGetFramebufferParameteriv")
391 	@GLreturn("params")
392 	@StripPostfix(value = "params", hasPostfix = false)
glGetFramebufferParameteriv2(@Lenum int target, @GLenum int pname, @OutParameter IntBuffer params)393 	void glGetFramebufferParameteriv2(@GLenum int target, @GLenum int pname, @OutParameter IntBuffer params);
394 
395 	// -----------------------------------------------------------------------------
396 	// ----------------------[ ARB_internalformat_query2 ]----------------------
397 	// -----------------------------------------------------------------------------
398 
399 	/**
400 	 * Accepted by the <pname> parameter of GetInternalformativ
401 	 * and GetInternalformati64v:
402 	 */
403 	int GL_INTERNALFORMAT_SUPPORTED               = 0x826F,
404 		GL_INTERNALFORMAT_PREFERRED               = 0x8270,
405 		GL_INTERNALFORMAT_RED_SIZE                = 0x8271,
406 		GL_INTERNALFORMAT_GREEN_SIZE              = 0x8272,
407 		GL_INTERNALFORMAT_BLUE_SIZE               = 0x8273,
408 		GL_INTERNALFORMAT_ALPHA_SIZE              = 0x8274,
409 		GL_INTERNALFORMAT_DEPTH_SIZE              = 0x8275,
410 		GL_INTERNALFORMAT_STENCIL_SIZE            = 0x8276,
411 		GL_INTERNALFORMAT_SHARED_SIZE             = 0x8277,
412 		GL_INTERNALFORMAT_RED_TYPE                = 0x8278,
413 		GL_INTERNALFORMAT_GREEN_TYPE              = 0x8279,
414 		GL_INTERNALFORMAT_BLUE_TYPE               = 0x827A,
415 		GL_INTERNALFORMAT_ALPHA_TYPE              = 0x827B,
416 		GL_INTERNALFORMAT_DEPTH_TYPE              = 0x827C,
417 		GL_INTERNALFORMAT_STENCIL_TYPE            = 0x827D,
418 		GL_MAX_WIDTH                              = 0x827E,
419 		GL_MAX_HEIGHT                             = 0x827F,
420 		GL_MAX_DEPTH                              = 0x8280,
421 		GL_MAX_LAYERS                             = 0x8281,
422 		GL_MAX_COMBINED_DIMENSIONS                = 0x8282,
423 		GL_COLOR_COMPONENTS                       = 0x8283,
424 		GL_DEPTH_COMPONENTS                       = 0x8284,
425 		GL_STENCIL_COMPONENTS                     = 0x8285,
426 		GL_COLOR_RENDERABLE                       = 0x8286,
427 		GL_DEPTH_RENDERABLE                       = 0x8287,
428 		GL_STENCIL_RENDERABLE                     = 0x8288,
429 		GL_FRAMEBUFFER_RENDERABLE                 = 0x8289,
430 		GL_FRAMEBUFFER_RENDERABLE_LAYERED         = 0x828A,
431 		GL_FRAMEBUFFER_BLEND                      = 0x828B,
432 		GL_READ_PIXELS                            = 0x828C,
433 		GL_READ_PIXELS_FORMAT                     = 0x828D,
434 		GL_READ_PIXELS_TYPE                       = 0x828E,
435 		GL_TEXTURE_IMAGE_FORMAT                   = 0x828F,
436 		GL_TEXTURE_IMAGE_TYPE                     = 0x8290,
437 		GL_GET_TEXTURE_IMAGE_FORMAT               = 0x8291,
438 		GL_GET_TEXTURE_IMAGE_TYPE                 = 0x8292,
439 		GL_MIPMAP                                 = 0x8293,
440 		GL_MANUAL_GENERATE_MIPMAP                 = 0x8294,
441 		GL_AUTO_GENERATE_MIPMAP                   = 0x8295,
442 		GL_COLOR_ENCODING                         = 0x8296,
443 		GL_SRGB_READ                              = 0x8297,
444 		GL_SRGB_WRITE                             = 0x8298,
445 		GL_SRGB_DECODE_ARB                        = 0x8299,
446 		GL_FILTER                                 = 0x829A,
447 		GL_VERTEX_TEXTURE                         = 0x829B,
448 		GL_TESS_CONTROL_TEXTURE                   = 0x829C,
449 		GL_TESS_EVALUATION_TEXTURE                = 0x829D,
450 		GL_GEOMETRY_TEXTURE                       = 0x829E,
451 		GL_FRAGMENT_TEXTURE                       = 0x829F,
452 		GL_COMPUTE_TEXTURE                        = 0x82A0,
453 		GL_TEXTURE_SHADOW                         = 0x82A1,
454 		GL_TEXTURE_GATHER                         = 0x82A2,
455 		GL_TEXTURE_GATHER_SHADOW                  = 0x82A3,
456 		GL_SHADER_IMAGE_LOAD                      = 0x82A4,
457 		GL_SHADER_IMAGE_STORE                     = 0x82A5,
458 		GL_SHADER_IMAGE_ATOMIC                    = 0x82A6,
459 		GL_IMAGE_TEXEL_SIZE                       = 0x82A7,
460 		GL_IMAGE_COMPATIBILITY_CLASS              = 0x82A8,
461 		GL_IMAGE_PIXEL_FORMAT                     = 0x82A9,
462 		GL_IMAGE_PIXEL_TYPE                       = 0x82AA,
463 		GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST    = 0x82AC,
464 		GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST  = 0x82AD,
465 		GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE   = 0x82AE,
466 		GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF,
467 		GL_TEXTURE_COMPRESSED_BLOCK_WIDTH         = 0x82B1,
468 		GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT        = 0x82B2,
469 		GL_TEXTURE_COMPRESSED_BLOCK_SIZE          = 0x82B3,
470 		GL_CLEAR_BUFFER                           = 0x82B4,
471 		GL_TEXTURE_VIEW                           = 0x82B5,
472 		GL_VIEW_COMPATIBILITY_CLASS               = 0x82B6;
473 
474 	/**
475 	 * Returned as possible responses for various <pname> queries
476 	 * to GetInternalformativ and GetInternalformati64v
477 	 */
478 	int GL_FULL_SUPPORT              = 0x82B7,
479 		GL_CAVEAT_SUPPORT            = 0x82B8,
480 		GL_IMAGE_CLASS_4_X_32        = 0x82B9,
481 		GL_IMAGE_CLASS_2_X_32        = 0x82BA,
482 		GL_IMAGE_CLASS_1_X_32        = 0x82BB,
483 		GL_IMAGE_CLASS_4_X_16        = 0x82BC,
484 		GL_IMAGE_CLASS_2_X_16        = 0x82BD,
485 		GL_IMAGE_CLASS_1_X_16        = 0x82BE,
486 		GL_IMAGE_CLASS_4_X_8         = 0x82BF,
487 		GL_IMAGE_CLASS_2_X_8         = 0x82C0,
488 		GL_IMAGE_CLASS_1_X_8         = 0x82C1,
489 		GL_IMAGE_CLASS_11_11_10      = 0x82C2,
490 		GL_IMAGE_CLASS_10_10_10_2    = 0x82C3,
491 		GL_VIEW_CLASS_128_BITS       = 0x82C4,
492 		GL_VIEW_CLASS_96_BITS        = 0x82C5,
493 		GL_VIEW_CLASS_64_BITS        = 0x82C6,
494 		GL_VIEW_CLASS_48_BITS        = 0x82C7,
495 		GL_VIEW_CLASS_32_BITS        = 0x82C8,
496 		GL_VIEW_CLASS_24_BITS        = 0x82C9,
497 		GL_VIEW_CLASS_16_BITS        = 0x82CA,
498 		GL_VIEW_CLASS_8_BITS         = 0x82CB,
499 		GL_VIEW_CLASS_S3TC_DXT1_RGB  = 0x82CC,
500 		GL_VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD,
501 		GL_VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE,
502 		GL_VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF,
503 		GL_VIEW_CLASS_RGTC1_RED      = 0x82D0,
504 		GL_VIEW_CLASS_RGTC2_RG       = 0x82D1,
505 		GL_VIEW_CLASS_BPTC_UNORM     = 0x82D2,
506 		GL_VIEW_CLASS_BPTC_FLOAT     = 0x82D3;
507 
508 	@StripPostfix("params")
glGetInternalformati64v(@Lenum int target, @GLenum int internalformat, @GLenum int pname, @AutoSize(R) @GLsizei int bufSize, @OutParameter @GLint64 LongBuffer params)509 	void glGetInternalformati64v(@GLenum int target, @GLenum int internalformat,
510 	                             @GLenum int pname, @AutoSize("params") @GLsizei int bufSize, @OutParameter @GLint64 LongBuffer params);
511 
512 	@Alternate("glGetInternalformati64v")
513 	@GLreturn("params")
514 	@StripPostfix(value = "params", hasPostfix = false)
glGetInternalformati64v2(@Lenum int target, @GLenum int internalformat, @GLenum int pname, @Constant(R) @GLsizei int bufSize, @OutParameter @GLint64 LongBuffer params)515 	void glGetInternalformati64v2(@GLenum int target, @GLenum int internalformat,
516 	                              @GLenum int pname, @Constant("1") @GLsizei int bufSize, @OutParameter @GLint64 LongBuffer params);
517 
518 	// ----------------------------------------------------------------------
519 	// ----------------------[ ARB_invalidate_subdata ]----------------------
520 	// ----------------------------------------------------------------------
521 
glInvalidateTexSubImage(@Luint int texture, int level, int xoffset, int yoffset, int zoffset, @GLsizei int width, @GLsizei int height, @GLsizei int depth)522 	void glInvalidateTexSubImage(@GLuint int texture, int level,
523 	                             int xoffset, int yoffset, int zoffset,
524 	                             @GLsizei int width, @GLsizei int height, @GLsizei int depth);
525 
glInvalidateTexImage(@Luint int texture, int level)526 	void glInvalidateTexImage(@GLuint int texture, int level);
527 
glInvalidateBufferSubData(@Luint int buffer, @GLintptr long offset, @GLsizeiptr long length)528 	void glInvalidateBufferSubData(@GLuint int buffer, @GLintptr long offset, @GLsizeiptr long length);
529 
glInvalidateBufferData(@Luint int buffer)530 	void glInvalidateBufferData(@GLuint int buffer);
531 
glInvalidateFramebuffer(@Lenum int target, @AutoSize(R) @GLsizei int numAttachments, @Const @GLenum IntBuffer attachments)532 	void glInvalidateFramebuffer(@GLenum int target,
533 	                             @AutoSize("attachments") @GLsizei int numAttachments,
534 	                             @Const @GLenum IntBuffer attachments);
535 
glInvalidateSubFramebuffer(@Lenum int target, @AutoSize(R) @GLsizei int numAttachments, @Const @GLenum IntBuffer attachments, int x, int y, @GLsizei int width, @GLsizei int height)536 	void glInvalidateSubFramebuffer(@GLenum int target,
537 	                                @AutoSize("attachments") @GLsizei int numAttachments,
538 	                                @Const @GLenum IntBuffer attachments,
539 	                                int x, int y, @GLsizei int width, @GLsizei int height);
540 
541 	// -----------------------------------------------------------------------
542 	// ----------------------[ ARB_multi_draw_indirect ]----------------------
543 	// -----------------------------------------------------------------------
544 
glMultiDrawArraysIndirect(@Lenum int mode, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid ByteBuffer indirect, @GLsizei int primcount, @GLsizei int stride)545 	void glMultiDrawArraysIndirect(@GLenum int mode,
546 	                               @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 4 * 4 : stride) * primcount") @Const @GLvoid ByteBuffer indirect,
547 	                               @GLsizei int primcount,
548 	                               @GLsizei int stride);
549 
550 	@Alternate("glMultiDrawArraysIndirect")
glMultiDrawArraysIndirect(@Lenum int mode, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid(TypeKind.INT) IntBuffer indirect, @GLsizei int primcount, @GLsizei int stride)551 	void glMultiDrawArraysIndirect(@GLenum int mode,
552 	                               @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 4 : stride >> 2) * primcount") @Const @GLvoid(TypeKind.INT) IntBuffer indirect,
553 	                               @GLsizei int primcount,
554 	                               @GLsizei int stride);
555 
glMultiDrawElementsIndirect(@Lenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid ByteBuffer indirect, @GLsizei int primcount, @GLsizei int stride)556 	void glMultiDrawElementsIndirect(@GLenum int mode,
557 	                                 @GLenum int type,
558 	                                 @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 5 * 4 : stride) * primcount") @Const @GLvoid ByteBuffer indirect,
559 	                                 @GLsizei int primcount,
560 	                                 @GLsizei int stride);
561 
562 	@Alternate("glMultiDrawElementsIndirect")
glMultiDrawElementsIndirect(@Lenum int mode, @GLenum int type, @BufferObject(BufferKind.IndirectBO) @Check(R) @Const @GLvoid(TypeKind.INT) IntBuffer indirect, @GLsizei int primcount, @GLsizei int stride)563 	void glMultiDrawElementsIndirect(@GLenum int mode,
564 	                                 @GLenum int type,
565 	                                 @BufferObject(BufferKind.IndirectBO) @Check("(stride == 0 ? 5 : stride >> 2) * primcount") @Const @GLvoid(TypeKind.INT) IntBuffer indirect,
566 	                                 @GLsizei int primcount,
567 	                                 @GLsizei int stride);
568 
569 	// ---------------------------------------------------------------------------
570 	// ----------------------[ ARB_program_interface_query ]----------------------
571 	// ---------------------------------------------------------------------------
572 
573 	/**
574 	 * Accepted by the <programInterface> parameter of GetProgramInterfaceiv,
575 	 * GetProgramResourceIndex, GetProgramResourceName, GetProgramResourceiv,
576 	 * GetProgramResourceLocation, and GetProgramResourceLocationIndex:
577 	 */
578 	int GL_UNIFORM                            = 0x92E1,
579 		GL_UNIFORM_BLOCK                      = 0x92E2,
580 		GL_PROGRAM_INPUT                      = 0x92E3,
581 		GL_PROGRAM_OUTPUT                     = 0x92E4,
582 		GL_BUFFER_VARIABLE                    = 0x92E5,
583 		GL_SHADER_STORAGE_BLOCK               = 0x92E6,
584 		GL_VERTEX_SUBROUTINE                  = 0x92E8,
585 		GL_TESS_CONTROL_SUBROUTINE            = 0x92E9,
586 		GL_TESS_EVALUATION_SUBROUTINE         = 0x92EA,
587 		GL_GEOMETRY_SUBROUTINE                = 0x92EB,
588 		GL_FRAGMENT_SUBROUTINE                = 0x92EC,
589 		GL_COMPUTE_SUBROUTINE                 = 0x92ED,
590 		GL_VERTEX_SUBROUTINE_UNIFORM          = 0x92EE,
591 		GL_TESS_CONTROL_SUBROUTINE_UNIFORM    = 0x92EF,
592 		GL_TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0,
593 		GL_GEOMETRY_SUBROUTINE_UNIFORM        = 0x92F1,
594 		GL_FRAGMENT_SUBROUTINE_UNIFORM        = 0x92F2,
595 		GL_COMPUTE_SUBROUTINE_UNIFORM         = 0x92F3,
596 		GL_TRANSFORM_FEEDBACK_VARYING         = 0x92F4;
597 
598 	/** Accepted by the <pname> parameter of GetProgramInterfaceiv: */
599 	int GL_ACTIVE_RESOURCES               = 0x92F5,
600 		GL_MAX_NAME_LENGTH                = 0x92F6,
601 		GL_MAX_NUM_ACTIVE_VARIABLES       = 0x92F7,
602 		GL_MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8;
603 
604 	/** Accepted in the <props> array of GetProgramResourceiv: */
605 	int GL_NAME_LENGTH                          = 0x92F9,
606 		GL_TYPE                                 = 0x92FA,
607 		GL_ARRAY_SIZE                           = 0x92FB,
608 		GL_OFFSET                               = 0x92FC,
609 		GL_BLOCK_INDEX                          = 0x92FD,
610 		GL_ARRAY_STRIDE                         = 0x92FE,
611 		GL_MATRIX_STRIDE                        = 0x92FF,
612 		GL_IS_ROW_MAJOR                         = 0x9300,
613 		GL_ATOMIC_COUNTER_BUFFER_INDEX          = 0x9301,
614 		GL_BUFFER_BINDING                       = 0x9302,
615 		GL_BUFFER_DATA_SIZE                     = 0x9303,
616 		GL_NUM_ACTIVE_VARIABLES                 = 0x9304,
617 		GL_ACTIVE_VARIABLES                     = 0x9305,
618 		GL_REFERENCED_BY_VERTEX_SHADER          = 0x9306,
619 		GL_REFERENCED_BY_TESS_CONTROL_SHADER    = 0x9307,
620 		GL_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308,
621 		GL_REFERENCED_BY_GEOMETRY_SHADER        = 0x9309,
622 		GL_REFERENCED_BY_FRAGMENT_SHADER        = 0x930A,
623 		GL_REFERENCED_BY_COMPUTE_SHADER         = 0x930B,
624 		GL_TOP_LEVEL_ARRAY_SIZE                 = 0x930C,
625 		GL_TOP_LEVEL_ARRAY_STRIDE               = 0x930D,
626 		GL_LOCATION                             = 0x930E,
627 		GL_LOCATION_INDEX                       = 0x930F,
628 		GL_IS_PER_PATCH                         = 0x92E7;
629 
630 	@StripPostfix("params")
glGetProgramInterfaceiv(@Luint int program, @GLenum int programInterface, @GLenum int pname, @Check(R) @OutParameter IntBuffer params)631 	void glGetProgramInterfaceiv(@GLuint int program, @GLenum int programInterface,
632 	                             @GLenum int pname, @Check("1") @OutParameter IntBuffer params);
633 
634 	@Alternate("glGetProgramInterfaceiv")
635 	@GLreturn("params")
636 	@StripPostfix(value = "params", hasPostfix = false)
glGetProgramInterfaceiv2(@Luint int program, @GLenum int programInterface, @GLenum int pname, @OutParameter IntBuffer params)637 	void glGetProgramInterfaceiv2(@GLuint int program, @GLenum int programInterface,
638 	                              @GLenum int pname, @OutParameter IntBuffer params);
639 
640 	@GLuint
glGetProgramResourceIndex(@Luint int program, @GLenum int programInterface, @NullTerminated @Const @GLchar ByteBuffer name)641 	int glGetProgramResourceIndex(@GLuint int program, @GLenum int programInterface,
642 	                              @NullTerminated @Const @GLchar ByteBuffer name);
643 
644 	@Alternate("glGetProgramResourceIndex")
645 	@GLuint
glGetProgramResourceIndex(@Luint int program, @GLenum int programInterface, @NullTerminated CharSequence name)646 	int glGetProgramResourceIndex(@GLuint int program, @GLenum int programInterface,
647 	                              @NullTerminated CharSequence name);
648 
glGetProgramResourceName(@Luint int program, @GLenum int programInterface, @GLuint int index, @AutoSize(value = R, canBeNull = true) @GLsizei int bufSize, @Check(value = R, canBeNull = true) @OutParameter @GLsizei IntBuffer length, @Check(canBeNull = true) @OutParameter @GLchar ByteBuffer name)649 	void glGetProgramResourceName(@GLuint int program, @GLenum int programInterface,
650 	                              @GLuint int index, @AutoSize(value = "name", canBeNull = true) @GLsizei int bufSize, @Check(value = "1", canBeNull = true) @OutParameter @GLsizei IntBuffer length,
651 	                              @Check(canBeNull = true) @OutParameter @GLchar ByteBuffer name);
652 
653 	@Alternate("glGetProgramResourceName")
654 	@GLreturn(value = "name", maxLength = "bufSize")
glGetProgramResourceName2(@Luint int program, @GLenum int programInterface, @GLuint int index, @GLsizei int bufSize, @OutParameter @GLsizei @Constant(R) IntBuffer length, @OutParameter @GLchar ByteBuffer name)655 	void glGetProgramResourceName2(@GLuint int program, @GLenum int programInterface,
656 	                               @GLuint int index, @GLsizei int bufSize,
657 	                               @OutParameter @GLsizei @Constant("MemoryUtil.getAddress0(name_length)") IntBuffer length,
658 	                               @OutParameter @GLchar ByteBuffer name);
659 
660 	@StripPostfix("params")
glGetProgramResourceiv(@Luint int program, @GLenum int programInterface, @GLuint int index, @AutoSize(R) @GLsizei int propCount, @Const @GLenum IntBuffer props, @AutoSize(R) @GLsizei int bufSize, @Check(value = R, canBeNull = true) @OutParameter @GLsizei IntBuffer length, @OutParameter IntBuffer params)661 	void glGetProgramResourceiv(@GLuint int program, @GLenum int programInterface,
662 	                            @GLuint int index, @AutoSize("props") @GLsizei int propCount,
663 	                            @Const @GLenum IntBuffer props, @AutoSize("params") @GLsizei int bufSize,
664 	                            @Check(value = "1", canBeNull = true) @OutParameter @GLsizei IntBuffer length, @OutParameter IntBuffer params);
665 
glGetProgramResourceLocation(@Luint int program, @GLenum int programInterface, @NullTerminated @Const @GLchar ByteBuffer name)666 	int glGetProgramResourceLocation(@GLuint int program, @GLenum int programInterface,
667 	                                 @NullTerminated @Const @GLchar ByteBuffer name);
668 
669 	@Alternate("glGetProgramResourceLocation")
glGetProgramResourceLocation(@Luint int program, @GLenum int programInterface, @NullTerminated CharSequence name)670 	int glGetProgramResourceLocation(@GLuint int program, @GLenum int programInterface,
671 	                                 @NullTerminated CharSequence name);
672 
glGetProgramResourceLocationIndex(@Luint int program, @GLenum int programInterface, @NullTerminated @Const @GLchar ByteBuffer name)673 	int glGetProgramResourceLocationIndex(@GLuint int program, @GLenum int programInterface,
674 	                                      @NullTerminated @Const @GLchar ByteBuffer name);
675 
676 	@Alternate("glGetProgramResourceLocationIndex")
glGetProgramResourceLocationIndex(@Luint int program, @GLenum int programInterface, @NullTerminated CharSequence name)677 	int glGetProgramResourceLocationIndex(@GLuint int program, @GLenum int programInterface,
678 	                                      @NullTerminated CharSequence name);
679 
680 	// --------------------------------------------------------------------------------
681 	// ----------------------[ ARB_shader_storage_buffer_object ]----------------------
682 	// --------------------------------------------------------------------------------
683 
684 	/**
685 	 * Accepted by the <target> parameters of BindBuffer, BufferData,
686 	 * BufferSubData, MapBuffer, UnmapBuffer, GetBufferSubData, and
687 	 * GetBufferPointerv:
688 	 */
689 	int GL_SHADER_STORAGE_BUFFER = 0x90D2;
690 
691 	/**
692 	 * Accepted by the <pname> parameter of GetIntegerv, GetIntegeri_v,
693 	 * GetBooleanv, GetInteger64v, GetFloatv, GetDoublev, GetBooleani_v,
694 	 * GetIntegeri_v, GetFloati_v, GetDoublei_v, and GetInteger64i_v:
695 	 */
696 	int GL_SHADER_STORAGE_BUFFER_BINDING = 0x90D3;
697 
698 	/**
699 	 * Accepted by the <pname> parameter of GetIntegeri_v, GetBooleani_v,
700 	 * GetIntegeri_v, GetFloati_v, GetDoublei_v, and GetInteger64i_v:
701 	 */
702 	int GL_SHADER_STORAGE_BUFFER_START = 0x90D4,
703 		GL_SHADER_STORAGE_BUFFER_SIZE  = 0x90D5;
704 
705 	/**
706 	 * Accepted by the <pname> parameter of GetIntegerv, GetBooleanv,
707 	 * GetInteger64v, GetFloatv, and GetDoublev:
708 	 */
709 	int GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS          = 0x90D6,
710 		GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS        = 0x90D7,
711 		GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS    = 0x90D8,
712 		GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9,
713 		GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS        = 0x90DA,
714 		GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS         = 0x90DB,
715 		GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS        = 0x90DC,
716 		GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS        = 0x90DD,
717 		GL_MAX_SHADER_STORAGE_BLOCK_SIZE             = 0x90DE,
718 		GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT    = 0x90DF;
719 
720 	/** Accepted in the <barriers> bitfield in glMemoryBarrier: */
721 	int GL_SHADER_STORAGE_BARRIER_BIT = 0x2000;
722 
723 	/**
724 	 * Alias for the existing token
725 	 * MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS:
726 	 */
727 	int GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39;
728 
glShaderStorageBlockBinding(@Luint int program, @GLuint int storageBlockIndex, @GLuint int storageBlockBinding)729 	void glShaderStorageBlockBinding(@GLuint int program, @GLuint int storageBlockIndex,
730 	                                 @GLuint int storageBlockBinding);
731 
732 	// ---------------------------------------------------------------------
733 	// ----------------------[ ARB_stencil_texturing ]----------------------
734 	// ---------------------------------------------------------------------
735 
736 	/** Accepted by the <pname> parameter of TexParameter* and GetTexParameter*: */
737 	int GL_DEPTH_STENCIL_TEXTURE_MODE = 0x90EA;
738 
739 	// ------------------------------------------------------------------------
740 	// ----------------------[ ARB_texture_buffer_range ]----------------------
741 	// ------------------------------------------------------------------------
742 
743 	/** Accepted by the <pname> parameter of GetTexLevelParameter: */
744 	int GL_TEXTURE_BUFFER_OFFSET = 0x919D,
745 		GL_TEXTURE_BUFFER_SIZE   = 0x919E;
746 
747 	/**
748 	 * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
749 	 * and GetDoublev:
750 	 */
751 	int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F;
752 
glTexBufferRange(@Lenum int target, @GLenum int internalformat, @GLuint int buffer, @GLintptr long offset, @GLsizeiptr long size)753 	void glTexBufferRange(@GLenum int target,
754 	                      @GLenum int internalformat,
755 	                      @GLuint int buffer,
756 	                      @GLintptr long offset,
757 	                      @GLsizeiptr long size);
758 
759 	// -------------------------------------------------------------------------------
760 	// ----------------------[ ARB_texture_storage_multisample ]----------------------
761 	// -------------------------------------------------------------------------------
762 
glTexStorage2DMultisample(@Lenum int target, @GLsizei int samples, @GLenum int internalformat, @GLsizei int width, @GLsizei int height, boolean fixedsamplelocations)763 	void glTexStorage2DMultisample(@GLenum int target,
764 	                               @GLsizei int samples,
765 	                               @GLenum int internalformat,
766 	                               @GLsizei int width,
767 	                               @GLsizei int height,
768 	                               boolean fixedsamplelocations);
769 
glTexStorage3DMultisample(@Lenum int target, @GLsizei int samples, @GLenum int internalformat, @GLsizei int width, @GLsizei int height, @GLsizei int depth, boolean fixedsamplelocations)770 	void glTexStorage3DMultisample(@GLenum int target,
771 	                               @GLsizei int samples,
772 	                               @GLenum int internalformat,
773 	                               @GLsizei int width,
774 	                               @GLsizei int height,
775 	                               @GLsizei int depth,
776 	                               boolean fixedsamplelocations);
777 
778 	// ----------------------------------------------------------------
779 	// ----------------------[ ARB_texture_view ]----------------------
780 	// ----------------------------------------------------------------
781 
782 	/**
783 	 * Accepted by the <pname> parameters of GetTexParameterfv and
784 	 * GetTexParameteriv:
785 	 */
786 	int GL_TEXTURE_VIEW_MIN_LEVEL   = 0x82DB,
787 		GL_TEXTURE_VIEW_NUM_LEVELS  = 0x82DC,
788 		GL_TEXTURE_VIEW_MIN_LAYER   = 0x82DD,
789 		GL_TEXTURE_VIEW_NUM_LAYERS  = 0x82DE,
790 		GL_TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
791 
glTextureView(@Luint int texture, @GLenum int target, @GLuint int origtexture, @GLenum int internalformat, @GLuint int minlevel, @GLuint int numlevels, @GLuint int minlayer, @GLuint int numlayers)792 	void glTextureView(@GLuint int texture, @GLenum int target, @GLuint int origtexture,
793 	                   @GLenum int internalformat,
794 	                   @GLuint int minlevel, @GLuint int numlevels,
795 	                   @GLuint int minlayer, @GLuint int numlayers);
796 
797 	// -------------------------------------------------------------------------
798 	// ----------------------[ ARB_vertex_attrib_binding ]----------------------
799 	// -------------------------------------------------------------------------
800 
801 	/** Accepted by the <pname> parameter of GetVertexAttrib*v: */
802 	int GL_VERTEX_ATTRIB_BINDING         = 0x82D4,
803 		GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5;
804 
805 	/**
806 	 * Accepted by the <target> parameter of GetBooleani_v, GetIntegeri_v,
807 	 * GetFloati_v, GetDoublei_v, and GetInteger64i_v:
808 	 */
809 	int GL_VERTEX_BINDING_DIVISOR = 0x82D6,
810 		GL_VERTEX_BINDING_OFFSET  = 0x82D7,
811 		GL_VERTEX_BINDING_STRIDE  = 0x82D8;
812 
813 	/** Accepted by the <pname> parameter of GetIntegerv, ... */
814 	int GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9,
815 		GL_MAX_VERTEX_ATTRIB_BINDINGS        = 0x82DA;
816 
glBindVertexBuffer(@Luint int bindingindex, @GLuint int buffer, @GLintptr long offset, @GLsizei int stride)817 	void glBindVertexBuffer(@GLuint int bindingindex, @GLuint int buffer, @GLintptr long offset,
818 	                        @GLsizei int stride);
819 
glVertexAttribFormat(@Luint int attribindex, int size, @GLenum int type, boolean normalized, @GLuint int relativeoffset)820 	void glVertexAttribFormat(@GLuint int attribindex, int size, @GLenum int type,
821 	                          boolean normalized, @GLuint int relativeoffset);
822 
glVertexAttribIFormat(@Luint int attribindex, int size, @GLenum int type, @GLuint int relativeoffset)823 	void glVertexAttribIFormat(@GLuint int attribindex, int size, @GLenum int type,
824 	                           @GLuint int relativeoffset);
825 
glVertexAttribLFormat(@Luint int attribindex, int size, @GLenum int type, @GLuint int relativeoffset)826 	void glVertexAttribLFormat(@GLuint int attribindex, int size, @GLenum int type,
827 	                           @GLuint int relativeoffset);
828 
glVertexAttribBinding(@Luint int attribindex, @GLuint int bindingindex)829 	void glVertexAttribBinding(@GLuint int attribindex, @GLuint int bindingindex);
830 
glVertexBindingDivisor(@Luint int bindingindex, @GLuint int divisor)831 	void glVertexBindingDivisor(@GLuint int bindingindex, @GLuint int divisor);
832 
833 }