• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2013, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 // This source file is automatically generated
19 
20 #include <GLES3/gl3.h>
21 #include <GLES3/gl3ext.h>
22 
23 #include "jni.h"
24 #include "JNIHelp.h"
25 #include <android_runtime/AndroidRuntime.h>
26 #include <utils/misc.h>
27 #include <assert.h>
28 
29 static int initialized = 0;
30 
31 static jclass nioAccessClass;
32 static jclass bufferClass;
33 static jmethodID getBasePointerID;
34 static jmethodID getBaseArrayID;
35 static jmethodID getBaseArrayOffsetID;
36 static jfieldID positionID;
37 static jfieldID limitID;
38 static jfieldID elementSizeShiftID;
39 
40 
41 /* special calls implemented in Android's GLES wrapper used to more
42  * efficiently bound-check passed arrays */
43 extern "C" {
44 #ifdef GL_VERSION_ES_CM_1_1
45 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
46         const GLvoid *ptr, GLsizei count);
47 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
48         const GLvoid *pointer, GLsizei count);
49 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
50         GLsizei stride, const GLvoid *pointer, GLsizei count);
51 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
52         GLsizei stride, const GLvoid *pointer, GLsizei count);
53 GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
54         GLsizei stride, const GLvoid *pointer, GLsizei count);
55 GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
56         GLsizei stride, const GLvoid *pointer, GLsizei count);
57 GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
58         GLsizei stride, const GLvoid *pointer, GLsizei count);
59 #endif
60 #ifdef GL_ES_VERSION_2_0
glVertexAttribPointerBounds(GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer,GLsizei count)61 static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
62         GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
63     glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
64 }
65 #endif
66 #ifdef GL_ES_VERSION_3_0
glVertexAttribIPointerBounds(GLuint indx,GLint size,GLenum type,GLsizei stride,const GLvoid * pointer,GLsizei count)67 static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
68         GLsizei stride, const GLvoid *pointer, GLsizei count) {
69     glVertexAttribIPointer(indx, size, type, stride, pointer);
70 }
71 #endif
72 }
73 
74 /* Cache method IDs each time the class is loaded. */
75 
76 static void
nativeClassInit(JNIEnv * _env,jclass glImplClass)77 nativeClassInit(JNIEnv *_env, jclass glImplClass)
78 {
79     jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
80     nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
81 
82     jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
83     bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
84 
85     getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
86             "getBasePointer", "(Ljava/nio/Buffer;)J");
87     getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
88             "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
89     getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
90             "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
91 
92     positionID = _env->GetFieldID(bufferClass, "position", "I");
93     limitID = _env->GetFieldID(bufferClass, "limit", "I");
94     elementSizeShiftID =
95         _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
96 }
97 
98 static void *
getPointer(JNIEnv * _env,jobject buffer,jarray * array,jint * remaining,jint * offset)99 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
100 {
101     jint position;
102     jint limit;
103     jint elementSizeShift;
104     jlong pointer;
105 
106     position = _env->GetIntField(buffer, positionID);
107     limit = _env->GetIntField(buffer, limitID);
108     elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
109     *remaining = (limit - position) << elementSizeShift;
110     pointer = _env->CallStaticLongMethod(nioAccessClass,
111             getBasePointerID, buffer);
112     if (pointer != 0L) {
113         *array = NULL;
114         return (void *) (jint) pointer;
115     }
116 
117     *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
118             getBaseArrayID, buffer);
119     *offset = _env->CallStaticIntMethod(nioAccessClass,
120             getBaseArrayOffsetID, buffer);
121 
122     return NULL;
123 }
124 
125 static void
releasePointer(JNIEnv * _env,jarray array,void * data,jboolean commit)126 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
127 {
128     _env->ReleasePrimitiveArrayCritical(array, data,
129                        commit ? 0 : JNI_ABORT);
130 }
131 
132 static void *
getDirectBufferPointer(JNIEnv * _env,jobject buffer)133 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
134     char* buf = (char*) _env->GetDirectBufferAddress(buffer);
135     if (buf) {
136         jint position = _env->GetIntField(buffer, positionID);
137         jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
138         buf += position << elementSizeShift;
139     } else {
140         jniThrowException(_env, "java/lang/IllegalArgumentException",
141                           "Must use a native order direct Buffer");
142     }
143     return (void*) buf;
144 }
145 
146 // --------------------------------------------------------------------------
147 
148 /*
149  * returns the number of values glGet returns for a given pname.
150  *
151  * The code below is written such that pnames requiring only one values
152  * are the default (and are not explicitely tested for). This makes the
153  * checking code much shorter/readable/efficient.
154  *
155  * This means that unknown pnames (e.g.: extensions) will default to 1. If
156  * that unknown pname needs more than 1 value, then the validation check
157  * is incomplete and the app may crash if it passed the wrong number params.
158  */
getNeededCount(GLint pname)159 static int getNeededCount(GLint pname) {
160     int needed = 1;
161 #ifdef GL_ES_VERSION_2_0
162     // GLES 2.x pnames
163     switch (pname) {
164         case GL_ALIASED_LINE_WIDTH_RANGE:
165         case GL_ALIASED_POINT_SIZE_RANGE:
166             needed = 2;
167             break;
168 
169         case GL_BLEND_COLOR:
170         case GL_COLOR_CLEAR_VALUE:
171         case GL_COLOR_WRITEMASK:
172         case GL_SCISSOR_BOX:
173         case GL_VIEWPORT:
174             needed = 4;
175             break;
176 
177         case GL_COMPRESSED_TEXTURE_FORMATS:
178             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
179             break;
180 
181         case GL_SHADER_BINARY_FORMATS:
182             glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
183             break;
184     }
185 #endif
186 
187 #ifdef GL_VERSION_ES_CM_1_1
188     // GLES 1.x pnames
189     switch (pname) {
190         case GL_ALIASED_LINE_WIDTH_RANGE:
191         case GL_ALIASED_POINT_SIZE_RANGE:
192         case GL_DEPTH_RANGE:
193         case GL_SMOOTH_LINE_WIDTH_RANGE:
194         case GL_SMOOTH_POINT_SIZE_RANGE:
195             needed = 2;
196             break;
197 
198         case GL_CURRENT_NORMAL:
199         case GL_POINT_DISTANCE_ATTENUATION:
200             needed = 3;
201             break;
202 
203         case GL_COLOR_CLEAR_VALUE:
204         case GL_COLOR_WRITEMASK:
205         case GL_CURRENT_COLOR:
206         case GL_CURRENT_TEXTURE_COORDS:
207         case GL_FOG_COLOR:
208         case GL_LIGHT_MODEL_AMBIENT:
209         case GL_SCISSOR_BOX:
210         case GL_VIEWPORT:
211             needed = 4;
212             break;
213 
214         case GL_MODELVIEW_MATRIX:
215         case GL_PROJECTION_MATRIX:
216         case GL_TEXTURE_MATRIX:
217             needed = 16;
218             break;
219 
220         case GL_COMPRESSED_TEXTURE_FORMATS:
221             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
222             break;
223     }
224 #endif
225     return needed;
226 }
227 
228 template <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
229 static void
get(JNIEnv * _env,jobject _this,jint pname,JTYPEARRAY params_ref,jint offset)230 get
231   (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
232     jint _exception = 0;
233     const char * _exceptionType;
234     const char * _exceptionMessage;
235     CTYPE *params_base = (CTYPE *) 0;
236     jint _remaining;
237     CTYPE *params = (CTYPE *) 0;
238     int _needed = 0;
239 
240     if (!params_ref) {
241         _exception = 1;
242         _exceptionType = "java/lang/IllegalArgumentException";
243         _exceptionMessage = "params == null";
244         goto exit;
245     }
246     if (offset < 0) {
247         _exception = 1;
248         _exceptionType = "java/lang/IllegalArgumentException";
249         _exceptionMessage = "offset < 0";
250         goto exit;
251     }
252     _remaining = _env->GetArrayLength(params_ref) - offset;
253     _needed = getNeededCount(pname);
254     // if we didn't find this pname, we just assume the user passed
255     // an array of the right size -- this might happen with extensions
256     // or if we forget an enum here.
257     if (_remaining < _needed) {
258         _exception = 1;
259         _exceptionType = "java/lang/IllegalArgumentException";
260         _exceptionMessage = "length - offset < needed";
261         goto exit;
262     }
263     params_base = (CTYPE *)
264         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
265     params = params_base + offset;
266 
267     GET(
268         (GLenum)pname,
269         (CTYPE *)params
270     );
271 
272 exit:
273     if (params_base) {
274         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
275             _exception ? JNI_ABORT: 0);
276     }
277     if (_exception) {
278         jniThrowException(_env, _exceptionType, _exceptionMessage);
279     }
280 }
281 
282 
283 template <typename CTYPE, void GET(GLenum, CTYPE*)>
284 static void
getarray(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)285 getarray
286   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
287     jint _exception = 0;
288     const char * _exceptionType;
289     const char * _exceptionMessage;
290     jarray _array = (jarray) 0;
291     jint _bufferOffset = (jint) 0;
292     jint _remaining;
293     CTYPE *params = (CTYPE *) 0;
294     int _needed = 0;
295 
296     params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
297     _needed = getNeededCount(pname);
298     // if we didn't find this pname, we just assume the user passed
299     // an array of the right size -- this might happen with extensions
300     // or if we forget an enum here.
301     if (_needed>0 && _remaining < _needed) {
302         _exception = 1;
303         _exceptionType = "java/lang/IllegalArgumentException";
304         _exceptionMessage = "remaining() < needed";
305         goto exit;
306     }
307     if (params == NULL) {
308         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
309         params = (CTYPE *) (_paramsBase + _bufferOffset);
310     }
311     GET(
312         (GLenum)pname,
313         (CTYPE *)params
314     );
315 
316 exit:
317     if (_array) {
318         releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
319     }
320     if (_exception) {
321         jniThrowException(_env, _exceptionType, _exceptionMessage);
322     }
323 }
324 
325 // --------------------------------------------------------------------------
326 /* void glReadBuffer ( GLenum mode ) */
327 static void
android_glReadBuffer__I(JNIEnv * _env,jobject _this,jint mode)328 android_glReadBuffer__I
329   (JNIEnv *_env, jobject _this, jint mode) {
330     glReadBuffer(
331         (GLenum)mode
332     );
333 }
334 
335 /* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) */
336 static void
android_glDrawRangeElements__IIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint mode,jint start,jint end,jint count,jint type,jobject indices_buf)337 android_glDrawRangeElements__IIIIILjava_nio_Buffer_2
338   (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf) {
339     jarray _array = (jarray) 0;
340     jint _bufferOffset = (jint) 0;
341     jint _remaining;
342     GLvoid *indices = (GLvoid *) 0;
343 
344     indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
345     if (indices == NULL) {
346         char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
347         indices = (GLvoid *) (_indicesBase + _bufferOffset);
348     }
349     glDrawRangeElements(
350         (GLenum)mode,
351         (GLuint)start,
352         (GLuint)end,
353         (GLsizei)count,
354         (GLenum)type,
355         (GLvoid *)indices
356     );
357     if (_array) {
358         releasePointer(_env, _array, indices, JNI_FALSE);
359     }
360 }
361 
362 /* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLsizei offset ) */
363 static void
android_glDrawRangeElements__IIIIII(JNIEnv * _env,jobject _this,jint mode,jint start,jint end,jint count,jint type,jint offset)364 android_glDrawRangeElements__IIIIII
365   (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jint offset) {
366     glDrawRangeElements(
367         (GLenum)mode,
368         (GLuint)start,
369         (GLuint)end,
370         (GLsizei)count,
371         (GLenum)type,
372         (GLvoid *)offset
373     );
374 }
375 
376 /* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
377 static void
android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint width,jint height,jint depth,jint border,jint format,jint type,jobject pixels_buf)378 android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2
379   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jobject pixels_buf) {
380     jarray _array = (jarray) 0;
381     jint _bufferOffset = (jint) 0;
382     jint _remaining;
383     GLvoid *pixels = (GLvoid *) 0;
384 
385     pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
386     if (pixels == NULL) {
387         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
388         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
389     }
390     glTexImage3D(
391         (GLenum)target,
392         (GLint)level,
393         (GLint)internalformat,
394         (GLsizei)width,
395         (GLsizei)height,
396         (GLsizei)depth,
397         (GLint)border,
398         (GLenum)format,
399         (GLenum)type,
400         (GLvoid *)pixels
401     );
402     if (_array) {
403         releasePointer(_env, _array, pixels, JNI_FALSE);
404     }
405 }
406 
407 /* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLsizei offset ) */
408 static void
android_glTexImage3D__IIIIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint width,jint height,jint depth,jint border,jint format,jint type,jint offset)409 android_glTexImage3D__IIIIIIIIII
410   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jint offset) {
411     glTexImage3D(
412         (GLenum)target,
413         (GLint)level,
414         (GLint)internalformat,
415         (GLsizei)width,
416         (GLsizei)height,
417         (GLsizei)depth,
418         (GLint)border,
419         (GLenum)format,
420         (GLenum)type,
421         (GLvoid *)offset
422     );
423 }
424 
425 /* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels ) */
426 static void
android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint zoffset,jint width,jint height,jint depth,jint format,jint type,jobject pixels_buf)427 android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2
428   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jobject pixels_buf) {
429     jarray _array = (jarray) 0;
430     jint _bufferOffset = (jint) 0;
431     jint _remaining;
432     GLvoid *pixels = (GLvoid *) 0;
433 
434     pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
435     if (pixels == NULL) {
436         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
437         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
438     }
439     glTexSubImage3D(
440         (GLenum)target,
441         (GLint)level,
442         (GLint)xoffset,
443         (GLint)yoffset,
444         (GLint)zoffset,
445         (GLsizei)width,
446         (GLsizei)height,
447         (GLsizei)depth,
448         (GLenum)format,
449         (GLenum)type,
450         (GLvoid *)pixels
451     );
452     if (_array) {
453         releasePointer(_env, _array, pixels, JNI_FALSE);
454     }
455 }
456 
457 /* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei offset ) */
458 static void
android_glTexSubImage3D__IIIIIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint zoffset,jint width,jint height,jint depth,jint format,jint type,jint offset)459 android_glTexSubImage3D__IIIIIIIIIII
460   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jint offset) {
461     glTexSubImage3D(
462         (GLenum)target,
463         (GLint)level,
464         (GLint)xoffset,
465         (GLint)yoffset,
466         (GLint)zoffset,
467         (GLsizei)width,
468         (GLsizei)height,
469         (GLsizei)depth,
470         (GLenum)format,
471         (GLenum)type,
472         (GLvoid *)offset
473     );
474 }
475 
476 /* void glCopyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
477 static void
android_glCopyTexSubImage3D__IIIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint zoffset,jint x,jint y,jint width,jint height)478 android_glCopyTexSubImage3D__IIIIIIIII
479   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) {
480     glCopyTexSubImage3D(
481         (GLenum)target,
482         (GLint)level,
483         (GLint)xoffset,
484         (GLint)yoffset,
485         (GLint)zoffset,
486         (GLint)x,
487         (GLint)y,
488         (GLsizei)width,
489         (GLsizei)height
490     );
491 }
492 
493 /* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) */
494 static void
android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint width,jint height,jint depth,jint border,jint imageSize,jobject data_buf)495 android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2
496   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jobject data_buf) {
497     jarray _array = (jarray) 0;
498     jint _bufferOffset = (jint) 0;
499     jint _remaining;
500     GLvoid *data = (GLvoid *) 0;
501 
502     data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
503     if (data == NULL) {
504         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
505         data = (GLvoid *) (_dataBase + _bufferOffset);
506     }
507     glCompressedTexImage3D(
508         (GLenum)target,
509         (GLint)level,
510         (GLenum)internalformat,
511         (GLsizei)width,
512         (GLsizei)height,
513         (GLsizei)depth,
514         (GLint)border,
515         (GLsizei)imageSize,
516         (GLvoid *)data
517     );
518     if (_array) {
519         releasePointer(_env, _array, data, JNI_FALSE);
520     }
521 }
522 
523 /* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLsizei offset ) */
524 static void
android_glCompressedTexImage3D__IIIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint width,jint height,jint depth,jint border,jint imageSize,jint offset)525 android_glCompressedTexImage3D__IIIIIIIII
526   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jint offset) {
527     glCompressedTexImage3D(
528         (GLenum)target,
529         (GLint)level,
530         (GLenum)internalformat,
531         (GLsizei)width,
532         (GLsizei)height,
533         (GLsizei)depth,
534         (GLint)border,
535         (GLsizei)imageSize,
536         (GLvoid *)offset
537     );
538 }
539 
540 /* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ) */
541 static void
android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint zoffset,jint width,jint height,jint depth,jint format,jint imageSize,jobject data_buf)542 android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2
543   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jobject data_buf) {
544     jarray _array = (jarray) 0;
545     jint _bufferOffset = (jint) 0;
546     jint _remaining;
547     GLvoid *data = (GLvoid *) 0;
548 
549     data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
550     if (data == NULL) {
551         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
552         data = (GLvoid *) (_dataBase + _bufferOffset);
553     }
554     glCompressedTexSubImage3D(
555         (GLenum)target,
556         (GLint)level,
557         (GLint)xoffset,
558         (GLint)yoffset,
559         (GLint)zoffset,
560         (GLsizei)width,
561         (GLsizei)height,
562         (GLsizei)depth,
563         (GLenum)format,
564         (GLsizei)imageSize,
565         (GLvoid *)data
566     );
567     if (_array) {
568         releasePointer(_env, _array, data, JNI_FALSE);
569     }
570 }
571 
572 /* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLsizei offset ) */
573 static void
android_glCompressedTexSubImage3D__IIIIIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint zoffset,jint width,jint height,jint depth,jint format,jint imageSize,jint offset)574 android_glCompressedTexSubImage3D__IIIIIIIIIII
575   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jint offset) {
576     glCompressedTexSubImage3D(
577         (GLenum)target,
578         (GLint)level,
579         (GLint)xoffset,
580         (GLint)yoffset,
581         (GLint)zoffset,
582         (GLsizei)width,
583         (GLsizei)height,
584         (GLsizei)depth,
585         (GLenum)format,
586         (GLsizei)imageSize,
587         (GLvoid *)offset
588     );
589 }
590 
591 /* void glGenQueries ( GLsizei n, GLuint *ids ) */
592 static void
android_glGenQueries__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray ids_ref,jint offset)593 android_glGenQueries__I_3II
594   (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
595     jint _exception = 0;
596     const char * _exceptionType = NULL;
597     const char * _exceptionMessage = NULL;
598     GLuint *ids_base = (GLuint *) 0;
599     jint _remaining;
600     GLuint *ids = (GLuint *) 0;
601 
602     if (!ids_ref) {
603         _exception = 1;
604         _exceptionType = "java/lang/IllegalArgumentException";
605         _exceptionMessage = "ids == null";
606         goto exit;
607     }
608     if (offset < 0) {
609         _exception = 1;
610         _exceptionType = "java/lang/IllegalArgumentException";
611         _exceptionMessage = "offset < 0";
612         goto exit;
613     }
614     _remaining = _env->GetArrayLength(ids_ref) - offset;
615     ids_base = (GLuint *)
616         _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
617     ids = ids_base + offset;
618 
619     glGenQueries(
620         (GLsizei)n,
621         (GLuint *)ids
622     );
623 
624 exit:
625     if (ids_base) {
626         _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
627             _exception ? JNI_ABORT: 0);
628     }
629     if (_exception) {
630         jniThrowException(_env, _exceptionType, _exceptionMessage);
631     }
632 }
633 
634 /* void glGenQueries ( GLsizei n, GLuint *ids ) */
635 static void
android_glGenQueries__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject ids_buf)636 android_glGenQueries__ILjava_nio_IntBuffer_2
637   (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
638     jarray _array = (jarray) 0;
639     jint _bufferOffset = (jint) 0;
640     jint _remaining;
641     GLuint *ids = (GLuint *) 0;
642 
643     ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
644     if (ids == NULL) {
645         char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
646         ids = (GLuint *) (_idsBase + _bufferOffset);
647     }
648     glGenQueries(
649         (GLsizei)n,
650         (GLuint *)ids
651     );
652     if (_array) {
653         releasePointer(_env, _array, ids, JNI_TRUE);
654     }
655 }
656 
657 /* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */
658 static void
android_glDeleteQueries__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray ids_ref,jint offset)659 android_glDeleteQueries__I_3II
660   (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
661     jint _exception = 0;
662     const char * _exceptionType = NULL;
663     const char * _exceptionMessage = NULL;
664     GLuint *ids_base = (GLuint *) 0;
665     jint _remaining;
666     GLuint *ids = (GLuint *) 0;
667 
668     if (!ids_ref) {
669         _exception = 1;
670         _exceptionType = "java/lang/IllegalArgumentException";
671         _exceptionMessage = "ids == null";
672         goto exit;
673     }
674     if (offset < 0) {
675         _exception = 1;
676         _exceptionType = "java/lang/IllegalArgumentException";
677         _exceptionMessage = "offset < 0";
678         goto exit;
679     }
680     _remaining = _env->GetArrayLength(ids_ref) - offset;
681     ids_base = (GLuint *)
682         _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
683     ids = ids_base + offset;
684 
685     glDeleteQueries(
686         (GLsizei)n,
687         (GLuint *)ids
688     );
689 
690 exit:
691     if (ids_base) {
692         _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
693             JNI_ABORT);
694     }
695     if (_exception) {
696         jniThrowException(_env, _exceptionType, _exceptionMessage);
697     }
698 }
699 
700 /* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */
701 static void
android_glDeleteQueries__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject ids_buf)702 android_glDeleteQueries__ILjava_nio_IntBuffer_2
703   (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
704     jarray _array = (jarray) 0;
705     jint _bufferOffset = (jint) 0;
706     jint _remaining;
707     GLuint *ids = (GLuint *) 0;
708 
709     ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
710     if (ids == NULL) {
711         char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
712         ids = (GLuint *) (_idsBase + _bufferOffset);
713     }
714     glDeleteQueries(
715         (GLsizei)n,
716         (GLuint *)ids
717     );
718     if (_array) {
719         releasePointer(_env, _array, ids, JNI_FALSE);
720     }
721 }
722 
723 /* GLboolean glIsQuery ( GLuint id ) */
724 static jboolean
android_glIsQuery__I(JNIEnv * _env,jobject _this,jint id)725 android_glIsQuery__I
726   (JNIEnv *_env, jobject _this, jint id) {
727     GLboolean _returnValue;
728     _returnValue = glIsQuery(
729         (GLuint)id
730     );
731     return (jboolean)_returnValue;
732 }
733 
734 /* void glBeginQuery ( GLenum target, GLuint id ) */
735 static void
android_glBeginQuery__II(JNIEnv * _env,jobject _this,jint target,jint id)736 android_glBeginQuery__II
737   (JNIEnv *_env, jobject _this, jint target, jint id) {
738     glBeginQuery(
739         (GLenum)target,
740         (GLuint)id
741     );
742 }
743 
744 /* void glEndQuery ( GLenum target ) */
745 static void
android_glEndQuery__I(JNIEnv * _env,jobject _this,jint target)746 android_glEndQuery__I
747   (JNIEnv *_env, jobject _this, jint target) {
748     glEndQuery(
749         (GLenum)target
750     );
751 }
752 
753 /* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */
754 static void
android_glGetQueryiv__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)755 android_glGetQueryiv__II_3II
756   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
757     jint _exception = 0;
758     const char * _exceptionType = NULL;
759     const char * _exceptionMessage = NULL;
760     GLint *params_base = (GLint *) 0;
761     jint _remaining;
762     GLint *params = (GLint *) 0;
763 
764     if (!params_ref) {
765         _exception = 1;
766         _exceptionType = "java/lang/IllegalArgumentException";
767         _exceptionMessage = "params == null";
768         goto exit;
769     }
770     if (offset < 0) {
771         _exception = 1;
772         _exceptionType = "java/lang/IllegalArgumentException";
773         _exceptionMessage = "offset < 0";
774         goto exit;
775     }
776     _remaining = _env->GetArrayLength(params_ref) - offset;
777     params_base = (GLint *)
778         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
779     params = params_base + offset;
780 
781     glGetQueryiv(
782         (GLenum)target,
783         (GLenum)pname,
784         (GLint *)params
785     );
786 
787 exit:
788     if (params_base) {
789         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
790             _exception ? JNI_ABORT: 0);
791     }
792     if (_exception) {
793         jniThrowException(_env, _exceptionType, _exceptionMessage);
794     }
795 }
796 
797 /* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */
798 static void
android_glGetQueryiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)799 android_glGetQueryiv__IILjava_nio_IntBuffer_2
800   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
801     jarray _array = (jarray) 0;
802     jint _bufferOffset = (jint) 0;
803     jint _remaining;
804     GLint *params = (GLint *) 0;
805 
806     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
807     if (params == NULL) {
808         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
809         params = (GLint *) (_paramsBase + _bufferOffset);
810     }
811     glGetQueryiv(
812         (GLenum)target,
813         (GLenum)pname,
814         (GLint *)params
815     );
816     if (_array) {
817         releasePointer(_env, _array, params, JNI_TRUE);
818     }
819 }
820 
821 /* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */
822 static void
android_glGetQueryObjectuiv__II_3II(JNIEnv * _env,jobject _this,jint id,jint pname,jintArray params_ref,jint offset)823 android_glGetQueryObjectuiv__II_3II
824   (JNIEnv *_env, jobject _this, jint id, jint pname, jintArray params_ref, jint offset) {
825     jint _exception = 0;
826     const char * _exceptionType = NULL;
827     const char * _exceptionMessage = NULL;
828     GLuint *params_base = (GLuint *) 0;
829     jint _remaining;
830     GLuint *params = (GLuint *) 0;
831 
832     if (!params_ref) {
833         _exception = 1;
834         _exceptionType = "java/lang/IllegalArgumentException";
835         _exceptionMessage = "params == null";
836         goto exit;
837     }
838     if (offset < 0) {
839         _exception = 1;
840         _exceptionType = "java/lang/IllegalArgumentException";
841         _exceptionMessage = "offset < 0";
842         goto exit;
843     }
844     _remaining = _env->GetArrayLength(params_ref) - offset;
845     params_base = (GLuint *)
846         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
847     params = params_base + offset;
848 
849     glGetQueryObjectuiv(
850         (GLuint)id,
851         (GLenum)pname,
852         (GLuint *)params
853     );
854 
855 exit:
856     if (params_base) {
857         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
858             _exception ? JNI_ABORT: 0);
859     }
860     if (_exception) {
861         jniThrowException(_env, _exceptionType, _exceptionMessage);
862     }
863 }
864 
865 /* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */
866 static void
android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint id,jint pname,jobject params_buf)867 android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2
868   (JNIEnv *_env, jobject _this, jint id, jint pname, jobject params_buf) {
869     jarray _array = (jarray) 0;
870     jint _bufferOffset = (jint) 0;
871     jint _remaining;
872     GLuint *params = (GLuint *) 0;
873 
874     params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
875     if (params == NULL) {
876         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
877         params = (GLuint *) (_paramsBase + _bufferOffset);
878     }
879     glGetQueryObjectuiv(
880         (GLuint)id,
881         (GLenum)pname,
882         (GLuint *)params
883     );
884     if (_array) {
885         releasePointer(_env, _array, params, JNI_TRUE);
886     }
887 }
888 
889 /* GLboolean glUnmapBuffer ( GLenum target ) */
890 static jboolean
android_glUnmapBuffer__I(JNIEnv * _env,jobject _this,jint target)891 android_glUnmapBuffer__I
892   (JNIEnv *_env, jobject _this, jint target) {
893     GLboolean _returnValue;
894     _returnValue = glUnmapBuffer(
895         (GLenum)target
896     );
897     return (jboolean)_returnValue;
898 }
899 
900 /* void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) */
901 static jobject
android_glGetBufferPointerv__II(JNIEnv * _env,jobject _this,jint target,jint pname)902 android_glGetBufferPointerv__II
903   (JNIEnv *_env, jobject _this, jint target, jint pname) {
904     GLint64 _mapLength;
905     GLvoid* _p;
906     glGetBufferParameteri64v((GLenum)target, GL_BUFFER_MAP_LENGTH, &_mapLength);
907     glGetBufferPointerv((GLenum)target, (GLenum)pname, &_p);
908     return _env->NewDirectByteBuffer(_p, _mapLength);
909 }
910 
911 /* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */
912 static void
android_glDrawBuffers__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray bufs_ref,jint offset)913 android_glDrawBuffers__I_3II
914   (JNIEnv *_env, jobject _this, jint n, jintArray bufs_ref, jint offset) {
915     jint _exception = 0;
916     const char * _exceptionType = NULL;
917     const char * _exceptionMessage = NULL;
918     GLenum *bufs_base = (GLenum *) 0;
919     jint _remaining;
920     GLenum *bufs = (GLenum *) 0;
921 
922     if (!bufs_ref) {
923         _exception = 1;
924         _exceptionType = "java/lang/IllegalArgumentException";
925         _exceptionMessage = "bufs == null";
926         goto exit;
927     }
928     if (offset < 0) {
929         _exception = 1;
930         _exceptionType = "java/lang/IllegalArgumentException";
931         _exceptionMessage = "offset < 0";
932         goto exit;
933     }
934     _remaining = _env->GetArrayLength(bufs_ref) - offset;
935     bufs_base = (GLenum *)
936         _env->GetPrimitiveArrayCritical(bufs_ref, (jboolean *)0);
937     bufs = bufs_base + offset;
938 
939     glDrawBuffers(
940         (GLsizei)n,
941         (GLenum *)bufs
942     );
943 
944 exit:
945     if (bufs_base) {
946         _env->ReleasePrimitiveArrayCritical(bufs_ref, bufs_base,
947             JNI_ABORT);
948     }
949     if (_exception) {
950         jniThrowException(_env, _exceptionType, _exceptionMessage);
951     }
952 }
953 
954 /* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */
955 static void
android_glDrawBuffers__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject bufs_buf)956 android_glDrawBuffers__ILjava_nio_IntBuffer_2
957   (JNIEnv *_env, jobject _this, jint n, jobject bufs_buf) {
958     jarray _array = (jarray) 0;
959     jint _bufferOffset = (jint) 0;
960     jint _remaining;
961     GLenum *bufs = (GLenum *) 0;
962 
963     bufs = (GLenum *)getPointer(_env, bufs_buf, &_array, &_remaining, &_bufferOffset);
964     if (bufs == NULL) {
965         char * _bufsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
966         bufs = (GLenum *) (_bufsBase + _bufferOffset);
967     }
968     glDrawBuffers(
969         (GLsizei)n,
970         (GLenum *)bufs
971     );
972     if (_array) {
973         releasePointer(_env, _array, bufs, JNI_FALSE);
974     }
975 }
976 
977 /* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
978 static void
android_glUniformMatrix2x3fv__IIZ_3FI(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)979 android_glUniformMatrix2x3fv__IIZ_3FI
980   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
981     jint _exception = 0;
982     const char * _exceptionType = NULL;
983     const char * _exceptionMessage = NULL;
984     GLfloat *value_base = (GLfloat *) 0;
985     jint _remaining;
986     GLfloat *value = (GLfloat *) 0;
987 
988     if (!value_ref) {
989         _exception = 1;
990         _exceptionType = "java/lang/IllegalArgumentException";
991         _exceptionMessage = "value == null";
992         goto exit;
993     }
994     if (offset < 0) {
995         _exception = 1;
996         _exceptionType = "java/lang/IllegalArgumentException";
997         _exceptionMessage = "offset < 0";
998         goto exit;
999     }
1000     _remaining = _env->GetArrayLength(value_ref) - offset;
1001     value_base = (GLfloat *)
1002         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1003     value = value_base + offset;
1004 
1005     glUniformMatrix2x3fv(
1006         (GLint)location,
1007         (GLsizei)count,
1008         (GLboolean)transpose,
1009         (GLfloat *)value
1010     );
1011 
1012 exit:
1013     if (value_base) {
1014         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1015             JNI_ABORT);
1016     }
1017     if (_exception) {
1018         jniThrowException(_env, _exceptionType, _exceptionMessage);
1019     }
1020 }
1021 
1022 /* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1023 static void
android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jobject value_buf)1024 android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2
1025   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1026     jarray _array = (jarray) 0;
1027     jint _bufferOffset = (jint) 0;
1028     jint _remaining;
1029     GLfloat *value = (GLfloat *) 0;
1030 
1031     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1032     if (value == NULL) {
1033         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1034         value = (GLfloat *) (_valueBase + _bufferOffset);
1035     }
1036     glUniformMatrix2x3fv(
1037         (GLint)location,
1038         (GLsizei)count,
1039         (GLboolean)transpose,
1040         (GLfloat *)value
1041     );
1042     if (_array) {
1043         releasePointer(_env, _array, value, JNI_FALSE);
1044     }
1045 }
1046 
1047 /* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1048 static void
android_glUniformMatrix3x2fv__IIZ_3FI(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)1049 android_glUniformMatrix3x2fv__IIZ_3FI
1050   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1051     jint _exception = 0;
1052     const char * _exceptionType = NULL;
1053     const char * _exceptionMessage = NULL;
1054     GLfloat *value_base = (GLfloat *) 0;
1055     jint _remaining;
1056     GLfloat *value = (GLfloat *) 0;
1057 
1058     if (!value_ref) {
1059         _exception = 1;
1060         _exceptionType = "java/lang/IllegalArgumentException";
1061         _exceptionMessage = "value == null";
1062         goto exit;
1063     }
1064     if (offset < 0) {
1065         _exception = 1;
1066         _exceptionType = "java/lang/IllegalArgumentException";
1067         _exceptionMessage = "offset < 0";
1068         goto exit;
1069     }
1070     _remaining = _env->GetArrayLength(value_ref) - offset;
1071     value_base = (GLfloat *)
1072         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1073     value = value_base + offset;
1074 
1075     glUniformMatrix3x2fv(
1076         (GLint)location,
1077         (GLsizei)count,
1078         (GLboolean)transpose,
1079         (GLfloat *)value
1080     );
1081 
1082 exit:
1083     if (value_base) {
1084         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1085             JNI_ABORT);
1086     }
1087     if (_exception) {
1088         jniThrowException(_env, _exceptionType, _exceptionMessage);
1089     }
1090 }
1091 
1092 /* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1093 static void
android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jobject value_buf)1094 android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2
1095   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1096     jarray _array = (jarray) 0;
1097     jint _bufferOffset = (jint) 0;
1098     jint _remaining;
1099     GLfloat *value = (GLfloat *) 0;
1100 
1101     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1102     if (value == NULL) {
1103         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1104         value = (GLfloat *) (_valueBase + _bufferOffset);
1105     }
1106     glUniformMatrix3x2fv(
1107         (GLint)location,
1108         (GLsizei)count,
1109         (GLboolean)transpose,
1110         (GLfloat *)value
1111     );
1112     if (_array) {
1113         releasePointer(_env, _array, value, JNI_FALSE);
1114     }
1115 }
1116 
1117 /* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1118 static void
android_glUniformMatrix2x4fv__IIZ_3FI(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)1119 android_glUniformMatrix2x4fv__IIZ_3FI
1120   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1121     jint _exception = 0;
1122     const char * _exceptionType = NULL;
1123     const char * _exceptionMessage = NULL;
1124     GLfloat *value_base = (GLfloat *) 0;
1125     jint _remaining;
1126     GLfloat *value = (GLfloat *) 0;
1127 
1128     if (!value_ref) {
1129         _exception = 1;
1130         _exceptionType = "java/lang/IllegalArgumentException";
1131         _exceptionMessage = "value == null";
1132         goto exit;
1133     }
1134     if (offset < 0) {
1135         _exception = 1;
1136         _exceptionType = "java/lang/IllegalArgumentException";
1137         _exceptionMessage = "offset < 0";
1138         goto exit;
1139     }
1140     _remaining = _env->GetArrayLength(value_ref) - offset;
1141     value_base = (GLfloat *)
1142         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1143     value = value_base + offset;
1144 
1145     glUniformMatrix2x4fv(
1146         (GLint)location,
1147         (GLsizei)count,
1148         (GLboolean)transpose,
1149         (GLfloat *)value
1150     );
1151 
1152 exit:
1153     if (value_base) {
1154         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1155             JNI_ABORT);
1156     }
1157     if (_exception) {
1158         jniThrowException(_env, _exceptionType, _exceptionMessage);
1159     }
1160 }
1161 
1162 /* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1163 static void
android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jobject value_buf)1164 android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2
1165   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1166     jarray _array = (jarray) 0;
1167     jint _bufferOffset = (jint) 0;
1168     jint _remaining;
1169     GLfloat *value = (GLfloat *) 0;
1170 
1171     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1172     if (value == NULL) {
1173         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1174         value = (GLfloat *) (_valueBase + _bufferOffset);
1175     }
1176     glUniformMatrix2x4fv(
1177         (GLint)location,
1178         (GLsizei)count,
1179         (GLboolean)transpose,
1180         (GLfloat *)value
1181     );
1182     if (_array) {
1183         releasePointer(_env, _array, value, JNI_FALSE);
1184     }
1185 }
1186 
1187 /* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1188 static void
android_glUniformMatrix4x2fv__IIZ_3FI(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)1189 android_glUniformMatrix4x2fv__IIZ_3FI
1190   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1191     jint _exception = 0;
1192     const char * _exceptionType = NULL;
1193     const char * _exceptionMessage = NULL;
1194     GLfloat *value_base = (GLfloat *) 0;
1195     jint _remaining;
1196     GLfloat *value = (GLfloat *) 0;
1197 
1198     if (!value_ref) {
1199         _exception = 1;
1200         _exceptionType = "java/lang/IllegalArgumentException";
1201         _exceptionMessage = "value == null";
1202         goto exit;
1203     }
1204     if (offset < 0) {
1205         _exception = 1;
1206         _exceptionType = "java/lang/IllegalArgumentException";
1207         _exceptionMessage = "offset < 0";
1208         goto exit;
1209     }
1210     _remaining = _env->GetArrayLength(value_ref) - offset;
1211     value_base = (GLfloat *)
1212         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1213     value = value_base + offset;
1214 
1215     glUniformMatrix4x2fv(
1216         (GLint)location,
1217         (GLsizei)count,
1218         (GLboolean)transpose,
1219         (GLfloat *)value
1220     );
1221 
1222 exit:
1223     if (value_base) {
1224         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1225             JNI_ABORT);
1226     }
1227     if (_exception) {
1228         jniThrowException(_env, _exceptionType, _exceptionMessage);
1229     }
1230 }
1231 
1232 /* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1233 static void
android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jobject value_buf)1234 android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2
1235   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1236     jarray _array = (jarray) 0;
1237     jint _bufferOffset = (jint) 0;
1238     jint _remaining;
1239     GLfloat *value = (GLfloat *) 0;
1240 
1241     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1242     if (value == NULL) {
1243         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1244         value = (GLfloat *) (_valueBase + _bufferOffset);
1245     }
1246     glUniformMatrix4x2fv(
1247         (GLint)location,
1248         (GLsizei)count,
1249         (GLboolean)transpose,
1250         (GLfloat *)value
1251     );
1252     if (_array) {
1253         releasePointer(_env, _array, value, JNI_FALSE);
1254     }
1255 }
1256 
1257 /* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1258 static void
android_glUniformMatrix3x4fv__IIZ_3FI(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)1259 android_glUniformMatrix3x4fv__IIZ_3FI
1260   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1261     jint _exception = 0;
1262     const char * _exceptionType = NULL;
1263     const char * _exceptionMessage = NULL;
1264     GLfloat *value_base = (GLfloat *) 0;
1265     jint _remaining;
1266     GLfloat *value = (GLfloat *) 0;
1267 
1268     if (!value_ref) {
1269         _exception = 1;
1270         _exceptionType = "java/lang/IllegalArgumentException";
1271         _exceptionMessage = "value == null";
1272         goto exit;
1273     }
1274     if (offset < 0) {
1275         _exception = 1;
1276         _exceptionType = "java/lang/IllegalArgumentException";
1277         _exceptionMessage = "offset < 0";
1278         goto exit;
1279     }
1280     _remaining = _env->GetArrayLength(value_ref) - offset;
1281     value_base = (GLfloat *)
1282         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1283     value = value_base + offset;
1284 
1285     glUniformMatrix3x4fv(
1286         (GLint)location,
1287         (GLsizei)count,
1288         (GLboolean)transpose,
1289         (GLfloat *)value
1290     );
1291 
1292 exit:
1293     if (value_base) {
1294         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1295             JNI_ABORT);
1296     }
1297     if (_exception) {
1298         jniThrowException(_env, _exceptionType, _exceptionMessage);
1299     }
1300 }
1301 
1302 /* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1303 static void
android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jobject value_buf)1304 android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2
1305   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1306     jarray _array = (jarray) 0;
1307     jint _bufferOffset = (jint) 0;
1308     jint _remaining;
1309     GLfloat *value = (GLfloat *) 0;
1310 
1311     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1312     if (value == NULL) {
1313         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1314         value = (GLfloat *) (_valueBase + _bufferOffset);
1315     }
1316     glUniformMatrix3x4fv(
1317         (GLint)location,
1318         (GLsizei)count,
1319         (GLboolean)transpose,
1320         (GLfloat *)value
1321     );
1322     if (_array) {
1323         releasePointer(_env, _array, value, JNI_FALSE);
1324     }
1325 }
1326 
1327 /* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1328 static void
android_glUniformMatrix4x3fv__IIZ_3FI(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)1329 android_glUniformMatrix4x3fv__IIZ_3FI
1330   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1331     jint _exception = 0;
1332     const char * _exceptionType = NULL;
1333     const char * _exceptionMessage = NULL;
1334     GLfloat *value_base = (GLfloat *) 0;
1335     jint _remaining;
1336     GLfloat *value = (GLfloat *) 0;
1337 
1338     if (!value_ref) {
1339         _exception = 1;
1340         _exceptionType = "java/lang/IllegalArgumentException";
1341         _exceptionMessage = "value == null";
1342         goto exit;
1343     }
1344     if (offset < 0) {
1345         _exception = 1;
1346         _exceptionType = "java/lang/IllegalArgumentException";
1347         _exceptionMessage = "offset < 0";
1348         goto exit;
1349     }
1350     _remaining = _env->GetArrayLength(value_ref) - offset;
1351     value_base = (GLfloat *)
1352         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1353     value = value_base + offset;
1354 
1355     glUniformMatrix4x3fv(
1356         (GLint)location,
1357         (GLsizei)count,
1358         (GLboolean)transpose,
1359         (GLfloat *)value
1360     );
1361 
1362 exit:
1363     if (value_base) {
1364         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1365             JNI_ABORT);
1366     }
1367     if (_exception) {
1368         jniThrowException(_env, _exceptionType, _exceptionMessage);
1369     }
1370 }
1371 
1372 /* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1373 static void
android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jboolean transpose,jobject value_buf)1374 android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2
1375   (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1376     jarray _array = (jarray) 0;
1377     jint _bufferOffset = (jint) 0;
1378     jint _remaining;
1379     GLfloat *value = (GLfloat *) 0;
1380 
1381     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1382     if (value == NULL) {
1383         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1384         value = (GLfloat *) (_valueBase + _bufferOffset);
1385     }
1386     glUniformMatrix4x3fv(
1387         (GLint)location,
1388         (GLsizei)count,
1389         (GLboolean)transpose,
1390         (GLfloat *)value
1391     );
1392     if (_array) {
1393         releasePointer(_env, _array, value, JNI_FALSE);
1394     }
1395 }
1396 
1397 /* void glBlitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) */
1398 static void
android_glBlitFramebuffer__IIIIIIIIII(JNIEnv * _env,jobject _this,jint srcX0,jint srcY0,jint srcX1,jint srcY1,jint dstX0,jint dstY0,jint dstX1,jint dstY1,jint mask,jint filter)1399 android_glBlitFramebuffer__IIIIIIIIII
1400   (JNIEnv *_env, jobject _this, jint srcX0, jint srcY0, jint srcX1, jint srcY1, jint dstX0, jint dstY0, jint dstX1, jint dstY1, jint mask, jint filter) {
1401     glBlitFramebuffer(
1402         (GLint)srcX0,
1403         (GLint)srcY0,
1404         (GLint)srcX1,
1405         (GLint)srcY1,
1406         (GLint)dstX0,
1407         (GLint)dstY0,
1408         (GLint)dstX1,
1409         (GLint)dstY1,
1410         (GLbitfield)mask,
1411         (GLenum)filter
1412     );
1413 }
1414 
1415 /* void glRenderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) */
1416 static void
android_glRenderbufferStorageMultisample__IIIII(JNIEnv * _env,jobject _this,jint target,jint samples,jint internalformat,jint width,jint height)1417 android_glRenderbufferStorageMultisample__IIIII
1418   (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height) {
1419     glRenderbufferStorageMultisample(
1420         (GLenum)target,
1421         (GLsizei)samples,
1422         (GLenum)internalformat,
1423         (GLsizei)width,
1424         (GLsizei)height
1425     );
1426 }
1427 
1428 /* void glFramebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) */
1429 static void
android_glFramebufferTextureLayer__IIIII(JNIEnv * _env,jobject _this,jint target,jint attachment,jint texture,jint level,jint layer)1430 android_glFramebufferTextureLayer__IIIII
1431   (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level, jint layer) {
1432     glFramebufferTextureLayer(
1433         (GLenum)target,
1434         (GLenum)attachment,
1435         (GLuint)texture,
1436         (GLint)level,
1437         (GLint)layer
1438     );
1439 }
1440 
1441 /* GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) */
1442 static jobject
android_glMapBufferRange__IIII(JNIEnv * _env,jobject _this,jint target,jint offset,jint length,jint access)1443 android_glMapBufferRange__IIII
1444   (JNIEnv *_env, jobject _this, jint target, jint offset, jint length, jint access) {
1445     GLvoid* _p = glMapBufferRange((GLenum)target,
1446             (GLintptr)offset, (GLsizeiptr)length, (GLbitfield)access);
1447     jobject _buf = (jobject)0;
1448     if (_p) {
1449         _buf = _env->NewDirectByteBuffer(_p, length);
1450     }
1451     return _buf;
1452 }
1453 
1454 /* void glFlushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) */
1455 static void
android_glFlushMappedBufferRange__III(JNIEnv * _env,jobject _this,jint target,jint offset,jint length)1456 android_glFlushMappedBufferRange__III
1457   (JNIEnv *_env, jobject _this, jint target, jint offset, jint length) {
1458     glFlushMappedBufferRange(
1459         (GLenum)target,
1460         (GLintptr)offset,
1461         (GLsizeiptr)length
1462     );
1463 }
1464 
1465 /* void glBindVertexArray ( GLuint array ) */
1466 static void
android_glBindVertexArray__I(JNIEnv * _env,jobject _this,jint array)1467 android_glBindVertexArray__I
1468   (JNIEnv *_env, jobject _this, jint array) {
1469     glBindVertexArray(
1470         (GLuint)array
1471     );
1472 }
1473 
1474 /* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */
1475 static void
android_glDeleteVertexArrays__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray arrays_ref,jint offset)1476 android_glDeleteVertexArrays__I_3II
1477   (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) {
1478     jint _exception = 0;
1479     const char * _exceptionType = NULL;
1480     const char * _exceptionMessage = NULL;
1481     GLuint *arrays_base = (GLuint *) 0;
1482     jint _remaining;
1483     GLuint *arrays = (GLuint *) 0;
1484 
1485     if (!arrays_ref) {
1486         _exception = 1;
1487         _exceptionType = "java/lang/IllegalArgumentException";
1488         _exceptionMessage = "arrays == null";
1489         goto exit;
1490     }
1491     if (offset < 0) {
1492         _exception = 1;
1493         _exceptionType = "java/lang/IllegalArgumentException";
1494         _exceptionMessage = "offset < 0";
1495         goto exit;
1496     }
1497     _remaining = _env->GetArrayLength(arrays_ref) - offset;
1498     arrays_base = (GLuint *)
1499         _env->GetPrimitiveArrayCritical(arrays_ref, (jboolean *)0);
1500     arrays = arrays_base + offset;
1501 
1502     glDeleteVertexArrays(
1503         (GLsizei)n,
1504         (GLuint *)arrays
1505     );
1506 
1507 exit:
1508     if (arrays_base) {
1509         _env->ReleasePrimitiveArrayCritical(arrays_ref, arrays_base,
1510             JNI_ABORT);
1511     }
1512     if (_exception) {
1513         jniThrowException(_env, _exceptionType, _exceptionMessage);
1514     }
1515 }
1516 
1517 /* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */
1518 static void
android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject arrays_buf)1519 android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2
1520   (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) {
1521     jarray _array = (jarray) 0;
1522     jint _bufferOffset = (jint) 0;
1523     jint _remaining;
1524     GLuint *arrays = (GLuint *) 0;
1525 
1526     arrays = (GLuint *)getPointer(_env, arrays_buf, &_array, &_remaining, &_bufferOffset);
1527     if (arrays == NULL) {
1528         char * _arraysBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1529         arrays = (GLuint *) (_arraysBase + _bufferOffset);
1530     }
1531     glDeleteVertexArrays(
1532         (GLsizei)n,
1533         (GLuint *)arrays
1534     );
1535     if (_array) {
1536         releasePointer(_env, _array, arrays, JNI_FALSE);
1537     }
1538 }
1539 
1540 /* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */
1541 static void
android_glGenVertexArrays__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray arrays_ref,jint offset)1542 android_glGenVertexArrays__I_3II
1543   (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) {
1544     jint _exception = 0;
1545     const char * _exceptionType = NULL;
1546     const char * _exceptionMessage = NULL;
1547     GLuint *arrays_base = (GLuint *) 0;
1548     jint _remaining;
1549     GLuint *arrays = (GLuint *) 0;
1550 
1551     if (!arrays_ref) {
1552         _exception = 1;
1553         _exceptionType = "java/lang/IllegalArgumentException";
1554         _exceptionMessage = "arrays == null";
1555         goto exit;
1556     }
1557     if (offset < 0) {
1558         _exception = 1;
1559         _exceptionType = "java/lang/IllegalArgumentException";
1560         _exceptionMessage = "offset < 0";
1561         goto exit;
1562     }
1563     _remaining = _env->GetArrayLength(arrays_ref) - offset;
1564     arrays_base = (GLuint *)
1565         _env->GetPrimitiveArrayCritical(arrays_ref, (jboolean *)0);
1566     arrays = arrays_base + offset;
1567 
1568     glGenVertexArrays(
1569         (GLsizei)n,
1570         (GLuint *)arrays
1571     );
1572 
1573 exit:
1574     if (arrays_base) {
1575         _env->ReleasePrimitiveArrayCritical(arrays_ref, arrays_base,
1576             _exception ? JNI_ABORT: 0);
1577     }
1578     if (_exception) {
1579         jniThrowException(_env, _exceptionType, _exceptionMessage);
1580     }
1581 }
1582 
1583 /* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */
1584 static void
android_glGenVertexArrays__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject arrays_buf)1585 android_glGenVertexArrays__ILjava_nio_IntBuffer_2
1586   (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) {
1587     jarray _array = (jarray) 0;
1588     jint _bufferOffset = (jint) 0;
1589     jint _remaining;
1590     GLuint *arrays = (GLuint *) 0;
1591 
1592     arrays = (GLuint *)getPointer(_env, arrays_buf, &_array, &_remaining, &_bufferOffset);
1593     if (arrays == NULL) {
1594         char * _arraysBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1595         arrays = (GLuint *) (_arraysBase + _bufferOffset);
1596     }
1597     glGenVertexArrays(
1598         (GLsizei)n,
1599         (GLuint *)arrays
1600     );
1601     if (_array) {
1602         releasePointer(_env, _array, arrays, JNI_TRUE);
1603     }
1604 }
1605 
1606 /* GLboolean glIsVertexArray ( GLuint array ) */
1607 static jboolean
android_glIsVertexArray__I(JNIEnv * _env,jobject _this,jint array)1608 android_glIsVertexArray__I
1609   (JNIEnv *_env, jobject _this, jint array) {
1610     GLboolean _returnValue;
1611     _returnValue = glIsVertexArray(
1612         (GLuint)array
1613     );
1614     return (jboolean)_returnValue;
1615 }
1616 
1617 /* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */
1618 static void
android_glGetIntegeri_v__II_3II(JNIEnv * _env,jobject _this,jint target,jint index,jintArray data_ref,jint offset)1619 android_glGetIntegeri_v__II_3II
1620   (JNIEnv *_env, jobject _this, jint target, jint index, jintArray data_ref, jint offset) {
1621     jint _exception = 0;
1622     const char * _exceptionType = NULL;
1623     const char * _exceptionMessage = NULL;
1624     GLint *data_base = (GLint *) 0;
1625     jint _remaining;
1626     GLint *data = (GLint *) 0;
1627 
1628     if (!data_ref) {
1629         _exception = 1;
1630         _exceptionType = "java/lang/IllegalArgumentException";
1631         _exceptionMessage = "data == null";
1632         goto exit;
1633     }
1634     if (offset < 0) {
1635         _exception = 1;
1636         _exceptionType = "java/lang/IllegalArgumentException";
1637         _exceptionMessage = "offset < 0";
1638         goto exit;
1639     }
1640     _remaining = _env->GetArrayLength(data_ref) - offset;
1641     data_base = (GLint *)
1642         _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0);
1643     data = data_base + offset;
1644 
1645     glGetIntegeri_v(
1646         (GLenum)target,
1647         (GLuint)index,
1648         (GLint *)data
1649     );
1650 
1651 exit:
1652     if (data_base) {
1653         _env->ReleasePrimitiveArrayCritical(data_ref, data_base,
1654             _exception ? JNI_ABORT: 0);
1655     }
1656     if (_exception) {
1657         jniThrowException(_env, _exceptionType, _exceptionMessage);
1658     }
1659 }
1660 
1661 /* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */
1662 static void
android_glGetIntegeri_v__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint index,jobject data_buf)1663 android_glGetIntegeri_v__IILjava_nio_IntBuffer_2
1664   (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) {
1665     jarray _array = (jarray) 0;
1666     jint _bufferOffset = (jint) 0;
1667     jint _remaining;
1668     GLint *data = (GLint *) 0;
1669 
1670     data = (GLint *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
1671     if (data == NULL) {
1672         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1673         data = (GLint *) (_dataBase + _bufferOffset);
1674     }
1675     glGetIntegeri_v(
1676         (GLenum)target,
1677         (GLuint)index,
1678         (GLint *)data
1679     );
1680     if (_array) {
1681         releasePointer(_env, _array, data, JNI_TRUE);
1682     }
1683 }
1684 
1685 /* void glBeginTransformFeedback ( GLenum primitiveMode ) */
1686 static void
android_glBeginTransformFeedback__I(JNIEnv * _env,jobject _this,jint primitiveMode)1687 android_glBeginTransformFeedback__I
1688   (JNIEnv *_env, jobject _this, jint primitiveMode) {
1689     glBeginTransformFeedback(
1690         (GLenum)primitiveMode
1691     );
1692 }
1693 
1694 /* void glEndTransformFeedback ( void ) */
1695 static void
android_glEndTransformFeedback__(JNIEnv * _env,jobject _this)1696 android_glEndTransformFeedback__
1697   (JNIEnv *_env, jobject _this) {
1698     glEndTransformFeedback();
1699 }
1700 
1701 /* void glBindBufferRange ( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) */
1702 static void
android_glBindBufferRange__IIIII(JNIEnv * _env,jobject _this,jint target,jint index,jint buffer,jint offset,jint size)1703 android_glBindBufferRange__IIIII
1704   (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer, jint offset, jint size) {
1705     glBindBufferRange(
1706         (GLenum)target,
1707         (GLuint)index,
1708         (GLuint)buffer,
1709         (GLintptr)offset,
1710         (GLsizeiptr)size
1711     );
1712 }
1713 
1714 /* void glBindBufferBase ( GLenum target, GLuint index, GLuint buffer ) */
1715 static void
android_glBindBufferBase__III(JNIEnv * _env,jobject _this,jint target,jint index,jint buffer)1716 android_glBindBufferBase__III
1717   (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer) {
1718     glBindBufferBase(
1719         (GLenum)target,
1720         (GLuint)index,
1721         (GLuint)buffer
1722     );
1723 }
1724 
1725 /* void glTransformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) */
1726 static
1727 void
android_glTransformFeedbackVaryings(JNIEnv * _env,jobject _this,jint program,jobjectArray varyings_ref,jint bufferMode)1728 android_glTransformFeedbackVaryings
1729     (JNIEnv *_env, jobject _this, jint program, jobjectArray varyings_ref, jint bufferMode) {
1730     jint _exception = 0;
1731     const char* _exceptionType = NULL;
1732     const char* _exceptionMessage = NULL;
1733     jint _count = 0, _i;
1734     const char** _varyings = NULL;
1735     const char* _varying = NULL;
1736 
1737     if (!varyings_ref) {
1738         _exception = 1;
1739         _exceptionType = "java/lang/IllegalArgumentException";
1740         _exceptionMessage = "varyings == null";
1741         goto exit;
1742     }
1743 
1744     _count = _env->GetArrayLength(varyings_ref);
1745     _varyings = (const char**)calloc(_count, sizeof(const char*));
1746     for (_i = 0; _i < _count; _i++) {
1747         jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i);
1748         if (!_varying) {
1749             _exception = 1;
1750             _exceptionType = "java/lang/IllegalArgumentException";
1751             _exceptionMessage = "null varyings element";
1752             goto exit;
1753         }
1754         _varyings[_i] = _env->GetStringUTFChars(_varying, 0);
1755     }
1756 
1757     glTransformFeedbackVaryings(program, _count, _varyings, bufferMode);
1758 
1759 exit:
1760     for (_i = _count - 1; _i >= 0; _i--) {
1761         if (_varyings[_i]) {
1762             jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i);
1763             if (_varying) {
1764                 _env->ReleaseStringUTFChars(_varying, _varyings[_i]);
1765             }
1766         }
1767     }
1768     free(_varyings);
1769     if (_exception) {
1770         jniThrowException(_env, _exceptionType, _exceptionMessage);
1771     }
1772 }
1773 
1774 /* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
1775 static void
android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI(JNIEnv * _env,jobject _this,jint program,jint index,jint bufsize,jintArray length_ref,jint lengthOffset,jintArray size_ref,jint sizeOffset,jintArray type_ref,jint typeOffset,jbyteArray name_ref,jint nameOffset)1776 android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI
1777   (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) {
1778     jint _exception = 0;
1779     const char * _exceptionType;
1780     const char * _exceptionMessage;
1781     GLsizei *length_base = (GLsizei *) 0;
1782     jint _lengthRemaining;
1783     GLsizei *length = (GLsizei *) 0;
1784     GLint *size_base = (GLint *) 0;
1785     jint _sizeRemaining;
1786     GLint *size = (GLint *) 0;
1787     GLenum *type_base = (GLenum *) 0;
1788     jint _typeRemaining;
1789     GLenum *type = (GLenum *) 0;
1790     char *name_base = (char *) 0;
1791     jint _nameRemaining;
1792     char *name = (char *) 0;
1793 
1794     if (!length_ref) {
1795         _exception = 1;
1796         _exceptionType = "java/lang/IllegalArgumentException";
1797         _exceptionMessage = "length == null";
1798         goto exit;
1799     }
1800     if (lengthOffset < 0) {
1801         _exception = 1;
1802         _exceptionType = "java/lang/IllegalArgumentException";
1803         _exceptionMessage = "lengthOffset < 0";
1804         goto exit;
1805     }
1806     _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
1807     length_base = (GLsizei *)
1808         _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
1809     length = length_base + lengthOffset;
1810 
1811     if (!size_ref) {
1812         _exception = 1;
1813         _exceptionType = "java/lang/IllegalArgumentException";
1814         _exceptionMessage = "size == null";
1815         goto exit;
1816     }
1817     if (sizeOffset < 0) {
1818         _exception = 1;
1819         _exceptionType = "java/lang/IllegalArgumentException";
1820         _exceptionMessage = "sizeOffset < 0";
1821         goto exit;
1822     }
1823     _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1824     size_base = (GLint *)
1825         _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1826     size = size_base + sizeOffset;
1827 
1828     if (!type_ref) {
1829         _exception = 1;
1830         _exceptionType = "java/lang/IllegalArgumentException";
1831         _exceptionMessage = "type == null";
1832         goto exit;
1833     }
1834     if (typeOffset < 0) {
1835         _exception = 1;
1836         _exceptionType = "java/lang/IllegalArgumentException";
1837         _exceptionMessage = "typeOffset < 0";
1838         goto exit;
1839     }
1840     _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1841     type_base = (GLenum *)
1842         _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1843     type = type_base + typeOffset;
1844 
1845     if (!name_ref) {
1846         _exception = 1;
1847         _exceptionType = "java/lang/IllegalArgumentException";
1848         _exceptionMessage = "name == null";
1849         goto exit;
1850     }
1851     if (nameOffset < 0) {
1852         _exception = 1;
1853         _exceptionType = "java/lang/IllegalArgumentException";
1854         _exceptionMessage = "nameOffset < 0";
1855         goto exit;
1856     }
1857     _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
1858     name_base = (char *)
1859         _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
1860     name = name_base + nameOffset;
1861 
1862     glGetTransformFeedbackVarying(
1863         (GLuint)program,
1864         (GLuint)index,
1865         (GLsizei)bufsize,
1866         (GLsizei *)length,
1867         (GLint *)size,
1868         (GLenum *)type,
1869         (char *)name
1870     );
1871 
1872 exit:
1873     if (name_base) {
1874         _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
1875             _exception ? JNI_ABORT: 0);
1876     }
1877     if (type_base) {
1878         _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1879             _exception ? JNI_ABORT: 0);
1880     }
1881     if (size_base) {
1882         _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1883             _exception ? JNI_ABORT: 0);
1884     }
1885     if (length_base) {
1886         _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
1887             _exception ? JNI_ABORT: 0);
1888     }
1889     if (_exception) {
1890         jniThrowException(_env, _exceptionType, _exceptionMessage);
1891     }
1892 }
1893 
1894 /* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
1895 static void
android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B(JNIEnv * _env,jobject _this,jint program,jint index,jint bufsize,jobject length_buf,jobject size_buf,jobject type_buf,jbyte name)1896 android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
1897   (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
1898     jarray _lengthArray = (jarray) 0;
1899     jint _lengthBufferOffset = (jint) 0;
1900     jarray _sizeArray = (jarray) 0;
1901     jint _sizeBufferOffset = (jint) 0;
1902     jarray _typeArray = (jarray) 0;
1903     jint _typeBufferOffset = (jint) 0;
1904     jint _lengthRemaining;
1905     GLsizei *length = (GLsizei *) 0;
1906     jint _sizeRemaining;
1907     GLint *size = (GLint *) 0;
1908     jint _typeRemaining;
1909     GLenum *type = (GLenum *) 0;
1910 
1911     length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
1912     size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
1913     type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
1914     if (length == NULL) {
1915         char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
1916         length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
1917     }
1918     if (size == NULL) {
1919         char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
1920         size = (GLint *) (_sizeBase + _sizeBufferOffset);
1921     }
1922     if (type == NULL) {
1923         char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
1924         type = (GLenum *) (_typeBase + _typeBufferOffset);
1925     }
1926     glGetTransformFeedbackVarying(
1927         (GLuint)program,
1928         (GLuint)index,
1929         (GLsizei)bufsize,
1930         (GLsizei *)length,
1931         (GLint *)size,
1932         (GLenum *)type,
1933         (char *)name
1934     );
1935     if (_typeArray) {
1936         releasePointer(_env, _typeArray, type, JNI_TRUE);
1937     }
1938     if (_sizeArray) {
1939         releasePointer(_env, _sizeArray, size, JNI_TRUE);
1940     }
1941     if (_lengthArray) {
1942         releasePointer(_env, _lengthArray, length, JNI_TRUE);
1943     }
1944 }
1945 
1946 /* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
1947 static jstring
android_glGetTransformFeedbackVarying1(JNIEnv * _env,jobject _this,jint program,jint index,jintArray size_ref,jint sizeOffset,jintArray type_ref,jint typeOffset)1948 android_glGetTransformFeedbackVarying1
1949   (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
1950     jint _exception = 0;
1951     const char * _exceptionType;
1952     const char * _exceptionMessage;
1953     GLint *size_base = (GLint *) 0;
1954     jint _sizeRemaining;
1955     GLint *size = (GLint *) 0;
1956     GLenum *type_base = (GLenum *) 0;
1957     jint _typeRemaining;
1958     GLenum *type = (GLenum *) 0;
1959 
1960     jstring result = 0;
1961 
1962     GLint len = 0;
1963     glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
1964     if (!len) {
1965         return _env->NewStringUTF("");
1966     }
1967     char* buf = (char*) malloc(len);
1968 
1969     if (buf == NULL) {
1970         jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1971         return NULL;
1972     }
1973     if (!size_ref) {
1974         _exception = 1;
1975         _exceptionType = "java/lang/IllegalArgumentException";
1976         _exceptionMessage = "size == null";
1977         goto exit;
1978     }
1979     if (sizeOffset < 0) {
1980         _exception = 1;
1981         _exceptionType = "java/lang/IllegalArgumentException";
1982         _exceptionMessage = "sizeOffset < 0";
1983         goto exit;
1984     }
1985     _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1986     size_base = (GLint *)
1987         _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1988     size = size_base + sizeOffset;
1989 
1990     if (!type_ref) {
1991         _exception = 1;
1992         _exceptionType = "java/lang/IllegalArgumentException";
1993         _exceptionMessage = "type == null";
1994         goto exit;
1995     }
1996     if (typeOffset < 0) {
1997         _exception = 1;
1998         _exceptionType = "java/lang/IllegalArgumentException";
1999         _exceptionMessage = "typeOffset < 0";
2000         goto exit;
2001     }
2002     _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
2003     type_base = (GLenum *)
2004         _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
2005     type = type_base + typeOffset;
2006 
2007     glGetTransformFeedbackVarying(
2008         (GLuint)program,
2009         (GLuint)index,
2010         (GLsizei)len,
2011         NULL,
2012         (GLint *)size,
2013         (GLenum *)type,
2014         (char *)buf
2015     );
2016 exit:
2017     if (type_base) {
2018         _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
2019             _exception ? JNI_ABORT: 0);
2020     }
2021     if (size_base) {
2022         _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
2023             _exception ? JNI_ABORT: 0);
2024     }
2025     if (_exception != 1) {
2026         result = _env->NewStringUTF(buf);
2027     }
2028     if (buf) {
2029         free(buf);
2030     }
2031     if (_exception) {
2032         jniThrowException(_env, _exceptionType, _exceptionMessage);
2033     }
2034     if (result == 0) {
2035         result = _env->NewStringUTF("");
2036     }
2037 
2038     return result;
2039 }
2040 
2041 /* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
2042 static jstring
android_glGetTransformFeedbackVarying2(JNIEnv * _env,jobject _this,jint program,jint index,jobject size_buf,jobject type_buf)2043 android_glGetTransformFeedbackVarying2
2044   (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
2045     jarray _sizeArray = (jarray) 0;
2046     jint _sizeBufferOffset = (jint) 0;
2047     jarray _typeArray = (jarray) 0;
2048     jint _typeBufferOffset = (jint) 0;
2049     jint _lengthRemaining;
2050     GLsizei *length = (GLsizei *) 0;
2051     jint _sizeRemaining;
2052     GLint *size = (GLint *) 0;
2053     jint _typeRemaining;
2054     GLenum *type = (GLenum *) 0;
2055 
2056     jstring result = 0;
2057 
2058     GLint len = 0;
2059     glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
2060     if (!len) {
2061         return _env->NewStringUTF("");
2062     }
2063     char* buf = (char*) malloc(len);
2064 
2065     if (buf == NULL) {
2066         jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
2067         return NULL;
2068     }
2069 
2070     size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
2071     type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
2072     if (size == NULL) {
2073         char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
2074         size = (GLint *) (_sizeBase + _sizeBufferOffset);
2075     }
2076     if (type == NULL) {
2077         char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
2078         type = (GLenum *) (_typeBase + _typeBufferOffset);
2079     }
2080     glGetTransformFeedbackVarying(
2081         (GLuint)program,
2082         (GLuint)index,
2083         (GLsizei)len,
2084         NULL,
2085         (GLint *)size,
2086         (GLenum *)type,
2087         (char *)buf
2088     );
2089 
2090     if (_typeArray) {
2091         releasePointer(_env, _typeArray, type, JNI_TRUE);
2092     }
2093     if (_sizeArray) {
2094         releasePointer(_env, _sizeArray, size, JNI_TRUE);
2095     }
2096     result = _env->NewStringUTF(buf);
2097     if (buf) {
2098         free(buf);
2099     }
2100     return result;
2101 }
2102 /* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
2103 static void
android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint index,jint size,jint type,jint stride,jobject pointer_buf,jint remaining)2104 android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I
2105   (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
2106     jarray _array = (jarray) 0;
2107     jint _bufferOffset = (jint) 0;
2108     jint _remaining;
2109     GLvoid *pointer = (GLvoid *) 0;
2110 
2111     if (pointer_buf) {
2112         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2113         if ( ! pointer ) {
2114             return;
2115         }
2116     }
2117     glVertexAttribIPointerBounds(
2118         (GLuint)index,
2119         (GLint)size,
2120         (GLenum)type,
2121         (GLsizei)stride,
2122         (GLvoid *)pointer,
2123         (GLsizei)remaining
2124     );
2125 }
2126 
2127 /* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, GLsizei offset ) */
2128 static void
android_glVertexAttribIPointer__IIIII(JNIEnv * _env,jobject _this,jint index,jint size,jint type,jint stride,jint offset)2129 android_glVertexAttribIPointer__IIIII
2130   (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jint offset) {
2131     glVertexAttribIPointer(
2132         (GLuint)index,
2133         (GLint)size,
2134         (GLenum)type,
2135         (GLsizei)stride,
2136         (GLvoid *)offset
2137     );
2138 }
2139 
2140 /* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */
2141 static void
android_glGetVertexAttribIiv__II_3II(JNIEnv * _env,jobject _this,jint index,jint pname,jintArray params_ref,jint offset)2142 android_glGetVertexAttribIiv__II_3II
2143   (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
2144     jint _exception = 0;
2145     const char * _exceptionType = NULL;
2146     const char * _exceptionMessage = NULL;
2147     GLint *params_base = (GLint *) 0;
2148     jint _remaining;
2149     GLint *params = (GLint *) 0;
2150 
2151     if (!params_ref) {
2152         _exception = 1;
2153         _exceptionType = "java/lang/IllegalArgumentException";
2154         _exceptionMessage = "params == null";
2155         goto exit;
2156     }
2157     if (offset < 0) {
2158         _exception = 1;
2159         _exceptionType = "java/lang/IllegalArgumentException";
2160         _exceptionMessage = "offset < 0";
2161         goto exit;
2162     }
2163     _remaining = _env->GetArrayLength(params_ref) - offset;
2164     params_base = (GLint *)
2165         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2166     params = params_base + offset;
2167 
2168     glGetVertexAttribIiv(
2169         (GLuint)index,
2170         (GLenum)pname,
2171         (GLint *)params
2172     );
2173 
2174 exit:
2175     if (params_base) {
2176         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2177             _exception ? JNI_ABORT: 0);
2178     }
2179     if (_exception) {
2180         jniThrowException(_env, _exceptionType, _exceptionMessage);
2181     }
2182 }
2183 
2184 /* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */
2185 static void
android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint index,jint pname,jobject params_buf)2186 android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2
2187   (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
2188     jarray _array = (jarray) 0;
2189     jint _bufferOffset = (jint) 0;
2190     jint _remaining;
2191     GLint *params = (GLint *) 0;
2192 
2193     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2194     if (params == NULL) {
2195         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2196         params = (GLint *) (_paramsBase + _bufferOffset);
2197     }
2198     glGetVertexAttribIiv(
2199         (GLuint)index,
2200         (GLenum)pname,
2201         (GLint *)params
2202     );
2203     if (_array) {
2204         releasePointer(_env, _array, params, JNI_TRUE);
2205     }
2206 }
2207 
2208 /* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */
2209 static void
android_glGetVertexAttribIuiv__II_3II(JNIEnv * _env,jobject _this,jint index,jint pname,jintArray params_ref,jint offset)2210 android_glGetVertexAttribIuiv__II_3II
2211   (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
2212     jint _exception = 0;
2213     const char * _exceptionType = NULL;
2214     const char * _exceptionMessage = NULL;
2215     GLuint *params_base = (GLuint *) 0;
2216     jint _remaining;
2217     GLuint *params = (GLuint *) 0;
2218 
2219     if (!params_ref) {
2220         _exception = 1;
2221         _exceptionType = "java/lang/IllegalArgumentException";
2222         _exceptionMessage = "params == null";
2223         goto exit;
2224     }
2225     if (offset < 0) {
2226         _exception = 1;
2227         _exceptionType = "java/lang/IllegalArgumentException";
2228         _exceptionMessage = "offset < 0";
2229         goto exit;
2230     }
2231     _remaining = _env->GetArrayLength(params_ref) - offset;
2232     params_base = (GLuint *)
2233         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2234     params = params_base + offset;
2235 
2236     glGetVertexAttribIuiv(
2237         (GLuint)index,
2238         (GLenum)pname,
2239         (GLuint *)params
2240     );
2241 
2242 exit:
2243     if (params_base) {
2244         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2245             _exception ? JNI_ABORT: 0);
2246     }
2247     if (_exception) {
2248         jniThrowException(_env, _exceptionType, _exceptionMessage);
2249     }
2250 }
2251 
2252 /* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */
2253 static void
android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint index,jint pname,jobject params_buf)2254 android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2
2255   (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
2256     jarray _array = (jarray) 0;
2257     jint _bufferOffset = (jint) 0;
2258     jint _remaining;
2259     GLuint *params = (GLuint *) 0;
2260 
2261     params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2262     if (params == NULL) {
2263         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2264         params = (GLuint *) (_paramsBase + _bufferOffset);
2265     }
2266     glGetVertexAttribIuiv(
2267         (GLuint)index,
2268         (GLenum)pname,
2269         (GLuint *)params
2270     );
2271     if (_array) {
2272         releasePointer(_env, _array, params, JNI_TRUE);
2273     }
2274 }
2275 
2276 /* void glVertexAttribI4i ( GLuint index, GLint x, GLint y, GLint z, GLint w ) */
2277 static void
android_glVertexAttribI4i__IIIII(JNIEnv * _env,jobject _this,jint index,jint x,jint y,jint z,jint w)2278 android_glVertexAttribI4i__IIIII
2279   (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) {
2280     glVertexAttribI4i(
2281         (GLuint)index,
2282         (GLint)x,
2283         (GLint)y,
2284         (GLint)z,
2285         (GLint)w
2286     );
2287 }
2288 
2289 /* void glVertexAttribI4ui ( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) */
2290 static void
android_glVertexAttribI4ui__IIIII(JNIEnv * _env,jobject _this,jint index,jint x,jint y,jint z,jint w)2291 android_glVertexAttribI4ui__IIIII
2292   (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) {
2293     glVertexAttribI4ui(
2294         (GLuint)index,
2295         (GLuint)x,
2296         (GLuint)y,
2297         (GLuint)z,
2298         (GLuint)w
2299     );
2300 }
2301 
2302 /* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */
2303 static void
android_glVertexAttribI4iv__I_3II(JNIEnv * _env,jobject _this,jint index,jintArray v_ref,jint offset)2304 android_glVertexAttribI4iv__I_3II
2305   (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) {
2306     jint _exception = 0;
2307     const char * _exceptionType = NULL;
2308     const char * _exceptionMessage = NULL;
2309     GLint *v_base = (GLint *) 0;
2310     jint _remaining;
2311     GLint *v = (GLint *) 0;
2312 
2313     if (!v_ref) {
2314         _exception = 1;
2315         _exceptionType = "java/lang/IllegalArgumentException";
2316         _exceptionMessage = "v == null";
2317         goto exit;
2318     }
2319     if (offset < 0) {
2320         _exception = 1;
2321         _exceptionType = "java/lang/IllegalArgumentException";
2322         _exceptionMessage = "offset < 0";
2323         goto exit;
2324     }
2325     _remaining = _env->GetArrayLength(v_ref) - offset;
2326     v_base = (GLint *)
2327         _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
2328     v = v_base + offset;
2329 
2330     glVertexAttribI4iv(
2331         (GLuint)index,
2332         (GLint *)v
2333     );
2334 
2335 exit:
2336     if (v_base) {
2337         _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
2338             JNI_ABORT);
2339     }
2340     if (_exception) {
2341         jniThrowException(_env, _exceptionType, _exceptionMessage);
2342     }
2343 }
2344 
2345 /* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */
2346 static void
android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint index,jobject v_buf)2347 android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2
2348   (JNIEnv *_env, jobject _this, jint index, jobject v_buf) {
2349     jarray _array = (jarray) 0;
2350     jint _bufferOffset = (jint) 0;
2351     jint _remaining;
2352     GLint *v = (GLint *) 0;
2353 
2354     v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
2355     if (v == NULL) {
2356         char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2357         v = (GLint *) (_vBase + _bufferOffset);
2358     }
2359     glVertexAttribI4iv(
2360         (GLuint)index,
2361         (GLint *)v
2362     );
2363     if (_array) {
2364         releasePointer(_env, _array, v, JNI_FALSE);
2365     }
2366 }
2367 
2368 /* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */
2369 static void
android_glVertexAttribI4uiv__I_3II(JNIEnv * _env,jobject _this,jint index,jintArray v_ref,jint offset)2370 android_glVertexAttribI4uiv__I_3II
2371   (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) {
2372     jint _exception = 0;
2373     const char * _exceptionType = NULL;
2374     const char * _exceptionMessage = NULL;
2375     GLuint *v_base = (GLuint *) 0;
2376     jint _remaining;
2377     GLuint *v = (GLuint *) 0;
2378 
2379     if (!v_ref) {
2380         _exception = 1;
2381         _exceptionType = "java/lang/IllegalArgumentException";
2382         _exceptionMessage = "v == null";
2383         goto exit;
2384     }
2385     if (offset < 0) {
2386         _exception = 1;
2387         _exceptionType = "java/lang/IllegalArgumentException";
2388         _exceptionMessage = "offset < 0";
2389         goto exit;
2390     }
2391     _remaining = _env->GetArrayLength(v_ref) - offset;
2392     v_base = (GLuint *)
2393         _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
2394     v = v_base + offset;
2395 
2396     glVertexAttribI4uiv(
2397         (GLuint)index,
2398         (GLuint *)v
2399     );
2400 
2401 exit:
2402     if (v_base) {
2403         _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
2404             JNI_ABORT);
2405     }
2406     if (_exception) {
2407         jniThrowException(_env, _exceptionType, _exceptionMessage);
2408     }
2409 }
2410 
2411 /* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */
2412 static void
android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint index,jobject v_buf)2413 android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2
2414   (JNIEnv *_env, jobject _this, jint index, jobject v_buf) {
2415     jarray _array = (jarray) 0;
2416     jint _bufferOffset = (jint) 0;
2417     jint _remaining;
2418     GLuint *v = (GLuint *) 0;
2419 
2420     v = (GLuint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
2421     if (v == NULL) {
2422         char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2423         v = (GLuint *) (_vBase + _bufferOffset);
2424     }
2425     glVertexAttribI4uiv(
2426         (GLuint)index,
2427         (GLuint *)v
2428     );
2429     if (_array) {
2430         releasePointer(_env, _array, v, JNI_FALSE);
2431     }
2432 }
2433 
2434 /* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */
2435 static void
android_glGetUniformuiv__II_3II(JNIEnv * _env,jobject _this,jint program,jint location,jintArray params_ref,jint offset)2436 android_glGetUniformuiv__II_3II
2437   (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) {
2438     jint _exception = 0;
2439     const char * _exceptionType = NULL;
2440     const char * _exceptionMessage = NULL;
2441     GLuint *params_base = (GLuint *) 0;
2442     jint _remaining;
2443     GLuint *params = (GLuint *) 0;
2444 
2445     if (!params_ref) {
2446         _exception = 1;
2447         _exceptionType = "java/lang/IllegalArgumentException";
2448         _exceptionMessage = "params == null";
2449         goto exit;
2450     }
2451     if (offset < 0) {
2452         _exception = 1;
2453         _exceptionType = "java/lang/IllegalArgumentException";
2454         _exceptionMessage = "offset < 0";
2455         goto exit;
2456     }
2457     _remaining = _env->GetArrayLength(params_ref) - offset;
2458     params_base = (GLuint *)
2459         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2460     params = params_base + offset;
2461 
2462     glGetUniformuiv(
2463         (GLuint)program,
2464         (GLint)location,
2465         (GLuint *)params
2466     );
2467 
2468 exit:
2469     if (params_base) {
2470         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2471             _exception ? JNI_ABORT: 0);
2472     }
2473     if (_exception) {
2474         jniThrowException(_env, _exceptionType, _exceptionMessage);
2475     }
2476 }
2477 
2478 /* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */
2479 static void
android_glGetUniformuiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jobject params_buf)2480 android_glGetUniformuiv__IILjava_nio_IntBuffer_2
2481   (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
2482     jarray _array = (jarray) 0;
2483     jint _bufferOffset = (jint) 0;
2484     jint _remaining;
2485     GLuint *params = (GLuint *) 0;
2486 
2487     params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2488     if (params == NULL) {
2489         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2490         params = (GLuint *) (_paramsBase + _bufferOffset);
2491     }
2492     glGetUniformuiv(
2493         (GLuint)program,
2494         (GLint)location,
2495         (GLuint *)params
2496     );
2497     if (_array) {
2498         releasePointer(_env, _array, params, JNI_TRUE);
2499     }
2500 }
2501 
2502 /* GLint glGetFragDataLocation ( GLuint program, const GLchar *name ) */
2503 static jint
android_glGetFragDataLocation__ILjava_lang_String_2(JNIEnv * _env,jobject _this,jint program,jstring name)2504 android_glGetFragDataLocation__ILjava_lang_String_2
2505   (JNIEnv *_env, jobject _this, jint program, jstring name) {
2506     jint _exception = 0;
2507     const char * _exceptionType = NULL;
2508     const char * _exceptionMessage = NULL;
2509     GLint _returnValue = 0;
2510     const char* _nativename = 0;
2511 
2512     if (!name) {
2513         _exceptionType = "java/lang/IllegalArgumentException";
2514         _exceptionMessage = "name == null";
2515         goto exit;
2516     }
2517     _nativename = _env->GetStringUTFChars(name, 0);
2518 
2519     _returnValue = glGetFragDataLocation(
2520         (GLuint)program,
2521         (GLchar *)_nativename
2522     );
2523 
2524 exit:
2525     if (_nativename) {
2526         _env->ReleaseStringUTFChars(name, _nativename);
2527     }
2528 
2529     if (_exception) {
2530         jniThrowException(_env, _exceptionType, _exceptionMessage);
2531     }
2532     return (jint)_returnValue;
2533 }
2534 
2535 /* void glUniform1ui ( GLint location, GLuint v0 ) */
2536 static void
android_glUniform1ui__II(JNIEnv * _env,jobject _this,jint location,jint v0)2537 android_glUniform1ui__II
2538   (JNIEnv *_env, jobject _this, jint location, jint v0) {
2539     glUniform1ui(
2540         (GLint)location,
2541         (GLuint)v0
2542     );
2543 }
2544 
2545 /* void glUniform2ui ( GLint location, GLuint v0, GLuint v1 ) */
2546 static void
android_glUniform2ui__III(JNIEnv * _env,jobject _this,jint location,jint v0,jint v1)2547 android_glUniform2ui__III
2548   (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1) {
2549     glUniform2ui(
2550         (GLint)location,
2551         (GLuint)v0,
2552         (GLuint)v1
2553     );
2554 }
2555 
2556 /* void glUniform3ui ( GLint location, GLuint v0, GLuint v1, GLuint v2 ) */
2557 static void
android_glUniform3ui__IIII(JNIEnv * _env,jobject _this,jint location,jint v0,jint v1,jint v2)2558 android_glUniform3ui__IIII
2559   (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2) {
2560     glUniform3ui(
2561         (GLint)location,
2562         (GLuint)v0,
2563         (GLuint)v1,
2564         (GLuint)v2
2565     );
2566 }
2567 
2568 /* void glUniform4ui ( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */
2569 static void
android_glUniform4ui__IIIII(JNIEnv * _env,jobject _this,jint location,jint v0,jint v1,jint v2,jint v3)2570 android_glUniform4ui__IIIII
2571   (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2, jint v3) {
2572     glUniform4ui(
2573         (GLint)location,
2574         (GLuint)v0,
2575         (GLuint)v1,
2576         (GLuint)v2,
2577         (GLuint)v3
2578     );
2579 }
2580 
2581 /* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */
2582 static void
android_glUniform1uiv__II_3II(JNIEnv * _env,jobject _this,jint location,jint count,jintArray value_ref,jint offset)2583 android_glUniform1uiv__II_3II
2584   (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) {
2585     jint _exception = 0;
2586     const char * _exceptionType = NULL;
2587     const char * _exceptionMessage = NULL;
2588     GLuint *value_base = (GLuint *) 0;
2589     jint _remaining;
2590     GLuint *value = (GLuint *) 0;
2591 
2592     if (!value_ref) {
2593         _exception = 1;
2594         _exceptionType = "java/lang/IllegalArgumentException";
2595         _exceptionMessage = "value == null";
2596         goto exit;
2597     }
2598     if (offset < 0) {
2599         _exception = 1;
2600         _exceptionType = "java/lang/IllegalArgumentException";
2601         _exceptionMessage = "offset < 0";
2602         goto exit;
2603     }
2604     _remaining = _env->GetArrayLength(value_ref) - offset;
2605     value_base = (GLuint *)
2606         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2607     value = value_base + offset;
2608 
2609     glUniform1uiv(
2610         (GLint)location,
2611         (GLsizei)count,
2612         (GLuint *)value
2613     );
2614 
2615 exit:
2616     if (value_base) {
2617         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2618             JNI_ABORT);
2619     }
2620     if (_exception) {
2621         jniThrowException(_env, _exceptionType, _exceptionMessage);
2622     }
2623 }
2624 
2625 /* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */
2626 static void
android_glUniform1uiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jobject value_buf)2627 android_glUniform1uiv__IILjava_nio_IntBuffer_2
2628   (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) {
2629     jarray _array = (jarray) 0;
2630     jint _bufferOffset = (jint) 0;
2631     jint _remaining;
2632     GLuint *value = (GLuint *) 0;
2633 
2634     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2635     if (value == NULL) {
2636         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2637         value = (GLuint *) (_valueBase + _bufferOffset);
2638     }
2639     glUniform1uiv(
2640         (GLint)location,
2641         (GLsizei)count,
2642         (GLuint *)value
2643     );
2644     if (_array) {
2645         releasePointer(_env, _array, value, JNI_FALSE);
2646     }
2647 }
2648 
2649 /* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */
2650 static void
android_glUniform2uiv__II_3II(JNIEnv * _env,jobject _this,jint location,jint count,jintArray value_ref,jint offset)2651 android_glUniform2uiv__II_3II
2652   (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) {
2653     jint _exception = 0;
2654     const char * _exceptionType = NULL;
2655     const char * _exceptionMessage = NULL;
2656     GLuint *value_base = (GLuint *) 0;
2657     jint _remaining;
2658     GLuint *value = (GLuint *) 0;
2659 
2660     if (!value_ref) {
2661         _exception = 1;
2662         _exceptionType = "java/lang/IllegalArgumentException";
2663         _exceptionMessage = "value == null";
2664         goto exit;
2665     }
2666     if (offset < 0) {
2667         _exception = 1;
2668         _exceptionType = "java/lang/IllegalArgumentException";
2669         _exceptionMessage = "offset < 0";
2670         goto exit;
2671     }
2672     _remaining = _env->GetArrayLength(value_ref) - offset;
2673     value_base = (GLuint *)
2674         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2675     value = value_base + offset;
2676 
2677     glUniform2uiv(
2678         (GLint)location,
2679         (GLsizei)count,
2680         (GLuint *)value
2681     );
2682 
2683 exit:
2684     if (value_base) {
2685         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2686             JNI_ABORT);
2687     }
2688     if (_exception) {
2689         jniThrowException(_env, _exceptionType, _exceptionMessage);
2690     }
2691 }
2692 
2693 /* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */
2694 static void
android_glUniform2uiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jobject value_buf)2695 android_glUniform2uiv__IILjava_nio_IntBuffer_2
2696   (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) {
2697     jarray _array = (jarray) 0;
2698     jint _bufferOffset = (jint) 0;
2699     jint _remaining;
2700     GLuint *value = (GLuint *) 0;
2701 
2702     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2703     if (value == NULL) {
2704         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2705         value = (GLuint *) (_valueBase + _bufferOffset);
2706     }
2707     glUniform2uiv(
2708         (GLint)location,
2709         (GLsizei)count,
2710         (GLuint *)value
2711     );
2712     if (_array) {
2713         releasePointer(_env, _array, value, JNI_FALSE);
2714     }
2715 }
2716 
2717 /* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */
2718 static void
android_glUniform3uiv__II_3II(JNIEnv * _env,jobject _this,jint location,jint count,jintArray value_ref,jint offset)2719 android_glUniform3uiv__II_3II
2720   (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) {
2721     jint _exception = 0;
2722     const char * _exceptionType = NULL;
2723     const char * _exceptionMessage = NULL;
2724     GLuint *value_base = (GLuint *) 0;
2725     jint _remaining;
2726     GLuint *value = (GLuint *) 0;
2727 
2728     if (!value_ref) {
2729         _exception = 1;
2730         _exceptionType = "java/lang/IllegalArgumentException";
2731         _exceptionMessage = "value == null";
2732         goto exit;
2733     }
2734     if (offset < 0) {
2735         _exception = 1;
2736         _exceptionType = "java/lang/IllegalArgumentException";
2737         _exceptionMessage = "offset < 0";
2738         goto exit;
2739     }
2740     _remaining = _env->GetArrayLength(value_ref) - offset;
2741     value_base = (GLuint *)
2742         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2743     value = value_base + offset;
2744 
2745     glUniform3uiv(
2746         (GLint)location,
2747         (GLsizei)count,
2748         (GLuint *)value
2749     );
2750 
2751 exit:
2752     if (value_base) {
2753         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2754             JNI_ABORT);
2755     }
2756     if (_exception) {
2757         jniThrowException(_env, _exceptionType, _exceptionMessage);
2758     }
2759 }
2760 
2761 /* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */
2762 static void
android_glUniform3uiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jobject value_buf)2763 android_glUniform3uiv__IILjava_nio_IntBuffer_2
2764   (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) {
2765     jarray _array = (jarray) 0;
2766     jint _bufferOffset = (jint) 0;
2767     jint _remaining;
2768     GLuint *value = (GLuint *) 0;
2769 
2770     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2771     if (value == NULL) {
2772         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2773         value = (GLuint *) (_valueBase + _bufferOffset);
2774     }
2775     glUniform3uiv(
2776         (GLint)location,
2777         (GLsizei)count,
2778         (GLuint *)value
2779     );
2780     if (_array) {
2781         releasePointer(_env, _array, value, JNI_FALSE);
2782     }
2783 }
2784 
2785 /* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */
2786 static void
android_glUniform4uiv__II_3II(JNIEnv * _env,jobject _this,jint location,jint count,jintArray value_ref,jint offset)2787 android_glUniform4uiv__II_3II
2788   (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) {
2789     jint _exception = 0;
2790     const char * _exceptionType = NULL;
2791     const char * _exceptionMessage = NULL;
2792     GLuint *value_base = (GLuint *) 0;
2793     jint _remaining;
2794     GLuint *value = (GLuint *) 0;
2795 
2796     if (!value_ref) {
2797         _exception = 1;
2798         _exceptionType = "java/lang/IllegalArgumentException";
2799         _exceptionMessage = "value == null";
2800         goto exit;
2801     }
2802     if (offset < 0) {
2803         _exception = 1;
2804         _exceptionType = "java/lang/IllegalArgumentException";
2805         _exceptionMessage = "offset < 0";
2806         goto exit;
2807     }
2808     _remaining = _env->GetArrayLength(value_ref) - offset;
2809     value_base = (GLuint *)
2810         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2811     value = value_base + offset;
2812 
2813     glUniform4uiv(
2814         (GLint)location,
2815         (GLsizei)count,
2816         (GLuint *)value
2817     );
2818 
2819 exit:
2820     if (value_base) {
2821         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2822             JNI_ABORT);
2823     }
2824     if (_exception) {
2825         jniThrowException(_env, _exceptionType, _exceptionMessage);
2826     }
2827 }
2828 
2829 /* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */
2830 static void
android_glUniform4uiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint location,jint count,jobject value_buf)2831 android_glUniform4uiv__IILjava_nio_IntBuffer_2
2832   (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) {
2833     jarray _array = (jarray) 0;
2834     jint _bufferOffset = (jint) 0;
2835     jint _remaining;
2836     GLuint *value = (GLuint *) 0;
2837 
2838     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2839     if (value == NULL) {
2840         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2841         value = (GLuint *) (_valueBase + _bufferOffset);
2842     }
2843     glUniform4uiv(
2844         (GLint)location,
2845         (GLsizei)count,
2846         (GLuint *)value
2847     );
2848     if (_array) {
2849         releasePointer(_env, _array, value, JNI_FALSE);
2850     }
2851 }
2852 
2853 /* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */
2854 static void
android_glClearBufferiv__II_3II(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jintArray value_ref,jint offset)2855 android_glClearBufferiv__II_3II
2856   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) {
2857     jint _exception = 0;
2858     const char * _exceptionType = NULL;
2859     const char * _exceptionMessage = NULL;
2860     GLint *value_base = (GLint *) 0;
2861     jint _remaining;
2862     GLint *value = (GLint *) 0;
2863 
2864     if (!value_ref) {
2865         _exception = 1;
2866         _exceptionType = "java/lang/IllegalArgumentException";
2867         _exceptionMessage = "value == null";
2868         goto exit;
2869     }
2870     if (offset < 0) {
2871         _exception = 1;
2872         _exceptionType = "java/lang/IllegalArgumentException";
2873         _exceptionMessage = "offset < 0";
2874         goto exit;
2875     }
2876     _remaining = _env->GetArrayLength(value_ref) - offset;
2877     value_base = (GLint *)
2878         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2879     value = value_base + offset;
2880 
2881     glClearBufferiv(
2882         (GLenum)buffer,
2883         (GLint)drawbuffer,
2884         (GLint *)value
2885     );
2886 
2887 exit:
2888     if (value_base) {
2889         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2890             JNI_ABORT);
2891     }
2892     if (_exception) {
2893         jniThrowException(_env, _exceptionType, _exceptionMessage);
2894     }
2895 }
2896 
2897 /* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */
2898 static void
android_glClearBufferiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jobject value_buf)2899 android_glClearBufferiv__IILjava_nio_IntBuffer_2
2900   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) {
2901     jarray _array = (jarray) 0;
2902     jint _bufferOffset = (jint) 0;
2903     jint _remaining;
2904     GLint *value = (GLint *) 0;
2905 
2906     value = (GLint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2907     if (value == NULL) {
2908         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2909         value = (GLint *) (_valueBase + _bufferOffset);
2910     }
2911     glClearBufferiv(
2912         (GLenum)buffer,
2913         (GLint)drawbuffer,
2914         (GLint *)value
2915     );
2916     if (_array) {
2917         releasePointer(_env, _array, value, JNI_FALSE);
2918     }
2919 }
2920 
2921 /* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */
2922 static void
android_glClearBufferuiv__II_3II(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jintArray value_ref,jint offset)2923 android_glClearBufferuiv__II_3II
2924   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) {
2925     jint _exception = 0;
2926     const char * _exceptionType = NULL;
2927     const char * _exceptionMessage = NULL;
2928     GLuint *value_base = (GLuint *) 0;
2929     jint _remaining;
2930     GLuint *value = (GLuint *) 0;
2931 
2932     if (!value_ref) {
2933         _exception = 1;
2934         _exceptionType = "java/lang/IllegalArgumentException";
2935         _exceptionMessage = "value == null";
2936         goto exit;
2937     }
2938     if (offset < 0) {
2939         _exception = 1;
2940         _exceptionType = "java/lang/IllegalArgumentException";
2941         _exceptionMessage = "offset < 0";
2942         goto exit;
2943     }
2944     _remaining = _env->GetArrayLength(value_ref) - offset;
2945     value_base = (GLuint *)
2946         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2947     value = value_base + offset;
2948 
2949     glClearBufferuiv(
2950         (GLenum)buffer,
2951         (GLint)drawbuffer,
2952         (GLuint *)value
2953     );
2954 
2955 exit:
2956     if (value_base) {
2957         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2958             JNI_ABORT);
2959     }
2960     if (_exception) {
2961         jniThrowException(_env, _exceptionType, _exceptionMessage);
2962     }
2963 }
2964 
2965 /* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */
2966 static void
android_glClearBufferuiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jobject value_buf)2967 android_glClearBufferuiv__IILjava_nio_IntBuffer_2
2968   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) {
2969     jarray _array = (jarray) 0;
2970     jint _bufferOffset = (jint) 0;
2971     jint _remaining;
2972     GLuint *value = (GLuint *) 0;
2973 
2974     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2975     if (value == NULL) {
2976         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2977         value = (GLuint *) (_valueBase + _bufferOffset);
2978     }
2979     glClearBufferuiv(
2980         (GLenum)buffer,
2981         (GLint)drawbuffer,
2982         (GLuint *)value
2983     );
2984     if (_array) {
2985         releasePointer(_env, _array, value, JNI_FALSE);
2986     }
2987 }
2988 
2989 /* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */
2990 static void
android_glClearBufferfv__II_3FI(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jfloatArray value_ref,jint offset)2991 android_glClearBufferfv__II_3FI
2992   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloatArray value_ref, jint offset) {
2993     jint _exception = 0;
2994     const char * _exceptionType = NULL;
2995     const char * _exceptionMessage = NULL;
2996     GLfloat *value_base = (GLfloat *) 0;
2997     jint _remaining;
2998     GLfloat *value = (GLfloat *) 0;
2999 
3000     if (!value_ref) {
3001         _exception = 1;
3002         _exceptionType = "java/lang/IllegalArgumentException";
3003         _exceptionMessage = "value == null";
3004         goto exit;
3005     }
3006     if (offset < 0) {
3007         _exception = 1;
3008         _exceptionType = "java/lang/IllegalArgumentException";
3009         _exceptionMessage = "offset < 0";
3010         goto exit;
3011     }
3012     _remaining = _env->GetArrayLength(value_ref) - offset;
3013     value_base = (GLfloat *)
3014         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
3015     value = value_base + offset;
3016 
3017     glClearBufferfv(
3018         (GLenum)buffer,
3019         (GLint)drawbuffer,
3020         (GLfloat *)value
3021     );
3022 
3023 exit:
3024     if (value_base) {
3025         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
3026             JNI_ABORT);
3027     }
3028     if (_exception) {
3029         jniThrowException(_env, _exceptionType, _exceptionMessage);
3030     }
3031 }
3032 
3033 /* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */
3034 static void
android_glClearBufferfv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jobject value_buf)3035 android_glClearBufferfv__IILjava_nio_FloatBuffer_2
3036   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) {
3037     jarray _array = (jarray) 0;
3038     jint _bufferOffset = (jint) 0;
3039     jint _remaining;
3040     GLfloat *value = (GLfloat *) 0;
3041 
3042     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
3043     if (value == NULL) {
3044         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3045         value = (GLfloat *) (_valueBase + _bufferOffset);
3046     }
3047     glClearBufferfv(
3048         (GLenum)buffer,
3049         (GLint)drawbuffer,
3050         (GLfloat *)value
3051     );
3052     if (_array) {
3053         releasePointer(_env, _array, value, JNI_FALSE);
3054     }
3055 }
3056 
3057 /* void glClearBufferfi ( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) */
3058 static void
android_glClearBufferfi__IIFI(JNIEnv * _env,jobject _this,jint buffer,jint drawbuffer,jfloat depth,jint stencil)3059 android_glClearBufferfi__IIFI
3060   (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloat depth, jint stencil) {
3061     glClearBufferfi(
3062         (GLenum)buffer,
3063         (GLint)drawbuffer,
3064         (GLfloat)depth,
3065         (GLint)stencil
3066     );
3067 }
3068 
3069 /* const GLubyte * glGetStringi ( GLenum name, GLuint index ) */
3070 static jstring
android_glGetStringi__II(JNIEnv * _env,jobject _this,jint name,jint index)3071 android_glGetStringi__II
3072   (JNIEnv *_env, jobject _this, jint name, jint index) {
3073     const GLubyte* _chars = glGetStringi((GLenum)name, (GLuint)index);
3074     return _env->NewStringUTF((const char*)_chars);
3075 }
3076 
3077 /* void glCopyBufferSubData ( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ) */
3078 static void
android_glCopyBufferSubData__IIIII(JNIEnv * _env,jobject _this,jint readTarget,jint writeTarget,jint readOffset,jint writeOffset,jint size)3079 android_glCopyBufferSubData__IIIII
3080   (JNIEnv *_env, jobject _this, jint readTarget, jint writeTarget, jint readOffset, jint writeOffset, jint size) {
3081     glCopyBufferSubData(
3082         (GLenum)readTarget,
3083         (GLenum)writeTarget,
3084         (GLintptr)readOffset,
3085         (GLintptr)writeOffset,
3086         (GLsizeiptr)size
3087     );
3088 }
3089 
3090 /* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */
3091 static
3092 void
android_glGetUniformIndices_array(JNIEnv * _env,jobject _this,jint program,jobjectArray uniformNames_ref,jintArray uniformIndices_ref,jint uniformIndicesOffset)3093 android_glGetUniformIndices_array
3094     (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jintArray uniformIndices_ref, jint uniformIndicesOffset) {
3095     jint _exception = 0;
3096     const char* _exceptionType = NULL;
3097     const char* _exceptionMessage = NULL;
3098     jint _count = 0;
3099     jint _i;
3100     const char** _names = NULL;
3101     GLuint* _indices_base = NULL;
3102     GLuint* _indices = NULL;
3103 
3104     if (!uniformNames_ref) {
3105         _exception = 1;
3106         _exceptionType = "java/lang/IllegalArgumentException";
3107         _exceptionMessage = "uniformNames == null";
3108         goto exit;
3109     }
3110     _count = _env->GetArrayLength(uniformNames_ref);
3111     _names = (const char**)calloc(_count, sizeof(const char*));
3112     for (_i = 0; _i < _count; _i++) {
3113         jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i);
3114         if (!_name) {
3115             _exception = 1;
3116             _exceptionType = "java/lang/IllegalArgumentException";
3117             _exceptionMessage = "null uniformNames element";
3118             goto exit;
3119         }
3120         _names[_i] = _env->GetStringUTFChars(_name, 0);
3121     }
3122 
3123     if (!uniformIndices_ref) {
3124         _exception = 1;
3125         _exceptionType = "java/lang/IllegalArgumentException";
3126         _exceptionMessage = "uniformIndices == null";
3127         goto exit;
3128     }
3129     if (uniformIndicesOffset < 0) {
3130         _exception = 1;
3131         _exceptionType = "java/lang/IllegalArgumentException";
3132         _exceptionMessage = "uniformIndicesOffset < 0";
3133         goto exit;
3134     }
3135     if (_env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset < _count) {
3136         _exception = 1;
3137         _exceptionType = "java/lang/IllegalArgumentException";
3138         _exceptionMessage = "not enough space in uniformIndices";
3139         goto exit;
3140     }
3141     _indices_base = (GLuint*)_env->GetPrimitiveArrayCritical(
3142             uniformIndices_ref, 0);
3143     _indices = _indices_base + uniformIndicesOffset;
3144 
3145     glGetUniformIndices(program, _count, _names, _indices);
3146 
3147 exit:
3148     if (_indices_base) {
3149         _env->ReleasePrimitiveArrayCritical(uniformIndices_ref, _indices_base,
3150                 _exception ? JNI_ABORT : 0);
3151     }
3152     for (_i = _count - 1; _i >= 0; _i--) {
3153         if (_names[_i]) {
3154             jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i);
3155             if (_name) {
3156                 _env->ReleaseStringUTFChars(_name, _names[_i]);
3157             }
3158         }
3159     }
3160     free(_names);
3161     if (_exception) {
3162         jniThrowException(_env, _exceptionType, _exceptionMessage);
3163     }
3164 }
3165 
3166 /* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */
3167 static
3168 void
android_glGetUniformIndices_buffer(JNIEnv * _env,jobject _this,jint program,jobjectArray uniformNames_ref,jobject uniformIndices_buf)3169 android_glGetUniformIndices_buffer
3170     (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jobject uniformIndices_buf) {
3171     jint _exception = 0;
3172     const char* _exceptionType = NULL;
3173     const char* _exceptionMessage = NULL;
3174     jint _count = 0;
3175     jint _i;
3176     const char** _names = NULL;
3177     jarray _uniformIndicesArray = (jarray)0;
3178     jint _uniformIndicesRemaining;
3179     jint _uniformIndicesOffset = 0;
3180     GLuint* _indices = NULL;
3181     char* _indicesBase = NULL;
3182 
3183     if (!uniformNames_ref) {
3184         _exception = 1;
3185         _exceptionType = "java/lang/IllegalArgumentException";
3186         _exceptionMessage = "uniformNames == null";
3187         goto exit;
3188     }
3189     if (!uniformIndices_buf) {
3190         _exception = 1;
3191         _exceptionType = "java/lang/IllegalArgumentException";
3192         _exceptionMessage = "uniformIndices == null";
3193         goto exit;
3194     }
3195 
3196     _count = _env->GetArrayLength(uniformNames_ref);
3197     _names = (const char**)calloc(_count, sizeof(const char*));
3198     for (_i = 0; _i < _count; _i++) {
3199         jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i);
3200         if (!_name) {
3201             _exception = 1;
3202             _exceptionType = "java/lang/IllegalArgumentException";
3203             _exceptionMessage = "null uniformNames element";
3204             goto exit;
3205         }
3206         _names[_i] = _env->GetStringUTFChars(_name, 0);
3207     }
3208 
3209     _indices = (GLuint*)getPointer(_env, uniformIndices_buf,
3210             &_uniformIndicesArray, &_uniformIndicesRemaining,
3211             &_uniformIndicesOffset);
3212     if (!_indices) {
3213         _indicesBase = (char*)_env->GetPrimitiveArrayCritical(
3214                 _uniformIndicesArray, 0);
3215         _indices = (GLuint*)(_indicesBase + _uniformIndicesOffset);
3216     }
3217     if (_uniformIndicesRemaining < _count) {
3218         _exception = 1;
3219         _exceptionType = "java/lang/IllegalArgumentException";
3220         _exceptionMessage = "not enough space in uniformIndices";
3221         goto exit;
3222     }
3223 
3224     glGetUniformIndices(program, _count, _names, _indices);
3225 
3226 exit:
3227     if (_uniformIndicesArray) {
3228         releasePointer(_env, _uniformIndicesArray, _indicesBase, JNI_TRUE);
3229     }
3230     for (_i = _count - 1; _i >= 0; _i--) {
3231         if (_names[_i]) {
3232             jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i);
3233             if (_name) {
3234                 _env->ReleaseStringUTFChars(_name, _names[_i]);
3235             }
3236         }
3237     }
3238     free(_names);
3239     if (_exception) {
3240         jniThrowException(_env, _exceptionType, _exceptionMessage);
3241     }
3242 }
3243 
3244 /* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */
3245 static void
android_glGetActiveUniformsiv__II_3III_3II(JNIEnv * _env,jobject _this,jint program,jint uniformCount,jintArray uniformIndices_ref,jint uniformIndicesOffset,jint pname,jintArray params_ref,jint paramsOffset)3246 android_glGetActiveUniformsiv__II_3III_3II
3247   (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jintArray uniformIndices_ref, jint uniformIndicesOffset, jint pname, jintArray params_ref, jint paramsOffset) {
3248     jint _exception = 0;
3249     const char * _exceptionType = NULL;
3250     const char * _exceptionMessage = NULL;
3251     GLuint *uniformIndices_base = (GLuint *) 0;
3252     jint _uniformIndicesRemaining;
3253     GLuint *uniformIndices = (GLuint *) 0;
3254     GLint *params_base = (GLint *) 0;
3255     jint _paramsRemaining;
3256     GLint *params = (GLint *) 0;
3257 
3258     if (!uniformIndices_ref) {
3259         _exception = 1;
3260         _exceptionType = "java/lang/IllegalArgumentException";
3261         _exceptionMessage = "uniformIndices == null";
3262         goto exit;
3263     }
3264     if (uniformIndicesOffset < 0) {
3265         _exception = 1;
3266         _exceptionType = "java/lang/IllegalArgumentException";
3267         _exceptionMessage = "uniformIndicesOffset < 0";
3268         goto exit;
3269     }
3270     _uniformIndicesRemaining = _env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset;
3271     uniformIndices_base = (GLuint *)
3272         _env->GetPrimitiveArrayCritical(uniformIndices_ref, (jboolean *)0);
3273     uniformIndices = uniformIndices_base + uniformIndicesOffset;
3274 
3275     if (!params_ref) {
3276         _exception = 1;
3277         _exceptionType = "java/lang/IllegalArgumentException";
3278         _exceptionMessage = "params == null";
3279         goto exit;
3280     }
3281     if (paramsOffset < 0) {
3282         _exception = 1;
3283         _exceptionType = "java/lang/IllegalArgumentException";
3284         _exceptionMessage = "paramsOffset < 0";
3285         goto exit;
3286     }
3287     _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset;
3288     params_base = (GLint *)
3289         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3290     params = params_base + paramsOffset;
3291 
3292     glGetActiveUniformsiv(
3293         (GLuint)program,
3294         (GLsizei)uniformCount,
3295         (GLuint *)uniformIndices,
3296         (GLenum)pname,
3297         (GLint *)params
3298     );
3299 
3300 exit:
3301     if (params_base) {
3302         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3303             _exception ? JNI_ABORT: 0);
3304     }
3305     if (uniformIndices_base) {
3306         _env->ReleasePrimitiveArrayCritical(uniformIndices_ref, uniformIndices_base,
3307             JNI_ABORT);
3308     }
3309     if (_exception) {
3310         jniThrowException(_env, _exceptionType, _exceptionMessage);
3311     }
3312 }
3313 
3314 /* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */
3315 static void
android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint uniformCount,jobject uniformIndices_buf,jint pname,jobject params_buf)3316 android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2
3317   (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jobject uniformIndices_buf, jint pname, jobject params_buf) {
3318     jarray _uniformIndicesArray = (jarray) 0;
3319     jint _uniformIndicesBufferOffset = (jint) 0;
3320     jarray _paramsArray = (jarray) 0;
3321     jint _paramsBufferOffset = (jint) 0;
3322     jint _uniformIndicesRemaining;
3323     GLuint *uniformIndices = (GLuint *) 0;
3324     jint _paramsRemaining;
3325     GLint *params = (GLint *) 0;
3326 
3327     uniformIndices = (GLuint *)getPointer(_env, uniformIndices_buf, &_uniformIndicesArray, &_uniformIndicesRemaining, &_uniformIndicesBufferOffset);
3328     params = (GLint *)getPointer(_env, params_buf, &_paramsArray, &_paramsRemaining, &_paramsBufferOffset);
3329     if (uniformIndices == NULL) {
3330         char * _uniformIndicesBase = (char *)_env->GetPrimitiveArrayCritical(_uniformIndicesArray, (jboolean *) 0);
3331         uniformIndices = (GLuint *) (_uniformIndicesBase + _uniformIndicesBufferOffset);
3332     }
3333     if (params == NULL) {
3334         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_paramsArray, (jboolean *) 0);
3335         params = (GLint *) (_paramsBase + _paramsBufferOffset);
3336     }
3337     glGetActiveUniformsiv(
3338         (GLuint)program,
3339         (GLsizei)uniformCount,
3340         (GLuint *)uniformIndices,
3341         (GLenum)pname,
3342         (GLint *)params
3343     );
3344     if (_paramsArray) {
3345         releasePointer(_env, _paramsArray, params, JNI_TRUE);
3346     }
3347     if (_uniformIndicesArray) {
3348         releasePointer(_env, _uniformIndicesArray, uniformIndices, JNI_FALSE);
3349     }
3350 }
3351 
3352 /* GLuint glGetUniformBlockIndex ( GLuint program, const GLchar *uniformBlockName ) */
3353 static jint
android_glGetUniformBlockIndex__ILjava_lang_String_2(JNIEnv * _env,jobject _this,jint program,jstring uniformBlockName)3354 android_glGetUniformBlockIndex__ILjava_lang_String_2
3355   (JNIEnv *_env, jobject _this, jint program, jstring uniformBlockName) {
3356     jint _exception = 0;
3357     const char * _exceptionType = NULL;
3358     const char * _exceptionMessage = NULL;
3359     GLuint _returnValue = 0;
3360     const char* _nativeuniformBlockName = 0;
3361 
3362     if (!uniformBlockName) {
3363         _exceptionType = "java/lang/IllegalArgumentException";
3364         _exceptionMessage = "uniformBlockName == null";
3365         goto exit;
3366     }
3367     _nativeuniformBlockName = _env->GetStringUTFChars(uniformBlockName, 0);
3368 
3369     _returnValue = glGetUniformBlockIndex(
3370         (GLuint)program,
3371         (GLchar *)_nativeuniformBlockName
3372     );
3373 
3374 exit:
3375     if (_nativeuniformBlockName) {
3376         _env->ReleaseStringUTFChars(uniformBlockName, _nativeuniformBlockName);
3377     }
3378 
3379     if (_exception) {
3380         jniThrowException(_env, _exceptionType, _exceptionMessage);
3381     }
3382     return (jint)_returnValue;
3383 }
3384 
3385 /* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */
3386 static void
android_glGetActiveUniformBlockiv__III_3II(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,jint pname,jintArray params_ref,jint offset)3387 android_glGetActiveUniformBlockiv__III_3II
3388   (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jintArray params_ref, jint offset) {
3389     jint _exception = 0;
3390     const char * _exceptionType = NULL;
3391     const char * _exceptionMessage = NULL;
3392     GLint *params_base = (GLint *) 0;
3393     jint _remaining;
3394     GLint *params = (GLint *) 0;
3395 
3396     if (!params_ref) {
3397         _exception = 1;
3398         _exceptionType = "java/lang/IllegalArgumentException";
3399         _exceptionMessage = "params == null";
3400         goto exit;
3401     }
3402     if (offset < 0) {
3403         _exception = 1;
3404         _exceptionType = "java/lang/IllegalArgumentException";
3405         _exceptionMessage = "offset < 0";
3406         goto exit;
3407     }
3408     _remaining = _env->GetArrayLength(params_ref) - offset;
3409     params_base = (GLint *)
3410         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3411     params = params_base + offset;
3412 
3413     glGetActiveUniformBlockiv(
3414         (GLuint)program,
3415         (GLuint)uniformBlockIndex,
3416         (GLenum)pname,
3417         (GLint *)params
3418     );
3419 
3420 exit:
3421     if (params_base) {
3422         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3423             _exception ? JNI_ABORT: 0);
3424     }
3425     if (_exception) {
3426         jniThrowException(_env, _exceptionType, _exceptionMessage);
3427     }
3428 }
3429 
3430 /* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */
3431 static void
android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,jint pname,jobject params_buf)3432 android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2
3433   (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jobject params_buf) {
3434     jarray _array = (jarray) 0;
3435     jint _bufferOffset = (jint) 0;
3436     jint _remaining;
3437     GLint *params = (GLint *) 0;
3438 
3439     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3440     if (params == NULL) {
3441         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3442         params = (GLint *) (_paramsBase + _bufferOffset);
3443     }
3444     glGetActiveUniformBlockiv(
3445         (GLuint)program,
3446         (GLuint)uniformBlockIndex,
3447         (GLenum)pname,
3448         (GLint *)params
3449     );
3450     if (_array) {
3451         releasePointer(_env, _array, params, JNI_TRUE);
3452     }
3453 }
3454 
3455 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
3456 static void
android_glGetActiveUniformBlockName_III_3II_3BI(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,int bufSize,jintArray length_ref,jint lengthOffset,jbyteArray name_ref,jint nameOffset)3457 android_glGetActiveUniformBlockName_III_3II_3BI
3458     (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) {
3459     jint _exception = 0;
3460     const char* _exceptionType;
3461     const char* _exceptionMessage;
3462     GLsizei* _length_base = (GLsizei*)0;
3463     jint _lengthRemaining;
3464     GLsizei* _length = (GLsizei*)0;
3465     GLchar* _name_base = (GLchar*)0;
3466     jint _nameRemaining;
3467     GLchar* _name = (GLchar*)0;
3468 
3469     if (!length_ref) {
3470         _exception = 1;
3471         _exceptionType = "java/lang/IllegalArgumentException";
3472         _exceptionMessage = "length == null";
3473         goto exit;
3474     }
3475     if (lengthOffset < 0) {
3476         _exception = 1;
3477         _exceptionType = "java/lang/IllegalArgumentException";
3478         _exceptionMessage = "lengthOffset < 0";
3479         goto exit;
3480     }
3481     _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3482     _length_base = (GLsizei*)_env->GetPrimitiveArrayCritical(
3483             length_ref, (jboolean*)0);
3484     _length = _length_base + lengthOffset;
3485 
3486     if (!name_ref) {
3487         _exception = 1;
3488         _exceptionType = "java/lang/IllegalArgumentException";
3489         _exceptionMessage = "uniformBlockName == null";
3490         goto exit;
3491     }
3492     if (nameOffset < 0) {
3493         _exception = 1;
3494         _exceptionType = "java/lang/IllegalArgumentException";
3495         _exceptionMessage = "uniformBlockNameOffset < 0";
3496         goto exit;
3497     }
3498     _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
3499     _name_base = (GLchar*)_env->GetPrimitiveArrayCritical(
3500             name_ref, (jboolean*)0);
3501     _name = _name_base + nameOffset;
3502 
3503     glGetActiveUniformBlockName(
3504         (GLuint)program,
3505         (GLuint)uniformBlockIndex,
3506         (GLsizei)bufSize,
3507         (GLsizei*)_length,
3508         (GLchar*)_name
3509     );
3510 
3511 exit:
3512     if (_name_base) {
3513         _env->ReleasePrimitiveArrayCritical(name_ref, _name_base,
3514             _exception ? JNI_ABORT: 0);
3515     }
3516     if (_length_base) {
3517         _env->ReleasePrimitiveArrayCritical(length_ref, _length_base,
3518             _exception ? JNI_ABORT: 0);
3519     }
3520     if (_exception) {
3521         jniThrowException(_env, _exceptionType, _exceptionMessage);
3522     }
3523 }
3524 
3525 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
3526 static void
android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,jobject length_buf,jobject uniformBlockName_buf)3527 android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2
3528     (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) {
3529     jint _exception = 0;
3530     const char* _exceptionType;
3531     const char* _exceptionMessage;
3532     jarray _lengthArray = (jarray)0;
3533     jint _lengthBufferOffset = (jint)0;
3534     GLsizei* _length = (GLsizei*)0;
3535     jint _lengthRemaining;
3536     jarray _nameArray = (jarray)0;
3537     jint _nameBufferOffset = (jint)0;
3538     GLchar* _name = (GLchar*)0;
3539     jint _nameRemaining;
3540 
3541     _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
3542     if (_length == NULL) {
3543         GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0);
3544         _length = (GLsizei*)(_lengthBase + _lengthBufferOffset);
3545     }
3546 
3547     _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset);
3548     if (_name == NULL) {
3549         GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0);
3550         _name = (GLchar*)(_nameBase + _nameBufferOffset);
3551     }
3552 
3553     glGetActiveUniformBlockName(
3554         (GLuint)program,
3555         (GLuint)uniformBlockIndex,
3556         (GLsizei)_nameRemaining,
3557         _length, _name
3558     );
3559     if (_nameArray) {
3560         releasePointer(_env, _nameArray, _name, JNI_TRUE);
3561     }
3562     if (_lengthArray) {
3563         releasePointer(_env, _lengthArray, _length, JNI_TRUE);
3564     }
3565 }
3566 
3567 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
3568 static jstring
android_glGetActiveUniformBlockName_II(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex)3569 android_glGetActiveUniformBlockName_II
3570     (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) {
3571     GLint len = 0;
3572     glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex,
3573             GL_UNIFORM_BLOCK_NAME_LENGTH, &len);
3574     GLchar* name = (GLchar*)malloc(len);
3575     glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex,
3576         len, NULL, name);
3577     jstring result = _env->NewStringUTF(name);
3578     free(name);
3579     return result;
3580 }
3581 
3582 /* void glUniformBlockBinding ( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) */
3583 static void
android_glUniformBlockBinding__III(JNIEnv * _env,jobject _this,jint program,jint uniformBlockIndex,jint uniformBlockBinding)3584 android_glUniformBlockBinding__III
3585   (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint uniformBlockBinding) {
3586     glUniformBlockBinding(
3587         (GLuint)program,
3588         (GLuint)uniformBlockIndex,
3589         (GLuint)uniformBlockBinding
3590     );
3591 }
3592 
3593 /* void glDrawArraysInstanced ( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) */
3594 static void
android_glDrawArraysInstanced__IIII(JNIEnv * _env,jobject _this,jint mode,jint first,jint count,jint instanceCount)3595 android_glDrawArraysInstanced__IIII
3596   (JNIEnv *_env, jobject _this, jint mode, jint first, jint count, jint instanceCount) {
3597     glDrawArraysInstanced(
3598         (GLenum)mode,
3599         (GLint)first,
3600         (GLsizei)count,
3601         (GLsizei)instanceCount
3602     );
3603 }
3604 
3605 /* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */
3606 static void
android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint mode,jint count,jint type,jobject indices_buf,jint instanceCount)3607 android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I
3608   (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount) {
3609     jarray _array = (jarray) 0;
3610     jint _bufferOffset = (jint) 0;
3611     jint _remaining;
3612     GLvoid *indices = (GLvoid *) 0;
3613 
3614     indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
3615     if (indices == NULL) {
3616         char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3617         indices = (GLvoid *) (_indicesBase + _bufferOffset);
3618     }
3619     glDrawElementsInstanced(
3620         (GLenum)mode,
3621         (GLsizei)count,
3622         (GLenum)type,
3623         (GLvoid *)indices,
3624         (GLsizei)instanceCount
3625     );
3626     if (_array) {
3627         releasePointer(_env, _array, indices, JNI_FALSE);
3628     }
3629 }
3630 
3631 /* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */
3632 static void
android_glDrawElementsInstanced__IIIII(JNIEnv * _env,jobject _this,jint mode,jint count,jint type,jint indicesOffset,jint instanceCount)3633 android_glDrawElementsInstanced__IIIII
3634   (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount) {
3635     glDrawElementsInstanced(
3636         (GLenum)mode,
3637         (GLsizei)count,
3638         (GLenum)type,
3639         (GLvoid *)indicesOffset,
3640         (GLsizei)instanceCount
3641     );
3642 }
3643 
3644 /* GLsync glFenceSync ( GLenum condition, GLbitfield flags ) */
3645 static jlong
android_glFenceSync__II(JNIEnv * _env,jobject _this,jint condition,jint flags)3646 android_glFenceSync__II
3647   (JNIEnv *_env, jobject _this, jint condition, jint flags) {
3648     GLsync _returnValue;
3649     _returnValue = glFenceSync(
3650         (GLenum)condition,
3651         (GLbitfield)flags
3652     );
3653     return (jlong)_returnValue;
3654 }
3655 
3656 /* GLboolean glIsSync ( GLsync sync ) */
3657 static jboolean
android_glIsSync__J(JNIEnv * _env,jobject _this,jlong sync)3658 android_glIsSync__J
3659   (JNIEnv *_env, jobject _this, jlong sync) {
3660     GLboolean _returnValue;
3661     _returnValue = glIsSync(
3662         (GLsync)sync
3663     );
3664     return (jboolean)_returnValue;
3665 }
3666 
3667 /* void glDeleteSync ( GLsync sync ) */
3668 static void
android_glDeleteSync__J(JNIEnv * _env,jobject _this,jlong sync)3669 android_glDeleteSync__J
3670   (JNIEnv *_env, jobject _this, jlong sync) {
3671     glDeleteSync(
3672         (GLsync)sync
3673     );
3674 }
3675 
3676 /* GLenum glClientWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */
3677 static jint
android_glClientWaitSync__JIJ(JNIEnv * _env,jobject _this,jlong sync,jint flags,jlong timeout)3678 android_glClientWaitSync__JIJ
3679   (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) {
3680     GLenum _returnValue;
3681     _returnValue = glClientWaitSync(
3682         (GLsync)sync,
3683         (GLbitfield)flags,
3684         (GLuint64)timeout
3685     );
3686     return (jint)_returnValue;
3687 }
3688 
3689 /* void glWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */
3690 static void
android_glWaitSync__JIJ(JNIEnv * _env,jobject _this,jlong sync,jint flags,jlong timeout)3691 android_glWaitSync__JIJ
3692   (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) {
3693     glWaitSync(
3694         (GLsync)sync,
3695         (GLbitfield)flags,
3696         (GLuint64)timeout
3697     );
3698 }
3699 
3700 /* void glGetInteger64v ( GLenum pname, GLint64 *params ) */
3701 static void
android_glGetInteger64v__I_3JI(JNIEnv * _env,jobject _this,jint pname,jlongArray params_ref,jint offset)3702 android_glGetInteger64v__I_3JI
3703   (JNIEnv *_env, jobject _this, jint pname, jlongArray params_ref, jint offset) {
3704     jint _exception = 0;
3705     const char * _exceptionType = NULL;
3706     const char * _exceptionMessage = NULL;
3707     GLint64 *params_base = (GLint64 *) 0;
3708     jint _remaining;
3709     GLint64 *params = (GLint64 *) 0;
3710 
3711     if (!params_ref) {
3712         _exception = 1;
3713         _exceptionType = "java/lang/IllegalArgumentException";
3714         _exceptionMessage = "params == null";
3715         goto exit;
3716     }
3717     if (offset < 0) {
3718         _exception = 1;
3719         _exceptionType = "java/lang/IllegalArgumentException";
3720         _exceptionMessage = "offset < 0";
3721         goto exit;
3722     }
3723     _remaining = _env->GetArrayLength(params_ref) - offset;
3724     params_base = (GLint64 *)
3725         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3726     params = params_base + offset;
3727 
3728     glGetInteger64v(
3729         (GLenum)pname,
3730         (GLint64 *)params
3731     );
3732 
3733 exit:
3734     if (params_base) {
3735         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3736             _exception ? JNI_ABORT: 0);
3737     }
3738     if (_exception) {
3739         jniThrowException(_env, _exceptionType, _exceptionMessage);
3740     }
3741 }
3742 
3743 /* void glGetInteger64v ( GLenum pname, GLint64 *params ) */
3744 static void
android_glGetInteger64v__ILjava_nio_LongBuffer_2(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)3745 android_glGetInteger64v__ILjava_nio_LongBuffer_2
3746   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
3747     jarray _array = (jarray) 0;
3748     jint _bufferOffset = (jint) 0;
3749     jint _remaining;
3750     GLint64 *params = (GLint64 *) 0;
3751 
3752     params = (GLint64 *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3753     if (params == NULL) {
3754         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3755         params = (GLint64 *) (_paramsBase + _bufferOffset);
3756     }
3757     glGetInteger64v(
3758         (GLenum)pname,
3759         (GLint64 *)params
3760     );
3761     if (_array) {
3762         releasePointer(_env, _array, params, JNI_TRUE);
3763     }
3764 }
3765 
3766 /* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */
3767 static void
android_glGetSynciv__JII_3II_3II(JNIEnv * _env,jobject _this,jlong sync,jint pname,jint bufSize,jintArray length_ref,jint lengthOffset,jintArray values_ref,jint valuesOffset)3768 android_glGetSynciv__JII_3II_3II
3769   (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray values_ref, jint valuesOffset) {
3770     jint _exception = 0;
3771     const char * _exceptionType = NULL;
3772     const char * _exceptionMessage = NULL;
3773     GLsizei *length_base = (GLsizei *) 0;
3774     jint _lengthRemaining;
3775     GLsizei *length = (GLsizei *) 0;
3776     GLint *values_base = (GLint *) 0;
3777     jint _valuesRemaining;
3778     GLint *values = (GLint *) 0;
3779 
3780     if (!length_ref) {
3781         _exception = 1;
3782         _exceptionType = "java/lang/IllegalArgumentException";
3783         _exceptionMessage = "length == null";
3784         goto exit;
3785     }
3786     if (lengthOffset < 0) {
3787         _exception = 1;
3788         _exceptionType = "java/lang/IllegalArgumentException";
3789         _exceptionMessage = "lengthOffset < 0";
3790         goto exit;
3791     }
3792     _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3793     length_base = (GLsizei *)
3794         _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
3795     length = length_base + lengthOffset;
3796 
3797     if (!values_ref) {
3798         _exception = 1;
3799         _exceptionType = "java/lang/IllegalArgumentException";
3800         _exceptionMessage = "values == null";
3801         goto exit;
3802     }
3803     if (valuesOffset < 0) {
3804         _exception = 1;
3805         _exceptionType = "java/lang/IllegalArgumentException";
3806         _exceptionMessage = "valuesOffset < 0";
3807         goto exit;
3808     }
3809     _valuesRemaining = _env->GetArrayLength(values_ref) - valuesOffset;
3810     values_base = (GLint *)
3811         _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
3812     values = values_base + valuesOffset;
3813 
3814     glGetSynciv(
3815         (GLsync)sync,
3816         (GLenum)pname,
3817         (GLsizei)bufSize,
3818         (GLsizei *)length,
3819         (GLint *)values
3820     );
3821 
3822 exit:
3823     if (values_base) {
3824         _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
3825             _exception ? JNI_ABORT: 0);
3826     }
3827     if (length_base) {
3828         _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
3829             _exception ? JNI_ABORT: 0);
3830     }
3831     if (_exception) {
3832         jniThrowException(_env, _exceptionType, _exceptionMessage);
3833     }
3834 }
3835 
3836 /* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */
3837 static void
android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jlong sync,jint pname,jint bufSize,jobject length_buf,jobject values_buf)3838 android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
3839   (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jobject length_buf, jobject values_buf) {
3840     jarray _lengthArray = (jarray) 0;
3841     jint _lengthBufferOffset = (jint) 0;
3842     jarray _valuesArray = (jarray) 0;
3843     jint _valuesBufferOffset = (jint) 0;
3844     jint _lengthRemaining;
3845     GLsizei *length = (GLsizei *) 0;
3846     jint _valuesRemaining;
3847     GLint *values = (GLint *) 0;
3848 
3849     length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
3850     values = (GLint *)getPointer(_env, values_buf, &_valuesArray, &_valuesRemaining, &_valuesBufferOffset);
3851     if (length == NULL) {
3852         char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
3853         length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
3854     }
3855     if (values == NULL) {
3856         char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_valuesArray, (jboolean *) 0);
3857         values = (GLint *) (_valuesBase + _valuesBufferOffset);
3858     }
3859     glGetSynciv(
3860         (GLsync)sync,
3861         (GLenum)pname,
3862         (GLsizei)bufSize,
3863         (GLsizei *)length,
3864         (GLint *)values
3865     );
3866     if (_valuesArray) {
3867         releasePointer(_env, _valuesArray, values, JNI_TRUE);
3868     }
3869     if (_lengthArray) {
3870         releasePointer(_env, _lengthArray, length, JNI_TRUE);
3871     }
3872 }
3873 
3874 /* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */
3875 static void
android_glGetInteger64i_v__II_3JI(JNIEnv * _env,jobject _this,jint target,jint index,jlongArray data_ref,jint offset)3876 android_glGetInteger64i_v__II_3JI
3877   (JNIEnv *_env, jobject _this, jint target, jint index, jlongArray data_ref, jint offset) {
3878     jint _exception = 0;
3879     const char * _exceptionType = NULL;
3880     const char * _exceptionMessage = NULL;
3881     GLint64 *data_base = (GLint64 *) 0;
3882     jint _remaining;
3883     GLint64 *data = (GLint64 *) 0;
3884 
3885     if (!data_ref) {
3886         _exception = 1;
3887         _exceptionType = "java/lang/IllegalArgumentException";
3888         _exceptionMessage = "data == null";
3889         goto exit;
3890     }
3891     if (offset < 0) {
3892         _exception = 1;
3893         _exceptionType = "java/lang/IllegalArgumentException";
3894         _exceptionMessage = "offset < 0";
3895         goto exit;
3896     }
3897     _remaining = _env->GetArrayLength(data_ref) - offset;
3898     data_base = (GLint64 *)
3899         _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0);
3900     data = data_base + offset;
3901 
3902     glGetInteger64i_v(
3903         (GLenum)target,
3904         (GLuint)index,
3905         (GLint64 *)data
3906     );
3907 
3908 exit:
3909     if (data_base) {
3910         _env->ReleasePrimitiveArrayCritical(data_ref, data_base,
3911             _exception ? JNI_ABORT: 0);
3912     }
3913     if (_exception) {
3914         jniThrowException(_env, _exceptionType, _exceptionMessage);
3915     }
3916 }
3917 
3918 /* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */
3919 static void
android_glGetInteger64i_v__IILjava_nio_LongBuffer_2(JNIEnv * _env,jobject _this,jint target,jint index,jobject data_buf)3920 android_glGetInteger64i_v__IILjava_nio_LongBuffer_2
3921   (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) {
3922     jarray _array = (jarray) 0;
3923     jint _bufferOffset = (jint) 0;
3924     jint _remaining;
3925     GLint64 *data = (GLint64 *) 0;
3926 
3927     data = (GLint64 *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
3928     if (data == NULL) {
3929         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3930         data = (GLint64 *) (_dataBase + _bufferOffset);
3931     }
3932     glGetInteger64i_v(
3933         (GLenum)target,
3934         (GLuint)index,
3935         (GLint64 *)data
3936     );
3937     if (_array) {
3938         releasePointer(_env, _array, data, JNI_TRUE);
3939     }
3940 }
3941 
3942 /* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */
3943 static void
android_glGetBufferParameteri64v__II_3JI(JNIEnv * _env,jobject _this,jint target,jint pname,jlongArray params_ref,jint offset)3944 android_glGetBufferParameteri64v__II_3JI
3945   (JNIEnv *_env, jobject _this, jint target, jint pname, jlongArray params_ref, jint offset) {
3946     jint _exception = 0;
3947     const char * _exceptionType = NULL;
3948     const char * _exceptionMessage = NULL;
3949     GLint64 *params_base = (GLint64 *) 0;
3950     jint _remaining;
3951     GLint64 *params = (GLint64 *) 0;
3952 
3953     if (!params_ref) {
3954         _exception = 1;
3955         _exceptionType = "java/lang/IllegalArgumentException";
3956         _exceptionMessage = "params == null";
3957         goto exit;
3958     }
3959     if (offset < 0) {
3960         _exception = 1;
3961         _exceptionType = "java/lang/IllegalArgumentException";
3962         _exceptionMessage = "offset < 0";
3963         goto exit;
3964     }
3965     _remaining = _env->GetArrayLength(params_ref) - offset;
3966     params_base = (GLint64 *)
3967         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3968     params = params_base + offset;
3969 
3970     glGetBufferParameteri64v(
3971         (GLenum)target,
3972         (GLenum)pname,
3973         (GLint64 *)params
3974     );
3975 
3976 exit:
3977     if (params_base) {
3978         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3979             _exception ? JNI_ABORT: 0);
3980     }
3981     if (_exception) {
3982         jniThrowException(_env, _exceptionType, _exceptionMessage);
3983     }
3984 }
3985 
3986 /* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */
3987 static void
android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)3988 android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2
3989   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3990     jarray _array = (jarray) 0;
3991     jint _bufferOffset = (jint) 0;
3992     jint _remaining;
3993     GLint64 *params = (GLint64 *) 0;
3994 
3995     params = (GLint64 *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3996     if (params == NULL) {
3997         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3998         params = (GLint64 *) (_paramsBase + _bufferOffset);
3999     }
4000     glGetBufferParameteri64v(
4001         (GLenum)target,
4002         (GLenum)pname,
4003         (GLint64 *)params
4004     );
4005     if (_array) {
4006         releasePointer(_env, _array, params, JNI_TRUE);
4007     }
4008 }
4009 
4010 /* void glGenSamplers ( GLsizei count, GLuint *samplers ) */
4011 static void
android_glGenSamplers__I_3II(JNIEnv * _env,jobject _this,jint count,jintArray samplers_ref,jint offset)4012 android_glGenSamplers__I_3II
4013   (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) {
4014     jint _exception = 0;
4015     const char * _exceptionType = NULL;
4016     const char * _exceptionMessage = NULL;
4017     GLuint *samplers_base = (GLuint *) 0;
4018     jint _remaining;
4019     GLuint *samplers = (GLuint *) 0;
4020 
4021     if (!samplers_ref) {
4022         _exception = 1;
4023         _exceptionType = "java/lang/IllegalArgumentException";
4024         _exceptionMessage = "samplers == null";
4025         goto exit;
4026     }
4027     if (offset < 0) {
4028         _exception = 1;
4029         _exceptionType = "java/lang/IllegalArgumentException";
4030         _exceptionMessage = "offset < 0";
4031         goto exit;
4032     }
4033     _remaining = _env->GetArrayLength(samplers_ref) - offset;
4034     samplers_base = (GLuint *)
4035         _env->GetPrimitiveArrayCritical(samplers_ref, (jboolean *)0);
4036     samplers = samplers_base + offset;
4037 
4038     glGenSamplers(
4039         (GLsizei)count,
4040         (GLuint *)samplers
4041     );
4042 
4043 exit:
4044     if (samplers_base) {
4045         _env->ReleasePrimitiveArrayCritical(samplers_ref, samplers_base,
4046             _exception ? JNI_ABORT: 0);
4047     }
4048     if (_exception) {
4049         jniThrowException(_env, _exceptionType, _exceptionMessage);
4050     }
4051 }
4052 
4053 /* void glGenSamplers ( GLsizei count, GLuint *samplers ) */
4054 static void
android_glGenSamplers__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint count,jobject samplers_buf)4055 android_glGenSamplers__ILjava_nio_IntBuffer_2
4056   (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) {
4057     jarray _array = (jarray) 0;
4058     jint _bufferOffset = (jint) 0;
4059     jint _remaining;
4060     GLuint *samplers = (GLuint *) 0;
4061 
4062     samplers = (GLuint *)getPointer(_env, samplers_buf, &_array, &_remaining, &_bufferOffset);
4063     if (samplers == NULL) {
4064         char * _samplersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4065         samplers = (GLuint *) (_samplersBase + _bufferOffset);
4066     }
4067     glGenSamplers(
4068         (GLsizei)count,
4069         (GLuint *)samplers
4070     );
4071     if (_array) {
4072         releasePointer(_env, _array, samplers, JNI_TRUE);
4073     }
4074 }
4075 
4076 /* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */
4077 static void
android_glDeleteSamplers__I_3II(JNIEnv * _env,jobject _this,jint count,jintArray samplers_ref,jint offset)4078 android_glDeleteSamplers__I_3II
4079   (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) {
4080     jint _exception = 0;
4081     const char * _exceptionType = NULL;
4082     const char * _exceptionMessage = NULL;
4083     GLuint *samplers_base = (GLuint *) 0;
4084     jint _remaining;
4085     GLuint *samplers = (GLuint *) 0;
4086 
4087     if (!samplers_ref) {
4088         _exception = 1;
4089         _exceptionType = "java/lang/IllegalArgumentException";
4090         _exceptionMessage = "samplers == null";
4091         goto exit;
4092     }
4093     if (offset < 0) {
4094         _exception = 1;
4095         _exceptionType = "java/lang/IllegalArgumentException";
4096         _exceptionMessage = "offset < 0";
4097         goto exit;
4098     }
4099     _remaining = _env->GetArrayLength(samplers_ref) - offset;
4100     samplers_base = (GLuint *)
4101         _env->GetPrimitiveArrayCritical(samplers_ref, (jboolean *)0);
4102     samplers = samplers_base + offset;
4103 
4104     glDeleteSamplers(
4105         (GLsizei)count,
4106         (GLuint *)samplers
4107     );
4108 
4109 exit:
4110     if (samplers_base) {
4111         _env->ReleasePrimitiveArrayCritical(samplers_ref, samplers_base,
4112             JNI_ABORT);
4113     }
4114     if (_exception) {
4115         jniThrowException(_env, _exceptionType, _exceptionMessage);
4116     }
4117 }
4118 
4119 /* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */
4120 static void
android_glDeleteSamplers__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint count,jobject samplers_buf)4121 android_glDeleteSamplers__ILjava_nio_IntBuffer_2
4122   (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) {
4123     jarray _array = (jarray) 0;
4124     jint _bufferOffset = (jint) 0;
4125     jint _remaining;
4126     GLuint *samplers = (GLuint *) 0;
4127 
4128     samplers = (GLuint *)getPointer(_env, samplers_buf, &_array, &_remaining, &_bufferOffset);
4129     if (samplers == NULL) {
4130         char * _samplersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4131         samplers = (GLuint *) (_samplersBase + _bufferOffset);
4132     }
4133     glDeleteSamplers(
4134         (GLsizei)count,
4135         (GLuint *)samplers
4136     );
4137     if (_array) {
4138         releasePointer(_env, _array, samplers, JNI_FALSE);
4139     }
4140 }
4141 
4142 /* GLboolean glIsSampler ( GLuint sampler ) */
4143 static jboolean
android_glIsSampler__I(JNIEnv * _env,jobject _this,jint sampler)4144 android_glIsSampler__I
4145   (JNIEnv *_env, jobject _this, jint sampler) {
4146     GLboolean _returnValue;
4147     _returnValue = glIsSampler(
4148         (GLuint)sampler
4149     );
4150     return (jboolean)_returnValue;
4151 }
4152 
4153 /* void glBindSampler ( GLuint unit, GLuint sampler ) */
4154 static void
android_glBindSampler__II(JNIEnv * _env,jobject _this,jint unit,jint sampler)4155 android_glBindSampler__II
4156   (JNIEnv *_env, jobject _this, jint unit, jint sampler) {
4157     glBindSampler(
4158         (GLuint)unit,
4159         (GLuint)sampler
4160     );
4161 }
4162 
4163 /* void glSamplerParameteri ( GLuint sampler, GLenum pname, GLint param ) */
4164 static void
android_glSamplerParameteri__III(JNIEnv * _env,jobject _this,jint sampler,jint pname,jint param)4165 android_glSamplerParameteri__III
4166   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jint param) {
4167     glSamplerParameteri(
4168         (GLuint)sampler,
4169         (GLenum)pname,
4170         (GLint)param
4171     );
4172 }
4173 
4174 /* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */
4175 static void
android_glSamplerParameteriv__II_3II(JNIEnv * _env,jobject _this,jint sampler,jint pname,jintArray param_ref,jint offset)4176 android_glSamplerParameteriv__II_3II
4177   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) {
4178     jint _exception = 0;
4179     const char * _exceptionType = NULL;
4180     const char * _exceptionMessage = NULL;
4181     GLint *param_base = (GLint *) 0;
4182     jint _remaining;
4183     GLint *param = (GLint *) 0;
4184 
4185     if (!param_ref) {
4186         _exception = 1;
4187         _exceptionType = "java/lang/IllegalArgumentException";
4188         _exceptionMessage = "param == null";
4189         goto exit;
4190     }
4191     if (offset < 0) {
4192         _exception = 1;
4193         _exceptionType = "java/lang/IllegalArgumentException";
4194         _exceptionMessage = "offset < 0";
4195         goto exit;
4196     }
4197     _remaining = _env->GetArrayLength(param_ref) - offset;
4198     param_base = (GLint *)
4199         _env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0);
4200     param = param_base + offset;
4201 
4202     glSamplerParameteriv(
4203         (GLuint)sampler,
4204         (GLenum)pname,
4205         (GLint *)param
4206     );
4207 
4208 exit:
4209     if (param_base) {
4210         _env->ReleasePrimitiveArrayCritical(param_ref, param_base,
4211             JNI_ABORT);
4212     }
4213     if (_exception) {
4214         jniThrowException(_env, _exceptionType, _exceptionMessage);
4215     }
4216 }
4217 
4218 /* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */
4219 static void
android_glSamplerParameteriv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject param_buf)4220 android_glSamplerParameteriv__IILjava_nio_IntBuffer_2
4221   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
4222     jarray _array = (jarray) 0;
4223     jint _bufferOffset = (jint) 0;
4224     jint _remaining;
4225     GLint *param = (GLint *) 0;
4226 
4227     param = (GLint *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset);
4228     if (param == NULL) {
4229         char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4230         param = (GLint *) (_paramBase + _bufferOffset);
4231     }
4232     glSamplerParameteriv(
4233         (GLuint)sampler,
4234         (GLenum)pname,
4235         (GLint *)param
4236     );
4237     if (_array) {
4238         releasePointer(_env, _array, param, JNI_FALSE);
4239     }
4240 }
4241 
4242 /* void glSamplerParameterf ( GLuint sampler, GLenum pname, GLfloat param ) */
4243 static void
android_glSamplerParameterf__IIF(JNIEnv * _env,jobject _this,jint sampler,jint pname,jfloat param)4244 android_glSamplerParameterf__IIF
4245   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloat param) {
4246     glSamplerParameterf(
4247         (GLuint)sampler,
4248         (GLenum)pname,
4249         (GLfloat)param
4250     );
4251 }
4252 
4253 /* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */
4254 static void
android_glSamplerParameterfv__II_3FI(JNIEnv * _env,jobject _this,jint sampler,jint pname,jfloatArray param_ref,jint offset)4255 android_glSamplerParameterfv__II_3FI
4256   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray param_ref, jint offset) {
4257     jint _exception = 0;
4258     const char * _exceptionType = NULL;
4259     const char * _exceptionMessage = NULL;
4260     GLfloat *param_base = (GLfloat *) 0;
4261     jint _remaining;
4262     GLfloat *param = (GLfloat *) 0;
4263 
4264     if (!param_ref) {
4265         _exception = 1;
4266         _exceptionType = "java/lang/IllegalArgumentException";
4267         _exceptionMessage = "param == null";
4268         goto exit;
4269     }
4270     if (offset < 0) {
4271         _exception = 1;
4272         _exceptionType = "java/lang/IllegalArgumentException";
4273         _exceptionMessage = "offset < 0";
4274         goto exit;
4275     }
4276     _remaining = _env->GetArrayLength(param_ref) - offset;
4277     param_base = (GLfloat *)
4278         _env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0);
4279     param = param_base + offset;
4280 
4281     glSamplerParameterfv(
4282         (GLuint)sampler,
4283         (GLenum)pname,
4284         (GLfloat *)param
4285     );
4286 
4287 exit:
4288     if (param_base) {
4289         _env->ReleasePrimitiveArrayCritical(param_ref, param_base,
4290             JNI_ABORT);
4291     }
4292     if (_exception) {
4293         jniThrowException(_env, _exceptionType, _exceptionMessage);
4294     }
4295 }
4296 
4297 /* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */
4298 static void
android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject param_buf)4299 android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2
4300   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
4301     jarray _array = (jarray) 0;
4302     jint _bufferOffset = (jint) 0;
4303     jint _remaining;
4304     GLfloat *param = (GLfloat *) 0;
4305 
4306     param = (GLfloat *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset);
4307     if (param == NULL) {
4308         char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4309         param = (GLfloat *) (_paramBase + _bufferOffset);
4310     }
4311     glSamplerParameterfv(
4312         (GLuint)sampler,
4313         (GLenum)pname,
4314         (GLfloat *)param
4315     );
4316     if (_array) {
4317         releasePointer(_env, _array, param, JNI_FALSE);
4318     }
4319 }
4320 
4321 /* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */
4322 static void
android_glGetSamplerParameteriv__II_3II(JNIEnv * _env,jobject _this,jint sampler,jint pname,jintArray params_ref,jint offset)4323 android_glGetSamplerParameteriv__II_3II
4324   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) {
4325     jint _exception = 0;
4326     const char * _exceptionType = NULL;
4327     const char * _exceptionMessage = NULL;
4328     GLint *params_base = (GLint *) 0;
4329     jint _remaining;
4330     GLint *params = (GLint *) 0;
4331 
4332     if (!params_ref) {
4333         _exception = 1;
4334         _exceptionType = "java/lang/IllegalArgumentException";
4335         _exceptionMessage = "params == null";
4336         goto exit;
4337     }
4338     if (offset < 0) {
4339         _exception = 1;
4340         _exceptionType = "java/lang/IllegalArgumentException";
4341         _exceptionMessage = "offset < 0";
4342         goto exit;
4343     }
4344     _remaining = _env->GetArrayLength(params_ref) - offset;
4345     params_base = (GLint *)
4346         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4347     params = params_base + offset;
4348 
4349     glGetSamplerParameteriv(
4350         (GLuint)sampler,
4351         (GLenum)pname,
4352         (GLint *)params
4353     );
4354 
4355 exit:
4356     if (params_base) {
4357         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4358             _exception ? JNI_ABORT: 0);
4359     }
4360     if (_exception) {
4361         jniThrowException(_env, _exceptionType, _exceptionMessage);
4362     }
4363 }
4364 
4365 /* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */
4366 static void
android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject params_buf)4367 android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2
4368   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
4369     jarray _array = (jarray) 0;
4370     jint _bufferOffset = (jint) 0;
4371     jint _remaining;
4372     GLint *params = (GLint *) 0;
4373 
4374     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4375     if (params == NULL) {
4376         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4377         params = (GLint *) (_paramsBase + _bufferOffset);
4378     }
4379     glGetSamplerParameteriv(
4380         (GLuint)sampler,
4381         (GLenum)pname,
4382         (GLint *)params
4383     );
4384     if (_array) {
4385         releasePointer(_env, _array, params, JNI_TRUE);
4386     }
4387 }
4388 
4389 /* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */
4390 static void
android_glGetSamplerParameterfv__II_3FI(JNIEnv * _env,jobject _this,jint sampler,jint pname,jfloatArray params_ref,jint offset)4391 android_glGetSamplerParameterfv__II_3FI
4392   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray params_ref, jint offset) {
4393     jint _exception = 0;
4394     const char * _exceptionType = NULL;
4395     const char * _exceptionMessage = NULL;
4396     GLfloat *params_base = (GLfloat *) 0;
4397     jint _remaining;
4398     GLfloat *params = (GLfloat *) 0;
4399 
4400     if (!params_ref) {
4401         _exception = 1;
4402         _exceptionType = "java/lang/IllegalArgumentException";
4403         _exceptionMessage = "params == null";
4404         goto exit;
4405     }
4406     if (offset < 0) {
4407         _exception = 1;
4408         _exceptionType = "java/lang/IllegalArgumentException";
4409         _exceptionMessage = "offset < 0";
4410         goto exit;
4411     }
4412     _remaining = _env->GetArrayLength(params_ref) - offset;
4413     params_base = (GLfloat *)
4414         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4415     params = params_base + offset;
4416 
4417     glGetSamplerParameterfv(
4418         (GLuint)sampler,
4419         (GLenum)pname,
4420         (GLfloat *)params
4421     );
4422 
4423 exit:
4424     if (params_base) {
4425         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4426             _exception ? JNI_ABORT: 0);
4427     }
4428     if (_exception) {
4429         jniThrowException(_env, _exceptionType, _exceptionMessage);
4430     }
4431 }
4432 
4433 /* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */
4434 static void
android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject params_buf)4435 android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2
4436   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
4437     jarray _array = (jarray) 0;
4438     jint _bufferOffset = (jint) 0;
4439     jint _remaining;
4440     GLfloat *params = (GLfloat *) 0;
4441 
4442     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4443     if (params == NULL) {
4444         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4445         params = (GLfloat *) (_paramsBase + _bufferOffset);
4446     }
4447     glGetSamplerParameterfv(
4448         (GLuint)sampler,
4449         (GLenum)pname,
4450         (GLfloat *)params
4451     );
4452     if (_array) {
4453         releasePointer(_env, _array, params, JNI_TRUE);
4454     }
4455 }
4456 
4457 /* void glVertexAttribDivisor ( GLuint index, GLuint divisor ) */
4458 static void
android_glVertexAttribDivisor__II(JNIEnv * _env,jobject _this,jint index,jint divisor)4459 android_glVertexAttribDivisor__II
4460   (JNIEnv *_env, jobject _this, jint index, jint divisor) {
4461     glVertexAttribDivisor(
4462         (GLuint)index,
4463         (GLuint)divisor
4464     );
4465 }
4466 
4467 /* void glBindTransformFeedback ( GLenum target, GLuint id ) */
4468 static void
android_glBindTransformFeedback__II(JNIEnv * _env,jobject _this,jint target,jint id)4469 android_glBindTransformFeedback__II
4470   (JNIEnv *_env, jobject _this, jint target, jint id) {
4471     glBindTransformFeedback(
4472         (GLenum)target,
4473         (GLuint)id
4474     );
4475 }
4476 
4477 /* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */
4478 static void
android_glDeleteTransformFeedbacks__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray ids_ref,jint offset)4479 android_glDeleteTransformFeedbacks__I_3II
4480   (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
4481     jint _exception = 0;
4482     const char * _exceptionType = NULL;
4483     const char * _exceptionMessage = NULL;
4484     GLuint *ids_base = (GLuint *) 0;
4485     jint _remaining;
4486     GLuint *ids = (GLuint *) 0;
4487 
4488     if (!ids_ref) {
4489         _exception = 1;
4490         _exceptionType = "java/lang/IllegalArgumentException";
4491         _exceptionMessage = "ids == null";
4492         goto exit;
4493     }
4494     if (offset < 0) {
4495         _exception = 1;
4496         _exceptionType = "java/lang/IllegalArgumentException";
4497         _exceptionMessage = "offset < 0";
4498         goto exit;
4499     }
4500     _remaining = _env->GetArrayLength(ids_ref) - offset;
4501     ids_base = (GLuint *)
4502         _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
4503     ids = ids_base + offset;
4504 
4505     glDeleteTransformFeedbacks(
4506         (GLsizei)n,
4507         (GLuint *)ids
4508     );
4509 
4510 exit:
4511     if (ids_base) {
4512         _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
4513             JNI_ABORT);
4514     }
4515     if (_exception) {
4516         jniThrowException(_env, _exceptionType, _exceptionMessage);
4517     }
4518 }
4519 
4520 /* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */
4521 static void
android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject ids_buf)4522 android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2
4523   (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
4524     jarray _array = (jarray) 0;
4525     jint _bufferOffset = (jint) 0;
4526     jint _remaining;
4527     GLuint *ids = (GLuint *) 0;
4528 
4529     ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
4530     if (ids == NULL) {
4531         char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4532         ids = (GLuint *) (_idsBase + _bufferOffset);
4533     }
4534     glDeleteTransformFeedbacks(
4535         (GLsizei)n,
4536         (GLuint *)ids
4537     );
4538     if (_array) {
4539         releasePointer(_env, _array, ids, JNI_FALSE);
4540     }
4541 }
4542 
4543 /* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */
4544 static void
android_glGenTransformFeedbacks__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray ids_ref,jint offset)4545 android_glGenTransformFeedbacks__I_3II
4546   (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
4547     jint _exception = 0;
4548     const char * _exceptionType = NULL;
4549     const char * _exceptionMessage = NULL;
4550     GLuint *ids_base = (GLuint *) 0;
4551     jint _remaining;
4552     GLuint *ids = (GLuint *) 0;
4553 
4554     if (!ids_ref) {
4555         _exception = 1;
4556         _exceptionType = "java/lang/IllegalArgumentException";
4557         _exceptionMessage = "ids == null";
4558         goto exit;
4559     }
4560     if (offset < 0) {
4561         _exception = 1;
4562         _exceptionType = "java/lang/IllegalArgumentException";
4563         _exceptionMessage = "offset < 0";
4564         goto exit;
4565     }
4566     _remaining = _env->GetArrayLength(ids_ref) - offset;
4567     ids_base = (GLuint *)
4568         _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
4569     ids = ids_base + offset;
4570 
4571     glGenTransformFeedbacks(
4572         (GLsizei)n,
4573         (GLuint *)ids
4574     );
4575 
4576 exit:
4577     if (ids_base) {
4578         _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
4579             _exception ? JNI_ABORT: 0);
4580     }
4581     if (_exception) {
4582         jniThrowException(_env, _exceptionType, _exceptionMessage);
4583     }
4584 }
4585 
4586 /* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */
4587 static void
android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject ids_buf)4588 android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2
4589   (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
4590     jarray _array = (jarray) 0;
4591     jint _bufferOffset = (jint) 0;
4592     jint _remaining;
4593     GLuint *ids = (GLuint *) 0;
4594 
4595     ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
4596     if (ids == NULL) {
4597         char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4598         ids = (GLuint *) (_idsBase + _bufferOffset);
4599     }
4600     glGenTransformFeedbacks(
4601         (GLsizei)n,
4602         (GLuint *)ids
4603     );
4604     if (_array) {
4605         releasePointer(_env, _array, ids, JNI_TRUE);
4606     }
4607 }
4608 
4609 /* GLboolean glIsTransformFeedback ( GLuint id ) */
4610 static jboolean
android_glIsTransformFeedback__I(JNIEnv * _env,jobject _this,jint id)4611 android_glIsTransformFeedback__I
4612   (JNIEnv *_env, jobject _this, jint id) {
4613     GLboolean _returnValue;
4614     _returnValue = glIsTransformFeedback(
4615         (GLuint)id
4616     );
4617     return (jboolean)_returnValue;
4618 }
4619 
4620 /* void glPauseTransformFeedback ( void ) */
4621 static void
android_glPauseTransformFeedback__(JNIEnv * _env,jobject _this)4622 android_glPauseTransformFeedback__
4623   (JNIEnv *_env, jobject _this) {
4624     glPauseTransformFeedback();
4625 }
4626 
4627 /* void glResumeTransformFeedback ( void ) */
4628 static void
android_glResumeTransformFeedback__(JNIEnv * _env,jobject _this)4629 android_glResumeTransformFeedback__
4630   (JNIEnv *_env, jobject _this) {
4631     glResumeTransformFeedback();
4632 }
4633 
4634 /* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */
4635 static void
android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint program,jint bufSize,jintArray length_ref,jint lengthOffset,jintArray binaryFormat_ref,jint binaryFormatOffset,jobject binary_buf)4636 android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2
4637   (JNIEnv *_env, jobject _this, jint program, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray binaryFormat_ref, jint binaryFormatOffset, jobject binary_buf) {
4638     jint _exception = 0;
4639     const char * _exceptionType = NULL;
4640     const char * _exceptionMessage = NULL;
4641     jarray _array = (jarray) 0;
4642     jint _bufferOffset = (jint) 0;
4643     GLsizei *length_base = (GLsizei *) 0;
4644     jint _lengthRemaining;
4645     GLsizei *length = (GLsizei *) 0;
4646     GLenum *binaryFormat_base = (GLenum *) 0;
4647     jint _binaryFormatRemaining;
4648     GLenum *binaryFormat = (GLenum *) 0;
4649     jint _binaryRemaining;
4650     GLvoid *binary = (GLvoid *) 0;
4651 
4652     if (!length_ref) {
4653         _exception = 1;
4654         _exceptionType = "java/lang/IllegalArgumentException";
4655         _exceptionMessage = "length == null";
4656         goto exit;
4657     }
4658     if (lengthOffset < 0) {
4659         _exception = 1;
4660         _exceptionType = "java/lang/IllegalArgumentException";
4661         _exceptionMessage = "lengthOffset < 0";
4662         goto exit;
4663     }
4664     _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
4665     length_base = (GLsizei *)
4666         _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
4667     length = length_base + lengthOffset;
4668 
4669     if (!binaryFormat_ref) {
4670         _exception = 1;
4671         _exceptionType = "java/lang/IllegalArgumentException";
4672         _exceptionMessage = "binaryFormat == null";
4673         goto exit;
4674     }
4675     if (binaryFormatOffset < 0) {
4676         _exception = 1;
4677         _exceptionType = "java/lang/IllegalArgumentException";
4678         _exceptionMessage = "binaryFormatOffset < 0";
4679         goto exit;
4680     }
4681     _binaryFormatRemaining = _env->GetArrayLength(binaryFormat_ref) - binaryFormatOffset;
4682     binaryFormat_base = (GLenum *)
4683         _env->GetPrimitiveArrayCritical(binaryFormat_ref, (jboolean *)0);
4684     binaryFormat = binaryFormat_base + binaryFormatOffset;
4685 
4686     binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset);
4687     if (binary == NULL) {
4688         char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4689         binary = (GLvoid *) (_binaryBase + _bufferOffset);
4690     }
4691     glGetProgramBinary(
4692         (GLuint)program,
4693         (GLsizei)bufSize,
4694         (GLsizei *)length,
4695         (GLenum *)binaryFormat,
4696         (GLvoid *)binary
4697     );
4698 
4699 exit:
4700     if (_array) {
4701         releasePointer(_env, _array, binary, _exception ? JNI_FALSE : JNI_TRUE);
4702     }
4703     if (binaryFormat_base) {
4704         _env->ReleasePrimitiveArrayCritical(binaryFormat_ref, binaryFormat_base,
4705             _exception ? JNI_ABORT: 0);
4706     }
4707     if (length_base) {
4708         _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
4709             _exception ? JNI_ABORT: 0);
4710     }
4711     if (_exception) {
4712         jniThrowException(_env, _exceptionType, _exceptionMessage);
4713     }
4714 }
4715 
4716 /* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */
4717 static void
android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint program,jint bufSize,jobject length_buf,jobject binaryFormat_buf,jobject binary_buf)4718 android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2
4719   (JNIEnv *_env, jobject _this, jint program, jint bufSize, jobject length_buf, jobject binaryFormat_buf, jobject binary_buf) {
4720     jarray _lengthArray = (jarray) 0;
4721     jint _lengthBufferOffset = (jint) 0;
4722     jarray _binaryFormatArray = (jarray) 0;
4723     jint _binaryFormatBufferOffset = (jint) 0;
4724     jarray _binaryArray = (jarray) 0;
4725     jint _binaryBufferOffset = (jint) 0;
4726     jint _lengthRemaining;
4727     GLsizei *length = (GLsizei *) 0;
4728     jint _binaryFormatRemaining;
4729     GLenum *binaryFormat = (GLenum *) 0;
4730     jint _binaryRemaining;
4731     GLvoid *binary = (GLvoid *) 0;
4732 
4733     length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
4734     binaryFormat = (GLenum *)getPointer(_env, binaryFormat_buf, &_binaryFormatArray, &_binaryFormatRemaining, &_binaryFormatBufferOffset);
4735     binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset);
4736     if (length == NULL) {
4737         char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
4738         length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
4739     }
4740     if (binaryFormat == NULL) {
4741         char * _binaryFormatBase = (char *)_env->GetPrimitiveArrayCritical(_binaryFormatArray, (jboolean *) 0);
4742         binaryFormat = (GLenum *) (_binaryFormatBase + _binaryFormatBufferOffset);
4743     }
4744     if (binary == NULL) {
4745         char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0);
4746         binary = (GLvoid *) (_binaryBase + _binaryBufferOffset);
4747     }
4748     glGetProgramBinary(
4749         (GLuint)program,
4750         (GLsizei)bufSize,
4751         (GLsizei *)length,
4752         (GLenum *)binaryFormat,
4753         (GLvoid *)binary
4754     );
4755     if (_binaryArray) {
4756         releasePointer(_env, _binaryArray, binary, JNI_TRUE);
4757     }
4758     if (_binaryFormatArray) {
4759         releasePointer(_env, _binaryFormatArray, binaryFormat, JNI_TRUE);
4760     }
4761     if (_lengthArray) {
4762         releasePointer(_env, _lengthArray, length, JNI_TRUE);
4763     }
4764 }
4765 
4766 /* void glProgramBinary ( GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length ) */
4767 static void
android_glProgramBinary__IILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint program,jint binaryFormat,jobject binary_buf,jint length)4768 android_glProgramBinary__IILjava_nio_Buffer_2I
4769   (JNIEnv *_env, jobject _this, jint program, jint binaryFormat, jobject binary_buf, jint length) {
4770     jarray _array = (jarray) 0;
4771     jint _bufferOffset = (jint) 0;
4772     jint _remaining;
4773     GLvoid *binary = (GLvoid *) 0;
4774 
4775     binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_remaining, &_bufferOffset);
4776     if (binary == NULL) {
4777         char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4778         binary = (GLvoid *) (_binaryBase + _bufferOffset);
4779     }
4780     glProgramBinary(
4781         (GLuint)program,
4782         (GLenum)binaryFormat,
4783         (GLvoid *)binary,
4784         (GLsizei)length
4785     );
4786     if (_array) {
4787         releasePointer(_env, _array, binary, JNI_FALSE);
4788     }
4789 }
4790 
4791 /* void glProgramParameteri ( GLuint program, GLenum pname, GLint value ) */
4792 static void
android_glProgramParameteri__III(JNIEnv * _env,jobject _this,jint program,jint pname,jint value)4793 android_glProgramParameteri__III
4794   (JNIEnv *_env, jobject _this, jint program, jint pname, jint value) {
4795     glProgramParameteri(
4796         (GLuint)program,
4797         (GLenum)pname,
4798         (GLint)value
4799     );
4800 }
4801 
4802 /* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */
4803 static void
android_glInvalidateFramebuffer__II_3II(JNIEnv * _env,jobject _this,jint target,jint numAttachments,jintArray attachments_ref,jint offset)4804 android_glInvalidateFramebuffer__II_3II
4805   (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset) {
4806     jint _exception = 0;
4807     const char * _exceptionType = NULL;
4808     const char * _exceptionMessage = NULL;
4809     GLenum *attachments_base = (GLenum *) 0;
4810     jint _remaining;
4811     GLenum *attachments = (GLenum *) 0;
4812 
4813     if (!attachments_ref) {
4814         _exception = 1;
4815         _exceptionType = "java/lang/IllegalArgumentException";
4816         _exceptionMessage = "attachments == null";
4817         goto exit;
4818     }
4819     if (offset < 0) {
4820         _exception = 1;
4821         _exceptionType = "java/lang/IllegalArgumentException";
4822         _exceptionMessage = "offset < 0";
4823         goto exit;
4824     }
4825     _remaining = _env->GetArrayLength(attachments_ref) - offset;
4826     attachments_base = (GLenum *)
4827         _env->GetPrimitiveArrayCritical(attachments_ref, (jboolean *)0);
4828     attachments = attachments_base + offset;
4829 
4830     glInvalidateFramebuffer(
4831         (GLenum)target,
4832         (GLsizei)numAttachments,
4833         (GLenum *)attachments
4834     );
4835 
4836 exit:
4837     if (attachments_base) {
4838         _env->ReleasePrimitiveArrayCritical(attachments_ref, attachments_base,
4839             JNI_ABORT);
4840     }
4841     if (_exception) {
4842         jniThrowException(_env, _exceptionType, _exceptionMessage);
4843     }
4844 }
4845 
4846 /* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */
4847 static void
android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint numAttachments,jobject attachments_buf)4848 android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2
4849   (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf) {
4850     jarray _array = (jarray) 0;
4851     jint _bufferOffset = (jint) 0;
4852     jint _remaining;
4853     GLenum *attachments = (GLenum *) 0;
4854 
4855     attachments = (GLenum *)getPointer(_env, attachments_buf, &_array, &_remaining, &_bufferOffset);
4856     if (attachments == NULL) {
4857         char * _attachmentsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4858         attachments = (GLenum *) (_attachmentsBase + _bufferOffset);
4859     }
4860     glInvalidateFramebuffer(
4861         (GLenum)target,
4862         (GLsizei)numAttachments,
4863         (GLenum *)attachments
4864     );
4865     if (_array) {
4866         releasePointer(_env, _array, attachments, JNI_FALSE);
4867     }
4868 }
4869 
4870 /* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */
4871 static void
android_glInvalidateSubFramebuffer__II_3IIIIII(JNIEnv * _env,jobject _this,jint target,jint numAttachments,jintArray attachments_ref,jint offset,jint x,jint y,jint width,jint height)4872 android_glInvalidateSubFramebuffer__II_3IIIIII
4873   (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset, jint x, jint y, jint width, jint height) {
4874     jint _exception = 0;
4875     const char * _exceptionType = NULL;
4876     const char * _exceptionMessage = NULL;
4877     GLenum *attachments_base = (GLenum *) 0;
4878     jint _remaining;
4879     GLenum *attachments = (GLenum *) 0;
4880 
4881     if (!attachments_ref) {
4882         _exception = 1;
4883         _exceptionType = "java/lang/IllegalArgumentException";
4884         _exceptionMessage = "attachments == null";
4885         goto exit;
4886     }
4887     if (offset < 0) {
4888         _exception = 1;
4889         _exceptionType = "java/lang/IllegalArgumentException";
4890         _exceptionMessage = "offset < 0";
4891         goto exit;
4892     }
4893     _remaining = _env->GetArrayLength(attachments_ref) - offset;
4894     attachments_base = (GLenum *)
4895         _env->GetPrimitiveArrayCritical(attachments_ref, (jboolean *)0);
4896     attachments = attachments_base + offset;
4897 
4898     glInvalidateSubFramebuffer(
4899         (GLenum)target,
4900         (GLsizei)numAttachments,
4901         (GLenum *)attachments,
4902         (GLint)x,
4903         (GLint)y,
4904         (GLsizei)width,
4905         (GLsizei)height
4906     );
4907 
4908 exit:
4909     if (attachments_base) {
4910         _env->ReleasePrimitiveArrayCritical(attachments_ref, attachments_base,
4911             JNI_ABORT);
4912     }
4913     if (_exception) {
4914         jniThrowException(_env, _exceptionType, _exceptionMessage);
4915     }
4916 }
4917 
4918 /* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */
4919 static void
android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII(JNIEnv * _env,jobject _this,jint target,jint numAttachments,jobject attachments_buf,jint x,jint y,jint width,jint height)4920 android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII
4921   (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf, jint x, jint y, jint width, jint height) {
4922     jarray _array = (jarray) 0;
4923     jint _bufferOffset = (jint) 0;
4924     jint _remaining;
4925     GLenum *attachments = (GLenum *) 0;
4926 
4927     attachments = (GLenum *)getPointer(_env, attachments_buf, &_array, &_remaining, &_bufferOffset);
4928     if (attachments == NULL) {
4929         char * _attachmentsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4930         attachments = (GLenum *) (_attachmentsBase + _bufferOffset);
4931     }
4932     glInvalidateSubFramebuffer(
4933         (GLenum)target,
4934         (GLsizei)numAttachments,
4935         (GLenum *)attachments,
4936         (GLint)x,
4937         (GLint)y,
4938         (GLsizei)width,
4939         (GLsizei)height
4940     );
4941     if (_array) {
4942         releasePointer(_env, _array, attachments, JNI_FALSE);
4943     }
4944 }
4945 
4946 /* void glTexStorage2D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) */
4947 static void
android_glTexStorage2D__IIIII(JNIEnv * _env,jobject _this,jint target,jint levels,jint internalformat,jint width,jint height)4948 android_glTexStorage2D__IIIII
4949   (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height) {
4950     glTexStorage2D(
4951         (GLenum)target,
4952         (GLsizei)levels,
4953         (GLenum)internalformat,
4954         (GLsizei)width,
4955         (GLsizei)height
4956     );
4957 }
4958 
4959 /* void glTexStorage3D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) */
4960 static void
android_glTexStorage3D__IIIIII(JNIEnv * _env,jobject _this,jint target,jint levels,jint internalformat,jint width,jint height,jint depth)4961 android_glTexStorage3D__IIIIII
4962   (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height, jint depth) {
4963     glTexStorage3D(
4964         (GLenum)target,
4965         (GLsizei)levels,
4966         (GLenum)internalformat,
4967         (GLsizei)width,
4968         (GLsizei)height,
4969         (GLsizei)depth
4970     );
4971 }
4972 
4973 /* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */
4974 static void
android_glGetInternalformativ__IIII_3II(JNIEnv * _env,jobject _this,jint target,jint internalformat,jint pname,jint bufSize,jintArray params_ref,jint offset)4975 android_glGetInternalformativ__IIII_3II
4976   (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jintArray params_ref, jint offset) {
4977     jint _exception = 0;
4978     const char * _exceptionType = NULL;
4979     const char * _exceptionMessage = NULL;
4980     GLint *params_base = (GLint *) 0;
4981     jint _remaining;
4982     GLint *params = (GLint *) 0;
4983 
4984     if (!params_ref) {
4985         _exception = 1;
4986         _exceptionType = "java/lang/IllegalArgumentException";
4987         _exceptionMessage = "params == null";
4988         goto exit;
4989     }
4990     if (offset < 0) {
4991         _exception = 1;
4992         _exceptionType = "java/lang/IllegalArgumentException";
4993         _exceptionMessage = "offset < 0";
4994         goto exit;
4995     }
4996     _remaining = _env->GetArrayLength(params_ref) - offset;
4997     params_base = (GLint *)
4998         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4999     params = params_base + offset;
5000 
5001     glGetInternalformativ(
5002         (GLenum)target,
5003         (GLenum)internalformat,
5004         (GLenum)pname,
5005         (GLsizei)bufSize,
5006         (GLint *)params
5007     );
5008 
5009 exit:
5010     if (params_base) {
5011         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
5012             _exception ? JNI_ABORT: 0);
5013     }
5014     if (_exception) {
5015         jniThrowException(_env, _exceptionType, _exceptionMessage);
5016     }
5017 }
5018 
5019 /* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */
5020 static void
android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint internalformat,jint pname,jint bufSize,jobject params_buf)5021 android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2
5022   (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jobject params_buf) {
5023     jarray _array = (jarray) 0;
5024     jint _bufferOffset = (jint) 0;
5025     jint _remaining;
5026     GLint *params = (GLint *) 0;
5027 
5028     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
5029     if (params == NULL) {
5030         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
5031         params = (GLint *) (_paramsBase + _bufferOffset);
5032     }
5033     glGetInternalformativ(
5034         (GLenum)target,
5035         (GLenum)internalformat,
5036         (GLenum)pname,
5037         (GLsizei)bufSize,
5038         (GLint *)params
5039     );
5040     if (_array) {
5041         releasePointer(_env, _array, params, JNI_TRUE);
5042     }
5043 }
5044 
5045 static const char *classPathName = "android/opengl/GLES30";
5046 
5047 static JNINativeMethod methods[] = {
5048 {"_nativeClassInit", "()V", (void*)nativeClassInit },
5049 {"glReadBuffer", "(I)V", (void *) android_glReadBuffer__I },
5050 {"glDrawRangeElements", "(IIIIILjava/nio/Buffer;)V", (void *) android_glDrawRangeElements__IIIIILjava_nio_Buffer_2 },
5051 {"glDrawRangeElements", "(IIIIII)V", (void *) android_glDrawRangeElements__IIIIII },
5052 {"glTexImage3D", "(IIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 },
5053 {"glTexImage3D", "(IIIIIIIIII)V", (void *) android_glTexImage3D__IIIIIIIIII },
5054 {"glTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 },
5055 {"glTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glTexSubImage3D__IIIIIIIIIII },
5056 {"glCopyTexSubImage3D", "(IIIIIIIII)V", (void *) android_glCopyTexSubImage3D__IIIIIIIII },
5057 {"glCompressedTexImage3D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 },
5058 {"glCompressedTexImage3D", "(IIIIIIIII)V", (void *) android_glCompressedTexImage3D__IIIIIIIII },
5059 {"glCompressedTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 },
5060 {"glCompressedTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIII },
5061 {"glGenQueries", "(I[II)V", (void *) android_glGenQueries__I_3II },
5062 {"glGenQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenQueries__ILjava_nio_IntBuffer_2 },
5063 {"glDeleteQueries", "(I[II)V", (void *) android_glDeleteQueries__I_3II },
5064 {"glDeleteQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteQueries__ILjava_nio_IntBuffer_2 },
5065 {"glIsQuery", "(I)Z", (void *) android_glIsQuery__I },
5066 {"glBeginQuery", "(II)V", (void *) android_glBeginQuery__II },
5067 {"glEndQuery", "(I)V", (void *) android_glEndQuery__I },
5068 {"glGetQueryiv", "(II[II)V", (void *) android_glGetQueryiv__II_3II },
5069 {"glGetQueryiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryiv__IILjava_nio_IntBuffer_2 },
5070 {"glGetQueryObjectuiv", "(II[II)V", (void *) android_glGetQueryObjectuiv__II_3II },
5071 {"glGetQueryObjectuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 },
5072 {"glUnmapBuffer", "(I)Z", (void *) android_glUnmapBuffer__I },
5073 {"glGetBufferPointerv", "(II)Ljava/nio/Buffer;", (void *) android_glGetBufferPointerv__II },
5074 {"glDrawBuffers", "(I[II)V", (void *) android_glDrawBuffers__I_3II },
5075 {"glDrawBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDrawBuffers__ILjava_nio_IntBuffer_2 },
5076 {"glUniformMatrix2x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x3fv__IIZ_3FI },
5077 {"glUniformMatrix2x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 },
5078 {"glUniformMatrix3x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x2fv__IIZ_3FI },
5079 {"glUniformMatrix3x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 },
5080 {"glUniformMatrix2x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x4fv__IIZ_3FI },
5081 {"glUniformMatrix2x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 },
5082 {"glUniformMatrix4x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x2fv__IIZ_3FI },
5083 {"glUniformMatrix4x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 },
5084 {"glUniformMatrix3x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x4fv__IIZ_3FI },
5085 {"glUniformMatrix3x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 },
5086 {"glUniformMatrix4x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x3fv__IIZ_3FI },
5087 {"glUniformMatrix4x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 },
5088 {"glBlitFramebuffer", "(IIIIIIIIII)V", (void *) android_glBlitFramebuffer__IIIIIIIIII },
5089 {"glRenderbufferStorageMultisample", "(IIIII)V", (void *) android_glRenderbufferStorageMultisample__IIIII },
5090 {"glFramebufferTextureLayer", "(IIIII)V", (void *) android_glFramebufferTextureLayer__IIIII },
5091 {"glMapBufferRange", "(IIII)Ljava/nio/Buffer;", (void *) android_glMapBufferRange__IIII },
5092 {"glFlushMappedBufferRange", "(III)V", (void *) android_glFlushMappedBufferRange__III },
5093 {"glBindVertexArray", "(I)V", (void *) android_glBindVertexArray__I },
5094 {"glDeleteVertexArrays", "(I[II)V", (void *) android_glDeleteVertexArrays__I_3II },
5095 {"glDeleteVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 },
5096 {"glGenVertexArrays", "(I[II)V", (void *) android_glGenVertexArrays__I_3II },
5097 {"glGenVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenVertexArrays__ILjava_nio_IntBuffer_2 },
5098 {"glIsVertexArray", "(I)Z", (void *) android_glIsVertexArray__I },
5099 {"glGetIntegeri_v", "(II[II)V", (void *) android_glGetIntegeri_v__II_3II },
5100 {"glGetIntegeri_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetIntegeri_v__IILjava_nio_IntBuffer_2 },
5101 {"glBeginTransformFeedback", "(I)V", (void *) android_glBeginTransformFeedback__I },
5102 {"glEndTransformFeedback", "()V", (void *) android_glEndTransformFeedback__ },
5103 {"glBindBufferRange", "(IIIII)V", (void *) android_glBindBufferRange__IIIII },
5104 {"glBindBufferBase", "(III)V", (void *) android_glBindBufferBase__III },
5105 {"glTransformFeedbackVaryings", "(I[Ljava/lang/String;I)V", (void *) android_glTransformFeedbackVaryings },
5106 {"glGetTransformFeedbackVarying", "(III[II[II[II[BI)V", (void *) android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI },
5107 {"glGetTransformFeedbackVarying", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B },
5108 {"glGetTransformFeedbackVarying", "(II[II[II)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying1 },
5109 {"glGetTransformFeedbackVarying", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying2 },
5110 {"glVertexAttribIPointerBounds", "(IIIILjava/nio/Buffer;I)V", (void *) android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I },
5111 {"glVertexAttribIPointer", "(IIIII)V", (void *) android_glVertexAttribIPointer__IIIII },
5112 {"glGetVertexAttribIiv", "(II[II)V", (void *) android_glGetVertexAttribIiv__II_3II },
5113 {"glGetVertexAttribIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 },
5114 {"glGetVertexAttribIuiv", "(II[II)V", (void *) android_glGetVertexAttribIuiv__II_3II },
5115 {"glGetVertexAttribIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 },
5116 {"glVertexAttribI4i", "(IIIII)V", (void *) android_glVertexAttribI4i__IIIII },
5117 {"glVertexAttribI4ui", "(IIIII)V", (void *) android_glVertexAttribI4ui__IIIII },
5118 {"glVertexAttribI4iv", "(I[II)V", (void *) android_glVertexAttribI4iv__I_3II },
5119 {"glVertexAttribI4iv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 },
5120 {"glVertexAttribI4uiv", "(I[II)V", (void *) android_glVertexAttribI4uiv__I_3II },
5121 {"glVertexAttribI4uiv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 },
5122 {"glGetUniformuiv", "(II[II)V", (void *) android_glGetUniformuiv__II_3II },
5123 {"glGetUniformuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformuiv__IILjava_nio_IntBuffer_2 },
5124 {"glGetFragDataLocation", "(ILjava/lang/String;)I", (void *) android_glGetFragDataLocation__ILjava_lang_String_2 },
5125 {"glUniform1ui", "(II)V", (void *) android_glUniform1ui__II },
5126 {"glUniform2ui", "(III)V", (void *) android_glUniform2ui__III },
5127 {"glUniform3ui", "(IIII)V", (void *) android_glUniform3ui__IIII },
5128 {"glUniform4ui", "(IIIII)V", (void *) android_glUniform4ui__IIIII },
5129 {"glUniform1uiv", "(II[II)V", (void *) android_glUniform1uiv__II_3II },
5130 {"glUniform1uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1uiv__IILjava_nio_IntBuffer_2 },
5131 {"glUniform2uiv", "(II[II)V", (void *) android_glUniform2uiv__II_3II },
5132 {"glUniform2uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2uiv__IILjava_nio_IntBuffer_2 },
5133 {"glUniform3uiv", "(II[II)V", (void *) android_glUniform3uiv__II_3II },
5134 {"glUniform3uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3uiv__IILjava_nio_IntBuffer_2 },
5135 {"glUniform4uiv", "(II[II)V", (void *) android_glUniform4uiv__II_3II },
5136 {"glUniform4uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4uiv__IILjava_nio_IntBuffer_2 },
5137 {"glClearBufferiv", "(II[II)V", (void *) android_glClearBufferiv__II_3II },
5138 {"glClearBufferiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferiv__IILjava_nio_IntBuffer_2 },
5139 {"glClearBufferuiv", "(II[II)V", (void *) android_glClearBufferuiv__II_3II },
5140 {"glClearBufferuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferuiv__IILjava_nio_IntBuffer_2 },
5141 {"glClearBufferfv", "(II[FI)V", (void *) android_glClearBufferfv__II_3FI },
5142 {"glClearBufferfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glClearBufferfv__IILjava_nio_FloatBuffer_2 },
5143 {"glClearBufferfi", "(IIFI)V", (void *) android_glClearBufferfi__IIFI },
5144 {"glGetStringi", "(II)Ljava/lang/String;", (void *) android_glGetStringi__II },
5145 {"glCopyBufferSubData", "(IIIII)V", (void *) android_glCopyBufferSubData__IIIII },
5146 {"glGetUniformIndices", "(I[Ljava/lang/String;[II)V", (void *) android_glGetUniformIndices_array },
5147 {"glGetUniformIndices", "(I[Ljava/lang/String;Ljava/nio/IntBuffer;)V", (void *) android_glGetUniformIndices_buffer },
5148 {"glGetActiveUniformsiv", "(II[III[II)V", (void *) android_glGetActiveUniformsiv__II_3III_3II },
5149 {"glGetActiveUniformsiv", "(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 },
5150 {"glGetUniformBlockIndex", "(ILjava/lang/String;)I", (void *) android_glGetUniformBlockIndex__ILjava_lang_String_2 },
5151 {"glGetActiveUniformBlockiv", "(III[II)V", (void *) android_glGetActiveUniformBlockiv__III_3II },
5152 {"glGetActiveUniformBlockiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 },
5153 {"glGetActiveUniformBlockName", "(III[II[BI)V", (void *) android_glGetActiveUniformBlockName_III_3II_3BI },
5154 {"glGetActiveUniformBlockName", "(IILjava/nio/Buffer;Ljava/nio/Buffer;)V", (void *) android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 },
5155 {"glGetActiveUniformBlockName", "(II)Ljava/lang/String;", (void *) android_glGetActiveUniformBlockName_II },
5156 {"glUniformBlockBinding", "(III)V", (void *) android_glUniformBlockBinding__III },
5157 {"glDrawArraysInstanced", "(IIII)V", (void *) android_glDrawArraysInstanced__IIII },
5158 {"glDrawElementsInstanced", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I },
5159 {"glDrawElementsInstanced", "(IIIII)V", (void *) android_glDrawElementsInstanced__IIIII },
5160 {"glFenceSync", "(II)J", (void *) android_glFenceSync__II },
5161 {"glIsSync", "(J)Z", (void *) android_glIsSync__J },
5162 {"glDeleteSync", "(J)V", (void *) android_glDeleteSync__J },
5163 {"glClientWaitSync", "(JIJ)I", (void *) android_glClientWaitSync__JIJ },
5164 {"glWaitSync", "(JIJ)V", (void *) android_glWaitSync__JIJ },
5165 {"glGetInteger64v", "(I[JI)V", (void *) android_glGetInteger64v__I_3JI },
5166 {"glGetInteger64v", "(ILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64v__ILjava_nio_LongBuffer_2 },
5167 {"glGetSynciv", "(JII[II[II)V", (void *) android_glGetSynciv__JII_3II_3II },
5168 {"glGetSynciv", "(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
5169 {"glGetInteger64i_v", "(II[JI)V", (void *) android_glGetInteger64i_v__II_3JI },
5170 {"glGetInteger64i_v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64i_v__IILjava_nio_LongBuffer_2 },
5171 {"glGetBufferParameteri64v", "(II[JI)V", (void *) android_glGetBufferParameteri64v__II_3JI },
5172 {"glGetBufferParameteri64v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 },
5173 {"glGenSamplers", "(I[II)V", (void *) android_glGenSamplers__I_3II },
5174 {"glGenSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenSamplers__ILjava_nio_IntBuffer_2 },
5175 {"glDeleteSamplers", "(I[II)V", (void *) android_glDeleteSamplers__I_3II },
5176 {"glDeleteSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteSamplers__ILjava_nio_IntBuffer_2 },
5177 {"glIsSampler", "(I)Z", (void *) android_glIsSampler__I },
5178 {"glBindSampler", "(II)V", (void *) android_glBindSampler__II },
5179 {"glSamplerParameteri", "(III)V", (void *) android_glSamplerParameteri__III },
5180 {"glSamplerParameteriv", "(II[II)V", (void *) android_glSamplerParameteriv__II_3II },
5181 {"glSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameteriv__IILjava_nio_IntBuffer_2 },
5182 {"glSamplerParameterf", "(IIF)V", (void *) android_glSamplerParameterf__IIF },
5183 {"glSamplerParameterfv", "(II[FI)V", (void *) android_glSamplerParameterfv__II_3FI },
5184 {"glSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 },
5185 {"glGetSamplerParameteriv", "(II[II)V", (void *) android_glGetSamplerParameteriv__II_3II },
5186 {"glGetSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 },
5187 {"glGetSamplerParameterfv", "(II[FI)V", (void *) android_glGetSamplerParameterfv__II_3FI },
5188 {"glGetSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 },
5189 {"glVertexAttribDivisor", "(II)V", (void *) android_glVertexAttribDivisor__II },
5190 {"glBindTransformFeedback", "(II)V", (void *) android_glBindTransformFeedback__II },
5191 {"glDeleteTransformFeedbacks", "(I[II)V", (void *) android_glDeleteTransformFeedbacks__I_3II },
5192 {"glDeleteTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 },
5193 {"glGenTransformFeedbacks", "(I[II)V", (void *) android_glGenTransformFeedbacks__I_3II },
5194 {"glGenTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 },
5195 {"glIsTransformFeedback", "(I)Z", (void *) android_glIsTransformFeedback__I },
5196 {"glPauseTransformFeedback", "()V", (void *) android_glPauseTransformFeedback__ },
5197 {"glResumeTransformFeedback", "()V", (void *) android_glResumeTransformFeedback__ },
5198 {"glGetProgramBinary", "(II[II[IILjava/nio/Buffer;)V", (void *) android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 },
5199 {"glGetProgramBinary", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/Buffer;)V", (void *) android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 },
5200 {"glProgramBinary", "(IILjava/nio/Buffer;I)V", (void *) android_glProgramBinary__IILjava_nio_Buffer_2I },
5201 {"glProgramParameteri", "(III)V", (void *) android_glProgramParameteri__III },
5202 {"glInvalidateFramebuffer", "(II[II)V", (void *) android_glInvalidateFramebuffer__II_3II },
5203 {"glInvalidateFramebuffer", "(IILjava/nio/IntBuffer;)V", (void *) android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 },
5204 {"glInvalidateSubFramebuffer", "(II[IIIIII)V", (void *) android_glInvalidateSubFramebuffer__II_3IIIIII },
5205 {"glInvalidateSubFramebuffer", "(IILjava/nio/IntBuffer;IIII)V", (void *) android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII },
5206 {"glTexStorage2D", "(IIIII)V", (void *) android_glTexStorage2D__IIIII },
5207 {"glTexStorage3D", "(IIIIII)V", (void *) android_glTexStorage3D__IIIIII },
5208 {"glGetInternalformativ", "(IIII[II)V", (void *) android_glGetInternalformativ__IIII_3II },
5209 {"glGetInternalformativ", "(IIIILjava/nio/IntBuffer;)V", (void *) android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 },
5210 };
5211 
register_android_opengl_jni_GLES30(JNIEnv * _env)5212 int register_android_opengl_jni_GLES30(JNIEnv *_env)
5213 {
5214     int err;
5215     err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
5216     return err;
5217 }
5218