• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 // This source file is automatically generated
18 
19 #include <stdint.h>
20 #include <GLES3/gl31.h>
21 #include <jni.h>
22 #include <JNIHelp.h>
23 #include <android_runtime/AndroidRuntime.h>
24 #include <utils/misc.h>
25 #include <assert.h>
26 
27 static int initialized = 0;
28 
29 static jclass nioAccessClass;
30 static jclass bufferClass;
31 static jmethodID getBasePointerID;
32 static jmethodID getBaseArrayID;
33 static jmethodID getBaseArrayOffsetID;
34 static jfieldID positionID;
35 static jfieldID limitID;
36 static jfieldID elementSizeShiftID;
37 
38 
39 /* special calls implemented in Android's GLES wrapper used to more
40  * efficiently bound-check passed arrays */
41 extern "C" {
42 #ifdef GL_VERSION_ES_CM_1_1
43 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
44         const GLvoid *ptr, GLsizei count);
45 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
46         const GLvoid *pointer, GLsizei count);
47 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
48         GLsizei stride, const GLvoid *pointer, GLsizei count);
49 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
50         GLsizei stride, const GLvoid *pointer, GLsizei count);
51 GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
52         GLsizei stride, const GLvoid *pointer, GLsizei count);
53 GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
54         GLsizei stride, const GLvoid *pointer, GLsizei count);
55 GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
56         GLsizei stride, const GLvoid *pointer, GLsizei count);
57 #endif
58 #ifdef GL_ES_VERSION_2_0
glVertexAttribPointerBounds(GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer,GLsizei count)59 static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
60         GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
61     glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
62 }
63 #endif
64 #ifdef GL_ES_VERSION_3_0
glVertexAttribIPointerBounds(GLuint indx,GLint size,GLenum type,GLsizei stride,const GLvoid * pointer,GLsizei count)65 static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
66         GLsizei stride, const GLvoid *pointer, GLsizei count) {
67     glVertexAttribIPointer(indx, size, type, stride, pointer);
68 }
69 #endif
70 }
71 
72 /* Cache method IDs each time the class is loaded. */
73 
74 static void
nativeClassInit(JNIEnv * _env,jclass glImplClass)75 nativeClassInit(JNIEnv *_env, jclass glImplClass)
76 {
77     jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
78     nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
79 
80     jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
81     bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
82 
83     getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
84             "getBasePointer", "(Ljava/nio/Buffer;)J");
85     getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
86             "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
87     getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
88             "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
89 
90     positionID = _env->GetFieldID(bufferClass, "position", "I");
91     limitID = _env->GetFieldID(bufferClass, "limit", "I");
92     elementSizeShiftID =
93         _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
94 }
95 
96 static void *
getPointer(JNIEnv * _env,jobject buffer,jarray * array,jint * remaining,jint * offset)97 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
98 {
99     jint position;
100     jint limit;
101     jint elementSizeShift;
102     jlong pointer;
103 
104     position = _env->GetIntField(buffer, positionID);
105     limit = _env->GetIntField(buffer, limitID);
106     elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
107     *remaining = (limit - position) << elementSizeShift;
108     pointer = _env->CallStaticLongMethod(nioAccessClass,
109             getBasePointerID, buffer);
110     if (pointer != 0L) {
111         *array = NULL;
112         return reinterpret_cast<void*>(pointer);
113     }
114 
115     *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
116             getBaseArrayID, buffer);
117     *offset = _env->CallStaticIntMethod(nioAccessClass,
118             getBaseArrayOffsetID, buffer);
119 
120     return NULL;
121 }
122 
123 static void
releasePointer(JNIEnv * _env,jarray array,void * data,jboolean commit)124 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
125 {
126     _env->ReleasePrimitiveArrayCritical(array, data,
127                        commit ? 0 : JNI_ABORT);
128 }
129 
130 static void *
getDirectBufferPointer(JNIEnv * _env,jobject buffer)131 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
132     char* buf = (char*) _env->GetDirectBufferAddress(buffer);
133     if (buf) {
134         jint position = _env->GetIntField(buffer, positionID);
135         jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
136         buf += position << elementSizeShift;
137     } else {
138         jniThrowException(_env, "java/lang/IllegalArgumentException",
139                           "Must use a native order direct Buffer");
140     }
141     return (void*) buf;
142 }
143 
144 // --------------------------------------------------------------------------
145 
146 /*
147  * returns the number of values glGet returns for a given pname.
148  *
149  * The code below is written such that pnames requiring only one values
150  * are the default (and are not explicitely tested for). This makes the
151  * checking code much shorter/readable/efficient.
152  *
153  * This means that unknown pnames (e.g.: extensions) will default to 1. If
154  * that unknown pname needs more than 1 value, then the validation check
155  * is incomplete and the app may crash if it passed the wrong number params.
156  */
getNeededCount(GLint pname)157 static int getNeededCount(GLint pname) {
158     int needed = 1;
159 #ifdef GL_ES_VERSION_2_0
160     // GLES 2.x pnames
161     switch (pname) {
162         case GL_ALIASED_LINE_WIDTH_RANGE:
163         case GL_ALIASED_POINT_SIZE_RANGE:
164             needed = 2;
165             break;
166 
167         case GL_BLEND_COLOR:
168         case GL_COLOR_CLEAR_VALUE:
169         case GL_COLOR_WRITEMASK:
170         case GL_SCISSOR_BOX:
171         case GL_VIEWPORT:
172             needed = 4;
173             break;
174 
175         case GL_COMPRESSED_TEXTURE_FORMATS:
176             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
177             break;
178 
179         case GL_SHADER_BINARY_FORMATS:
180             glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
181             break;
182     }
183 #endif
184 
185 #ifdef GL_VERSION_ES_CM_1_1
186     // GLES 1.x pnames
187     switch (pname) {
188         case GL_ALIASED_LINE_WIDTH_RANGE:
189         case GL_ALIASED_POINT_SIZE_RANGE:
190         case GL_DEPTH_RANGE:
191         case GL_SMOOTH_LINE_WIDTH_RANGE:
192         case GL_SMOOTH_POINT_SIZE_RANGE:
193             needed = 2;
194             break;
195 
196         case GL_CURRENT_NORMAL:
197         case GL_POINT_DISTANCE_ATTENUATION:
198             needed = 3;
199             break;
200 
201         case GL_COLOR_CLEAR_VALUE:
202         case GL_COLOR_WRITEMASK:
203         case GL_CURRENT_COLOR:
204         case GL_CURRENT_TEXTURE_COORDS:
205         case GL_FOG_COLOR:
206         case GL_LIGHT_MODEL_AMBIENT:
207         case GL_SCISSOR_BOX:
208         case GL_VIEWPORT:
209             needed = 4;
210             break;
211 
212         case GL_MODELVIEW_MATRIX:
213         case GL_PROJECTION_MATRIX:
214         case GL_TEXTURE_MATRIX:
215             needed = 16;
216             break;
217 
218         case GL_COMPRESSED_TEXTURE_FORMATS:
219             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
220             break;
221     }
222 #endif
223     return needed;
224 }
225 
226 template <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
227 static void
get(JNIEnv * _env,jobject _this,jint pname,JTYPEARRAY params_ref,jint offset)228 get
229   (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
230     jint _exception = 0;
231     const char * _exceptionType;
232     const char * _exceptionMessage;
233     CTYPE *params_base = (CTYPE *) 0;
234     jint _remaining;
235     CTYPE *params = (CTYPE *) 0;
236     int _needed = 0;
237 
238     if (!params_ref) {
239         _exception = 1;
240         _exceptionType = "java/lang/IllegalArgumentException";
241         _exceptionMessage = "params == null";
242         goto exit;
243     }
244     if (offset < 0) {
245         _exception = 1;
246         _exceptionType = "java/lang/IllegalArgumentException";
247         _exceptionMessage = "offset < 0";
248         goto exit;
249     }
250     _remaining = _env->GetArrayLength(params_ref) - offset;
251     _needed = getNeededCount(pname);
252     // if we didn't find this pname, we just assume the user passed
253     // an array of the right size -- this might happen with extensions
254     // or if we forget an enum here.
255     if (_remaining < _needed) {
256         _exception = 1;
257         _exceptionType = "java/lang/IllegalArgumentException";
258         _exceptionMessage = "length - offset < needed";
259         goto exit;
260     }
261     params_base = (CTYPE *)
262         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
263     params = params_base + offset;
264 
265     GET(
266         (GLenum)pname,
267         (CTYPE *)params
268     );
269 
270 exit:
271     if (params_base) {
272         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
273             _exception ? JNI_ABORT: 0);
274     }
275     if (_exception) {
276         jniThrowException(_env, _exceptionType, _exceptionMessage);
277     }
278 }
279 
280 
281 template <typename CTYPE, void GET(GLenum, CTYPE*)>
282 static void
getarray(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)283 getarray
284   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
285     jint _exception = 0;
286     const char * _exceptionType;
287     const char * _exceptionMessage;
288     jarray _array = (jarray) 0;
289     jint _bufferOffset = (jint) 0;
290     jint _remaining;
291     CTYPE *params = (CTYPE *) 0;
292     int _needed = 0;
293 
294     params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
295     _remaining /= sizeof(CTYPE);    // convert from bytes to item count
296     _needed = getNeededCount(pname);
297     // if we didn't find this pname, we just assume the user passed
298     // an array of the right size -- this might happen with extensions
299     // or if we forget an enum here.
300     if (_needed>0 && _remaining < _needed) {
301         _exception = 1;
302         _exceptionType = "java/lang/IllegalArgumentException";
303         _exceptionMessage = "remaining() < needed";
304         goto exit;
305     }
306     if (params == NULL) {
307         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
308         params = (CTYPE *) (_paramsBase + _bufferOffset);
309     }
310     GET(
311         (GLenum)pname,
312         (CTYPE *)params
313     );
314 
315 exit:
316     if (_array) {
317         releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
318     }
319     if (_exception) {
320         jniThrowException(_env, _exceptionType, _exceptionMessage);
321     }
322 }
323 
324 // --------------------------------------------------------------------------
325 /* void glDispatchCompute ( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z ) */
326 static void
android_glDispatchCompute__III(JNIEnv * _env,jobject _this,jint num_groups_x,jint num_groups_y,jint num_groups_z)327 android_glDispatchCompute__III
328   (JNIEnv *_env, jobject _this, jint num_groups_x, jint num_groups_y, jint num_groups_z) {
329     glDispatchCompute(
330         (GLuint)num_groups_x,
331         (GLuint)num_groups_y,
332         (GLuint)num_groups_z
333     );
334 }
335 
336 /* void glDispatchComputeIndirect ( GLintptr indirect ) */
android_glDispatchComputeIndirect(JNIEnv * _env,jobject,jlong indirect)337 static void android_glDispatchComputeIndirect(JNIEnv *_env, jobject, jlong indirect) {
338     // 'indirect' is a byte offset, not a pointer. GL checks for negative and too-large values.
339     // Here we only need to check for successful 64-bit to 32-bit conversion.
340     // - jlong is a int64_t (jni.h)
341     // - GLintptr is a long (khrplatform.h)
342     if (sizeof(GLintptr) != sizeof(jlong) && (indirect < LONG_MIN || indirect > LONG_MAX)) {
343         jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large");
344         return;
345     }
346     glDispatchComputeIndirect((GLintptr)indirect);
347 }
348 
349 /* void glDrawArraysIndirect ( GLenum mode, const void *indirect ) */
android_glDrawArraysIndirect(JNIEnv * _env,jobject,int mode,jlong indirect)350 static void android_glDrawArraysIndirect(JNIEnv *_env, jobject, int mode, jlong indirect) {
351     // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer.
352     // GL checks for too-large values. Here we only need to check for successful signed 64-bit
353     // to unsigned 32-bit conversion.
354     if (sizeof(void*) != sizeof(jlong) && indirect > UINTPTR_MAX) {
355         jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large");
356         return;
357     }
358     glDrawArraysIndirect(mode, (const void*)indirect);
359 }
360 
361 /* void glDrawElementsIndirect ( GLenum mode, GLenum type, const void *indirect ) */
android_glDrawElementsIndirect(JNIEnv * _env,jobject,jint mode,jint type,jlong indirect)362 static void android_glDrawElementsIndirect(JNIEnv *_env, jobject, jint mode, jint type, jlong indirect) {
363     // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer.
364     // GL checks for too-large values. Here we only need to check for successful signed 64-bit
365     // to unsigned 32-bit conversion.
366     if (sizeof(void*) != sizeof(jlong) && indirect > UINTPTR_MAX) {
367         jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large");
368         return;
369     }
370     glDrawElementsIndirect(mode, type, (const void*)indirect);
371 }
372 
373 /* void glFramebufferParameteri ( GLenum target, GLenum pname, GLint param ) */
374 static void
android_glFramebufferParameteri__III(JNIEnv * _env,jobject _this,jint target,jint pname,jint param)375 android_glFramebufferParameteri__III
376   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
377     glFramebufferParameteri(
378         (GLenum)target,
379         (GLenum)pname,
380         (GLint)param
381     );
382 }
383 
384 /* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
385 static void
android_glGetFramebufferParameteriv__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)386 android_glGetFramebufferParameteriv__II_3II
387   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
388     jint _exception = 0;
389     const char * _exceptionType = NULL;
390     const char * _exceptionMessage = NULL;
391     GLint *params_base = (GLint *) 0;
392     jint _remaining;
393     GLint *params = (GLint *) 0;
394 
395     if (!params_ref) {
396         _exception = 1;
397         _exceptionType = "java/lang/IllegalArgumentException";
398         _exceptionMessage = "params == null";
399         goto exit;
400     }
401     if (offset < 0) {
402         _exception = 1;
403         _exceptionType = "java/lang/IllegalArgumentException";
404         _exceptionMessage = "offset < 0";
405         goto exit;
406     }
407     _remaining = _env->GetArrayLength(params_ref) - offset;
408     params_base = (GLint *)
409         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
410     params = params_base + offset;
411 
412     glGetFramebufferParameteriv(
413         (GLenum)target,
414         (GLenum)pname,
415         (GLint *)params
416     );
417 
418 exit:
419     if (params_base) {
420         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
421             _exception ? JNI_ABORT: 0);
422     }
423     if (_exception) {
424         jniThrowException(_env, _exceptionType, _exceptionMessage);
425     }
426 }
427 
428 /* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
429 static void
android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)430 android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2
431   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
432     jarray _array = (jarray) 0;
433     jint _bufferOffset = (jint) 0;
434     jint _remaining;
435     GLint *params = (GLint *) 0;
436 
437     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
438     if (params == NULL) {
439         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
440         params = (GLint *) (_paramsBase + _bufferOffset);
441     }
442     glGetFramebufferParameteriv(
443         (GLenum)target,
444         (GLenum)pname,
445         (GLint *)params
446     );
447     if (_array) {
448         releasePointer(_env, _array, params, JNI_TRUE);
449     }
450 }
451 
452 /* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */
453 static void
android_glGetProgramInterfaceiv__III_3II(JNIEnv * _env,jobject _this,jint program,jint programInterface,jint pname,jintArray params_ref,jint offset)454 android_glGetProgramInterfaceiv__III_3II
455   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jintArray params_ref, jint offset) {
456     jint _exception = 0;
457     const char * _exceptionType = NULL;
458     const char * _exceptionMessage = NULL;
459     GLint *params_base = (GLint *) 0;
460     jint _remaining;
461     GLint *params = (GLint *) 0;
462 
463     if (!params_ref) {
464         _exception = 1;
465         _exceptionType = "java/lang/IllegalArgumentException";
466         _exceptionMessage = "params == null";
467         goto exit;
468     }
469     if (offset < 0) {
470         _exception = 1;
471         _exceptionType = "java/lang/IllegalArgumentException";
472         _exceptionMessage = "offset < 0";
473         goto exit;
474     }
475     _remaining = _env->GetArrayLength(params_ref) - offset;
476     params_base = (GLint *)
477         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
478     params = params_base + offset;
479 
480     glGetProgramInterfaceiv(
481         (GLuint)program,
482         (GLenum)programInterface,
483         (GLenum)pname,
484         (GLint *)params
485     );
486 
487 exit:
488     if (params_base) {
489         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
490             _exception ? JNI_ABORT: 0);
491     }
492     if (_exception) {
493         jniThrowException(_env, _exceptionType, _exceptionMessage);
494     }
495 }
496 
497 /* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */
498 static void
android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint programInterface,jint pname,jobject params_buf)499 android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2
500   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jobject params_buf) {
501     jarray _array = (jarray) 0;
502     jint _bufferOffset = (jint) 0;
503     jint _remaining;
504     GLint *params = (GLint *) 0;
505 
506     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
507     if (params == NULL) {
508         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
509         params = (GLint *) (_paramsBase + _bufferOffset);
510     }
511     glGetProgramInterfaceiv(
512         (GLuint)program,
513         (GLenum)programInterface,
514         (GLenum)pname,
515         (GLint *)params
516     );
517     if (_array) {
518         releasePointer(_env, _array, params, JNI_TRUE);
519     }
520 }
521 
522 /* GLuint glGetProgramResourceIndex ( GLuint program, GLenum programInterface, const GLchar *name ) */
523 static jint
android_glGetProgramResourceIndex__IILjava_lang_String_2(JNIEnv * _env,jobject _this,jint program,jint programInterface,jstring name)524 android_glGetProgramResourceIndex__IILjava_lang_String_2
525   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) {
526     jint _exception = 0;
527     const char * _exceptionType = NULL;
528     const char * _exceptionMessage = NULL;
529     GLuint _returnValue = 0;
530     const char* _nativename = 0;
531 
532     if (!name) {
533         _exception = 1;
534         _exceptionType = "java/lang/IllegalArgumentException";
535         _exceptionMessage = "name == null";
536         goto exit;
537     }
538     _nativename = _env->GetStringUTFChars(name, 0);
539 
540     _returnValue = glGetProgramResourceIndex(
541         (GLuint)program,
542         (GLenum)programInterface,
543         (GLchar *)_nativename
544     );
545 
546 exit:
547     if (_nativename) {
548         _env->ReleaseStringUTFChars(name, _nativename);
549     }
550 
551     if (_exception) {
552         jniThrowException(_env, _exceptionType, _exceptionMessage);
553     }
554     return (jint)_returnValue;
555 }
556 
557 /* void glGetProgramResourceName ( GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name ) */
558 static jstring
android_glGetProgramResourceName(JNIEnv * _env,jobject _this,jint program,jint programInterface,jint index)559 android_glGetProgramResourceName
560   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index) {
561     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
562     return NULL;
563 }
564 
565 /* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */
566 static void
android_glGetProgramResourceiv__IIII_3III_3II_3II(JNIEnv * _env,jobject _this,jint program,jint programInterface,jint index,jint propCount,jintArray props_ref,jint propsOffset,jint bufSize,jintArray length_ref,jint lengthOffset,jintArray params_ref,jint paramsOffset)567 android_glGetProgramResourceiv__IIII_3III_3II_3II
568   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jintArray props_ref, jint propsOffset, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray params_ref, jint paramsOffset) {
569     jint _exception = 0;
570     const char * _exceptionType = NULL;
571     const char * _exceptionMessage = NULL;
572     GLenum *props_base = (GLenum *) 0;
573     jint _propsRemaining;
574     GLenum *props = (GLenum *) 0;
575     GLsizei *length_base = (GLsizei *) 0;
576     jint _lengthRemaining;
577     GLsizei *length = (GLsizei *) 0;
578     GLint *params_base = (GLint *) 0;
579     jint _paramsRemaining;
580     GLint *params = (GLint *) 0;
581 
582     if (!props_ref) {
583         _exception = 1;
584         _exceptionType = "java/lang/IllegalArgumentException";
585         _exceptionMessage = "props == null";
586         goto exit;
587     }
588     if (propsOffset < 0) {
589         _exception = 1;
590         _exceptionType = "java/lang/IllegalArgumentException";
591         _exceptionMessage = "propsOffset < 0";
592         goto exit;
593     }
594     _propsRemaining = _env->GetArrayLength(props_ref) - propsOffset;
595     props_base = (GLenum *)
596         _env->GetPrimitiveArrayCritical(props_ref, (jboolean *)0);
597     props = props_base + propsOffset;
598 
599     if (!length_ref) {
600         _exception = 1;
601         _exceptionType = "java/lang/IllegalArgumentException";
602         _exceptionMessage = "length == null";
603         goto exit;
604     }
605     if (lengthOffset < 0) {
606         _exception = 1;
607         _exceptionType = "java/lang/IllegalArgumentException";
608         _exceptionMessage = "lengthOffset < 0";
609         goto exit;
610     }
611     _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
612     length_base = (GLsizei *)
613         _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
614     length = length_base + lengthOffset;
615 
616     if (!params_ref) {
617         _exception = 1;
618         _exceptionType = "java/lang/IllegalArgumentException";
619         _exceptionMessage = "params == null";
620         goto exit;
621     }
622     if (paramsOffset < 0) {
623         _exception = 1;
624         _exceptionType = "java/lang/IllegalArgumentException";
625         _exceptionMessage = "paramsOffset < 0";
626         goto exit;
627     }
628     _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset;
629     params_base = (GLint *)
630         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
631     params = params_base + paramsOffset;
632 
633     glGetProgramResourceiv(
634         (GLuint)program,
635         (GLenum)programInterface,
636         (GLuint)index,
637         (GLsizei)propCount,
638         (GLenum *)props,
639         (GLsizei)bufSize,
640         (GLsizei *)length,
641         (GLint *)params
642     );
643 
644 exit:
645     if (params_base) {
646         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
647             _exception ? JNI_ABORT: 0);
648     }
649     if (length_base) {
650         _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
651             _exception ? JNI_ABORT: 0);
652     }
653     if (props_base) {
654         _env->ReleasePrimitiveArrayCritical(props_ref, props_base,
655             JNI_ABORT);
656     }
657     if (_exception) {
658         jniThrowException(_env, _exceptionType, _exceptionMessage);
659     }
660 }
661 
662 /* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */
663 static void
android_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint programInterface,jint index,jint propCount,jobject props_buf,jint bufSize,jobject length_buf,jobject params_buf)664 android_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
665   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jobject props_buf, jint bufSize, jobject length_buf, jobject params_buf) {
666     jarray _propsArray = (jarray) 0;
667     jint _propsBufferOffset = (jint) 0;
668     jarray _lengthArray = (jarray) 0;
669     jint _lengthBufferOffset = (jint) 0;
670     jarray _paramsArray = (jarray) 0;
671     jint _paramsBufferOffset = (jint) 0;
672     jint _propsRemaining;
673     GLenum *props = (GLenum *) 0;
674     jint _lengthRemaining;
675     GLsizei *length = (GLsizei *) 0;
676     jint _paramsRemaining;
677     GLint *params = (GLint *) 0;
678 
679     props = (GLenum *)getPointer(_env, props_buf, &_propsArray, &_propsRemaining, &_propsBufferOffset);
680     length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
681     params = (GLint *)getPointer(_env, params_buf, &_paramsArray, &_paramsRemaining, &_paramsBufferOffset);
682     if (props == NULL) {
683         char * _propsBase = (char *)_env->GetPrimitiveArrayCritical(_propsArray, (jboolean *) 0);
684         props = (GLenum *) (_propsBase + _propsBufferOffset);
685     }
686     if (length == NULL) {
687         char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
688         length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
689     }
690     if (params == NULL) {
691         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_paramsArray, (jboolean *) 0);
692         params = (GLint *) (_paramsBase + _paramsBufferOffset);
693     }
694     glGetProgramResourceiv(
695         (GLuint)program,
696         (GLenum)programInterface,
697         (GLuint)index,
698         (GLsizei)propCount,
699         (GLenum *)props,
700         (GLsizei)bufSize,
701         (GLsizei *)length,
702         (GLint *)params
703     );
704     if (_paramsArray) {
705         releasePointer(_env, _paramsArray, params, JNI_TRUE);
706     }
707     if (_lengthArray) {
708         releasePointer(_env, _lengthArray, length, JNI_TRUE);
709     }
710     if (_propsArray) {
711         releasePointer(_env, _propsArray, props, JNI_FALSE);
712     }
713 }
714 
715 /* GLint glGetProgramResourceLocation ( GLuint program, GLenum programInterface, const GLchar *name ) */
716 static jint
android_glGetProgramResourceLocation__IILjava_lang_String_2(JNIEnv * _env,jobject _this,jint program,jint programInterface,jstring name)717 android_glGetProgramResourceLocation__IILjava_lang_String_2
718   (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) {
719     jint _exception = 0;
720     const char * _exceptionType = NULL;
721     const char * _exceptionMessage = NULL;
722     GLint _returnValue = 0;
723     const char* _nativename = 0;
724 
725     if (!name) {
726         _exception = 1;
727         _exceptionType = "java/lang/IllegalArgumentException";
728         _exceptionMessage = "name == null";
729         goto exit;
730     }
731     _nativename = _env->GetStringUTFChars(name, 0);
732 
733     _returnValue = glGetProgramResourceLocation(
734         (GLuint)program,
735         (GLenum)programInterface,
736         (GLchar *)_nativename
737     );
738 
739 exit:
740     if (_nativename) {
741         _env->ReleaseStringUTFChars(name, _nativename);
742     }
743 
744     if (_exception) {
745         jniThrowException(_env, _exceptionType, _exceptionMessage);
746     }
747     return (jint)_returnValue;
748 }
749 
750 /* void glUseProgramStages ( GLuint pipeline, GLbitfield stages, GLuint program ) */
751 static void
android_glUseProgramStages__III(JNIEnv * _env,jobject _this,jint pipeline,jint stages,jint program)752 android_glUseProgramStages__III
753   (JNIEnv *_env, jobject _this, jint pipeline, jint stages, jint program) {
754     glUseProgramStages(
755         (GLuint)pipeline,
756         (GLbitfield)stages,
757         (GLuint)program
758     );
759 }
760 
761 /* void glActiveShaderProgram ( GLuint pipeline, GLuint program ) */
762 static void
android_glActiveShaderProgram__II(JNIEnv * _env,jobject _this,jint pipeline,jint program)763 android_glActiveShaderProgram__II
764   (JNIEnv *_env, jobject _this, jint pipeline, jint program) {
765     glActiveShaderProgram(
766         (GLuint)pipeline,
767         (GLuint)program
768     );
769 }
770 
771 /* GLuint glCreateShaderProgramv ( GLenum type, GLsizei count, const GLchar *const *strings ) */
772 static jint
android_glCreateShaderProgramv(JNIEnv * _env,jobject _this,jint type,jobjectArray strings)773 android_glCreateShaderProgramv
774   (JNIEnv *_env, jobject _this, jint type, jobjectArray strings) {
775 
776     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
777     return 0;
778 }
779 /* void glBindProgramPipeline ( GLuint pipeline ) */
780 static void
android_glBindProgramPipeline__I(JNIEnv * _env,jobject _this,jint pipeline)781 android_glBindProgramPipeline__I
782   (JNIEnv *_env, jobject _this, jint pipeline) {
783     glBindProgramPipeline(
784         (GLuint)pipeline
785     );
786 }
787 
788 /* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */
789 static void
android_glDeleteProgramPipelines__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray pipelines_ref,jint offset)790 android_glDeleteProgramPipelines__I_3II
791   (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) {
792     jint _exception = 0;
793     const char * _exceptionType = NULL;
794     const char * _exceptionMessage = NULL;
795     GLuint *pipelines_base = (GLuint *) 0;
796     jint _remaining;
797     GLuint *pipelines = (GLuint *) 0;
798 
799     if (!pipelines_ref) {
800         _exception = 1;
801         _exceptionType = "java/lang/IllegalArgumentException";
802         _exceptionMessage = "pipelines == null";
803         goto exit;
804     }
805     if (offset < 0) {
806         _exception = 1;
807         _exceptionType = "java/lang/IllegalArgumentException";
808         _exceptionMessage = "offset < 0";
809         goto exit;
810     }
811     _remaining = _env->GetArrayLength(pipelines_ref) - offset;
812     pipelines_base = (GLuint *)
813         _env->GetPrimitiveArrayCritical(pipelines_ref, (jboolean *)0);
814     pipelines = pipelines_base + offset;
815 
816     glDeleteProgramPipelines(
817         (GLsizei)n,
818         (GLuint *)pipelines
819     );
820 
821 exit:
822     if (pipelines_base) {
823         _env->ReleasePrimitiveArrayCritical(pipelines_ref, pipelines_base,
824             JNI_ABORT);
825     }
826     if (_exception) {
827         jniThrowException(_env, _exceptionType, _exceptionMessage);
828     }
829 }
830 
831 /* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */
832 static void
android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject pipelines_buf)833 android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2
834   (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) {
835     jarray _array = (jarray) 0;
836     jint _bufferOffset = (jint) 0;
837     jint _remaining;
838     GLuint *pipelines = (GLuint *) 0;
839 
840     pipelines = (GLuint *)getPointer(_env, pipelines_buf, &_array, &_remaining, &_bufferOffset);
841     if (pipelines == NULL) {
842         char * _pipelinesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
843         pipelines = (GLuint *) (_pipelinesBase + _bufferOffset);
844     }
845     glDeleteProgramPipelines(
846         (GLsizei)n,
847         (GLuint *)pipelines
848     );
849     if (_array) {
850         releasePointer(_env, _array, pipelines, JNI_FALSE);
851     }
852 }
853 
854 /* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */
855 static void
android_glGenProgramPipelines__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray pipelines_ref,jint offset)856 android_glGenProgramPipelines__I_3II
857   (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) {
858     jint _exception = 0;
859     const char * _exceptionType = NULL;
860     const char * _exceptionMessage = NULL;
861     GLuint *pipelines_base = (GLuint *) 0;
862     jint _remaining;
863     GLuint *pipelines = (GLuint *) 0;
864 
865     if (!pipelines_ref) {
866         _exception = 1;
867         _exceptionType = "java/lang/IllegalArgumentException";
868         _exceptionMessage = "pipelines == null";
869         goto exit;
870     }
871     if (offset < 0) {
872         _exception = 1;
873         _exceptionType = "java/lang/IllegalArgumentException";
874         _exceptionMessage = "offset < 0";
875         goto exit;
876     }
877     _remaining = _env->GetArrayLength(pipelines_ref) - offset;
878     pipelines_base = (GLuint *)
879         _env->GetPrimitiveArrayCritical(pipelines_ref, (jboolean *)0);
880     pipelines = pipelines_base + offset;
881 
882     glGenProgramPipelines(
883         (GLsizei)n,
884         (GLuint *)pipelines
885     );
886 
887 exit:
888     if (pipelines_base) {
889         _env->ReleasePrimitiveArrayCritical(pipelines_ref, pipelines_base,
890             _exception ? JNI_ABORT: 0);
891     }
892     if (_exception) {
893         jniThrowException(_env, _exceptionType, _exceptionMessage);
894     }
895 }
896 
897 /* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */
898 static void
android_glGenProgramPipelines__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject pipelines_buf)899 android_glGenProgramPipelines__ILjava_nio_IntBuffer_2
900   (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) {
901     jarray _array = (jarray) 0;
902     jint _bufferOffset = (jint) 0;
903     jint _remaining;
904     GLuint *pipelines = (GLuint *) 0;
905 
906     pipelines = (GLuint *)getPointer(_env, pipelines_buf, &_array, &_remaining, &_bufferOffset);
907     if (pipelines == NULL) {
908         char * _pipelinesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
909         pipelines = (GLuint *) (_pipelinesBase + _bufferOffset);
910     }
911     glGenProgramPipelines(
912         (GLsizei)n,
913         (GLuint *)pipelines
914     );
915     if (_array) {
916         releasePointer(_env, _array, pipelines, JNI_TRUE);
917     }
918 }
919 
920 /* GLboolean glIsProgramPipeline ( GLuint pipeline ) */
921 static jboolean
android_glIsProgramPipeline__I(JNIEnv * _env,jobject _this,jint pipeline)922 android_glIsProgramPipeline__I
923   (JNIEnv *_env, jobject _this, jint pipeline) {
924     GLboolean _returnValue;
925     _returnValue = glIsProgramPipeline(
926         (GLuint)pipeline
927     );
928     return (jboolean)_returnValue;
929 }
930 
931 /* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */
932 static void
android_glGetProgramPipelineiv__II_3II(JNIEnv * _env,jobject _this,jint pipeline,jint pname,jintArray params_ref,jint offset)933 android_glGetProgramPipelineiv__II_3II
934   (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jintArray params_ref, jint offset) {
935     jint _exception = 0;
936     const char * _exceptionType = NULL;
937     const char * _exceptionMessage = NULL;
938     GLint *params_base = (GLint *) 0;
939     jint _remaining;
940     GLint *params = (GLint *) 0;
941 
942     if (!params_ref) {
943         _exception = 1;
944         _exceptionType = "java/lang/IllegalArgumentException";
945         _exceptionMessage = "params == null";
946         goto exit;
947     }
948     if (offset < 0) {
949         _exception = 1;
950         _exceptionType = "java/lang/IllegalArgumentException";
951         _exceptionMessage = "offset < 0";
952         goto exit;
953     }
954     _remaining = _env->GetArrayLength(params_ref) - offset;
955     params_base = (GLint *)
956         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
957     params = params_base + offset;
958 
959     glGetProgramPipelineiv(
960         (GLuint)pipeline,
961         (GLenum)pname,
962         (GLint *)params
963     );
964 
965 exit:
966     if (params_base) {
967         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
968             _exception ? JNI_ABORT: 0);
969     }
970     if (_exception) {
971         jniThrowException(_env, _exceptionType, _exceptionMessage);
972     }
973 }
974 
975 /* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */
976 static void
android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint pipeline,jint pname,jobject params_buf)977 android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2
978   (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jobject params_buf) {
979     jarray _array = (jarray) 0;
980     jint _bufferOffset = (jint) 0;
981     jint _remaining;
982     GLint *params = (GLint *) 0;
983 
984     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
985     if (params == NULL) {
986         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
987         params = (GLint *) (_paramsBase + _bufferOffset);
988     }
989     glGetProgramPipelineiv(
990         (GLuint)pipeline,
991         (GLenum)pname,
992         (GLint *)params
993     );
994     if (_array) {
995         releasePointer(_env, _array, params, JNI_TRUE);
996     }
997 }
998 
999 /* void glProgramUniform1i ( GLuint program, GLint location, GLint v0 ) */
1000 static void
android_glProgramUniform1i__III(JNIEnv * _env,jobject _this,jint program,jint location,jint v0)1001 android_glProgramUniform1i__III
1002   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) {
1003     glProgramUniform1i(
1004         (GLuint)program,
1005         (GLint)location,
1006         (GLint)v0
1007     );
1008 }
1009 
1010 /* void glProgramUniform2i ( GLuint program, GLint location, GLint v0, GLint v1 ) */
1011 static void
android_glProgramUniform2i__IIII(JNIEnv * _env,jobject _this,jint program,jint location,jint v0,jint v1)1012 android_glProgramUniform2i__IIII
1013   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) {
1014     glProgramUniform2i(
1015         (GLuint)program,
1016         (GLint)location,
1017         (GLint)v0,
1018         (GLint)v1
1019     );
1020 }
1021 
1022 /* void glProgramUniform3i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2 ) */
1023 static void
android_glProgramUniform3i__IIIII(JNIEnv * _env,jobject _this,jint program,jint location,jint v0,jint v1,jint v2)1024 android_glProgramUniform3i__IIIII
1025   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) {
1026     glProgramUniform3i(
1027         (GLuint)program,
1028         (GLint)location,
1029         (GLint)v0,
1030         (GLint)v1,
1031         (GLint)v2
1032     );
1033 }
1034 
1035 /* void glProgramUniform4i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3 ) */
1036 static void
android_glProgramUniform4i__IIIIII(JNIEnv * _env,jobject _this,jint program,jint location,jint v0,jint v1,jint v2,jint v3)1037 android_glProgramUniform4i__IIIIII
1038   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) {
1039     glProgramUniform4i(
1040         (GLuint)program,
1041         (GLint)location,
1042         (GLint)v0,
1043         (GLint)v1,
1044         (GLint)v2,
1045         (GLint)v3
1046     );
1047 }
1048 
1049 /* void glProgramUniform1ui ( GLuint program, GLint location, GLuint v0 ) */
1050 static void
android_glProgramUniform1ui__III(JNIEnv * _env,jobject _this,jint program,jint location,jint v0)1051 android_glProgramUniform1ui__III
1052   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) {
1053     glProgramUniform1ui(
1054         (GLuint)program,
1055         (GLint)location,
1056         (GLuint)v0
1057     );
1058 }
1059 
1060 /* void glProgramUniform2ui ( GLuint program, GLint location, GLuint v0, GLuint v1 ) */
1061 static void
android_glProgramUniform2ui__IIII(JNIEnv * _env,jobject _this,jint program,jint location,jint v0,jint v1)1062 android_glProgramUniform2ui__IIII
1063   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) {
1064     glProgramUniform2ui(
1065         (GLuint)program,
1066         (GLint)location,
1067         (GLuint)v0,
1068         (GLuint)v1
1069     );
1070 }
1071 
1072 /* void glProgramUniform3ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2 ) */
1073 static void
android_glProgramUniform3ui__IIIII(JNIEnv * _env,jobject _this,jint program,jint location,jint v0,jint v1,jint v2)1074 android_glProgramUniform3ui__IIIII
1075   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) {
1076     glProgramUniform3ui(
1077         (GLuint)program,
1078         (GLint)location,
1079         (GLuint)v0,
1080         (GLuint)v1,
1081         (GLuint)v2
1082     );
1083 }
1084 
1085 /* void glProgramUniform4ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */
1086 static void
android_glProgramUniform4ui__IIIIII(JNIEnv * _env,jobject _this,jint program,jint location,jint v0,jint v1,jint v2,jint v3)1087 android_glProgramUniform4ui__IIIIII
1088   (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) {
1089     glProgramUniform4ui(
1090         (GLuint)program,
1091         (GLint)location,
1092         (GLuint)v0,
1093         (GLuint)v1,
1094         (GLuint)v2,
1095         (GLuint)v3
1096     );
1097 }
1098 
1099 /* void glProgramUniform1f ( GLuint program, GLint location, GLfloat v0 ) */
1100 static void
android_glProgramUniform1f__IIF(JNIEnv * _env,jobject _this,jint program,jint location,jfloat v0)1101 android_glProgramUniform1f__IIF
1102   (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0) {
1103     glProgramUniform1f(
1104         (GLuint)program,
1105         (GLint)location,
1106         (GLfloat)v0
1107     );
1108 }
1109 
1110 /* void glProgramUniform2f ( GLuint program, GLint location, GLfloat v0, GLfloat v1 ) */
1111 static void
android_glProgramUniform2f__IIFF(JNIEnv * _env,jobject _this,jint program,jint location,jfloat v0,jfloat v1)1112 android_glProgramUniform2f__IIFF
1113   (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1) {
1114     glProgramUniform2f(
1115         (GLuint)program,
1116         (GLint)location,
1117         (GLfloat)v0,
1118         (GLfloat)v1
1119     );
1120 }
1121 
1122 /* void glProgramUniform3f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2 ) */
1123 static void
android_glProgramUniform3f__IIFFF(JNIEnv * _env,jobject _this,jint program,jint location,jfloat v0,jfloat v1,jfloat v2)1124 android_glProgramUniform3f__IIFFF
1125   (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2) {
1126     glProgramUniform3f(
1127         (GLuint)program,
1128         (GLint)location,
1129         (GLfloat)v0,
1130         (GLfloat)v1,
1131         (GLfloat)v2
1132     );
1133 }
1134 
1135 /* void glProgramUniform4f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3 ) */
1136 static void
android_glProgramUniform4f__IIFFFF(JNIEnv * _env,jobject _this,jint program,jint location,jfloat v0,jfloat v1,jfloat v2,jfloat v3)1137 android_glProgramUniform4f__IIFFFF
1138   (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2, jfloat v3) {
1139     glProgramUniform4f(
1140         (GLuint)program,
1141         (GLint)location,
1142         (GLfloat)v0,
1143         (GLfloat)v1,
1144         (GLfloat)v2,
1145         (GLfloat)v3
1146     );
1147 }
1148 
1149 /* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1150 static void
android_glProgramUniform1iv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1151 android_glProgramUniform1iv__III_3II
1152   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1153     jint _exception = 0;
1154     const char * _exceptionType = NULL;
1155     const char * _exceptionMessage = NULL;
1156     GLint *value_base = (GLint *) 0;
1157     jint _remaining;
1158     GLint *value = (GLint *) 0;
1159 
1160     if (!value_ref) {
1161         _exception = 1;
1162         _exceptionType = "java/lang/IllegalArgumentException";
1163         _exceptionMessage = "value == null";
1164         goto exit;
1165     }
1166     if (offset < 0) {
1167         _exception = 1;
1168         _exceptionType = "java/lang/IllegalArgumentException";
1169         _exceptionMessage = "offset < 0";
1170         goto exit;
1171     }
1172     _remaining = _env->GetArrayLength(value_ref) - offset;
1173     value_base = (GLint *)
1174         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1175     value = value_base + offset;
1176 
1177     glProgramUniform1iv(
1178         (GLuint)program,
1179         (GLint)location,
1180         (GLsizei)count,
1181         (GLint *)value
1182     );
1183 
1184 exit:
1185     if (value_base) {
1186         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1187             JNI_ABORT);
1188     }
1189     if (_exception) {
1190         jniThrowException(_env, _exceptionType, _exceptionMessage);
1191     }
1192 }
1193 
1194 /* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1195 static void
android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1196 android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2
1197   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1198     jarray _array = (jarray) 0;
1199     jint _bufferOffset = (jint) 0;
1200     jint _remaining;
1201     GLint *value = (GLint *) 0;
1202 
1203     value = (GLint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1204     if (value == NULL) {
1205         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1206         value = (GLint *) (_valueBase + _bufferOffset);
1207     }
1208     glProgramUniform1iv(
1209         (GLuint)program,
1210         (GLint)location,
1211         (GLsizei)count,
1212         (GLint *)value
1213     );
1214     if (_array) {
1215         releasePointer(_env, _array, value, JNI_FALSE);
1216     }
1217 }
1218 
1219 /* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1220 static void
android_glProgramUniform2iv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1221 android_glProgramUniform2iv__III_3II
1222   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1223     jint _exception = 0;
1224     const char * _exceptionType = NULL;
1225     const char * _exceptionMessage = NULL;
1226     GLint *value_base = (GLint *) 0;
1227     jint _remaining;
1228     GLint *value = (GLint *) 0;
1229 
1230     if (!value_ref) {
1231         _exception = 1;
1232         _exceptionType = "java/lang/IllegalArgumentException";
1233         _exceptionMessage = "value == null";
1234         goto exit;
1235     }
1236     if (offset < 0) {
1237         _exception = 1;
1238         _exceptionType = "java/lang/IllegalArgumentException";
1239         _exceptionMessage = "offset < 0";
1240         goto exit;
1241     }
1242     _remaining = _env->GetArrayLength(value_ref) - offset;
1243     value_base = (GLint *)
1244         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1245     value = value_base + offset;
1246 
1247     glProgramUniform2iv(
1248         (GLuint)program,
1249         (GLint)location,
1250         (GLsizei)count,
1251         (GLint *)value
1252     );
1253 
1254 exit:
1255     if (value_base) {
1256         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1257             JNI_ABORT);
1258     }
1259     if (_exception) {
1260         jniThrowException(_env, _exceptionType, _exceptionMessage);
1261     }
1262 }
1263 
1264 /* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1265 static void
android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1266 android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2
1267   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1268     jarray _array = (jarray) 0;
1269     jint _bufferOffset = (jint) 0;
1270     jint _remaining;
1271     GLint *value = (GLint *) 0;
1272 
1273     value = (GLint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1274     if (value == NULL) {
1275         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1276         value = (GLint *) (_valueBase + _bufferOffset);
1277     }
1278     glProgramUniform2iv(
1279         (GLuint)program,
1280         (GLint)location,
1281         (GLsizei)count,
1282         (GLint *)value
1283     );
1284     if (_array) {
1285         releasePointer(_env, _array, value, JNI_FALSE);
1286     }
1287 }
1288 
1289 /* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1290 static void
android_glProgramUniform3iv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1291 android_glProgramUniform3iv__III_3II
1292   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1293     jint _exception = 0;
1294     const char * _exceptionType = NULL;
1295     const char * _exceptionMessage = NULL;
1296     GLint *value_base = (GLint *) 0;
1297     jint _remaining;
1298     GLint *value = (GLint *) 0;
1299 
1300     if (!value_ref) {
1301         _exception = 1;
1302         _exceptionType = "java/lang/IllegalArgumentException";
1303         _exceptionMessage = "value == null";
1304         goto exit;
1305     }
1306     if (offset < 0) {
1307         _exception = 1;
1308         _exceptionType = "java/lang/IllegalArgumentException";
1309         _exceptionMessage = "offset < 0";
1310         goto exit;
1311     }
1312     _remaining = _env->GetArrayLength(value_ref) - offset;
1313     value_base = (GLint *)
1314         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1315     value = value_base + offset;
1316 
1317     glProgramUniform3iv(
1318         (GLuint)program,
1319         (GLint)location,
1320         (GLsizei)count,
1321         (GLint *)value
1322     );
1323 
1324 exit:
1325     if (value_base) {
1326         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1327             JNI_ABORT);
1328     }
1329     if (_exception) {
1330         jniThrowException(_env, _exceptionType, _exceptionMessage);
1331     }
1332 }
1333 
1334 /* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1335 static void
android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1336 android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2
1337   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1338     jarray _array = (jarray) 0;
1339     jint _bufferOffset = (jint) 0;
1340     jint _remaining;
1341     GLint *value = (GLint *) 0;
1342 
1343     value = (GLint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1344     if (value == NULL) {
1345         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1346         value = (GLint *) (_valueBase + _bufferOffset);
1347     }
1348     glProgramUniform3iv(
1349         (GLuint)program,
1350         (GLint)location,
1351         (GLsizei)count,
1352         (GLint *)value
1353     );
1354     if (_array) {
1355         releasePointer(_env, _array, value, JNI_FALSE);
1356     }
1357 }
1358 
1359 /* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1360 static void
android_glProgramUniform4iv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1361 android_glProgramUniform4iv__III_3II
1362   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1363     jint _exception = 0;
1364     const char * _exceptionType = NULL;
1365     const char * _exceptionMessage = NULL;
1366     GLint *value_base = (GLint *) 0;
1367     jint _remaining;
1368     GLint *value = (GLint *) 0;
1369 
1370     if (!value_ref) {
1371         _exception = 1;
1372         _exceptionType = "java/lang/IllegalArgumentException";
1373         _exceptionMessage = "value == null";
1374         goto exit;
1375     }
1376     if (offset < 0) {
1377         _exception = 1;
1378         _exceptionType = "java/lang/IllegalArgumentException";
1379         _exceptionMessage = "offset < 0";
1380         goto exit;
1381     }
1382     _remaining = _env->GetArrayLength(value_ref) - offset;
1383     value_base = (GLint *)
1384         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1385     value = value_base + offset;
1386 
1387     glProgramUniform4iv(
1388         (GLuint)program,
1389         (GLint)location,
1390         (GLsizei)count,
1391         (GLint *)value
1392     );
1393 
1394 exit:
1395     if (value_base) {
1396         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1397             JNI_ABORT);
1398     }
1399     if (_exception) {
1400         jniThrowException(_env, _exceptionType, _exceptionMessage);
1401     }
1402 }
1403 
1404 /* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */
1405 static void
android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1406 android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2
1407   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1408     jarray _array = (jarray) 0;
1409     jint _bufferOffset = (jint) 0;
1410     jint _remaining;
1411     GLint *value = (GLint *) 0;
1412 
1413     value = (GLint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1414     if (value == NULL) {
1415         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1416         value = (GLint *) (_valueBase + _bufferOffset);
1417     }
1418     glProgramUniform4iv(
1419         (GLuint)program,
1420         (GLint)location,
1421         (GLsizei)count,
1422         (GLint *)value
1423     );
1424     if (_array) {
1425         releasePointer(_env, _array, value, JNI_FALSE);
1426     }
1427 }
1428 
1429 /* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1430 static void
android_glProgramUniform1uiv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1431 android_glProgramUniform1uiv__III_3II
1432   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1433     jint _exception = 0;
1434     const char * _exceptionType = NULL;
1435     const char * _exceptionMessage = NULL;
1436     GLuint *value_base = (GLuint *) 0;
1437     jint _remaining;
1438     GLuint *value = (GLuint *) 0;
1439 
1440     if (!value_ref) {
1441         _exception = 1;
1442         _exceptionType = "java/lang/IllegalArgumentException";
1443         _exceptionMessage = "value == null";
1444         goto exit;
1445     }
1446     if (offset < 0) {
1447         _exception = 1;
1448         _exceptionType = "java/lang/IllegalArgumentException";
1449         _exceptionMessage = "offset < 0";
1450         goto exit;
1451     }
1452     _remaining = _env->GetArrayLength(value_ref) - offset;
1453     value_base = (GLuint *)
1454         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1455     value = value_base + offset;
1456 
1457     glProgramUniform1uiv(
1458         (GLuint)program,
1459         (GLint)location,
1460         (GLsizei)count,
1461         (GLuint *)value
1462     );
1463 
1464 exit:
1465     if (value_base) {
1466         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1467             JNI_ABORT);
1468     }
1469     if (_exception) {
1470         jniThrowException(_env, _exceptionType, _exceptionMessage);
1471     }
1472 }
1473 
1474 /* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1475 static void
android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1476 android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2
1477   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1478     jarray _array = (jarray) 0;
1479     jint _bufferOffset = (jint) 0;
1480     jint _remaining;
1481     GLuint *value = (GLuint *) 0;
1482 
1483     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1484     if (value == NULL) {
1485         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1486         value = (GLuint *) (_valueBase + _bufferOffset);
1487     }
1488     glProgramUniform1uiv(
1489         (GLuint)program,
1490         (GLint)location,
1491         (GLsizei)count,
1492         (GLuint *)value
1493     );
1494     if (_array) {
1495         releasePointer(_env, _array, value, JNI_FALSE);
1496     }
1497 }
1498 
1499 /* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1500 static void
android_glProgramUniform2uiv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1501 android_glProgramUniform2uiv__III_3II
1502   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1503     jint _exception = 0;
1504     const char * _exceptionType = NULL;
1505     const char * _exceptionMessage = NULL;
1506     GLuint *value_base = (GLuint *) 0;
1507     jint _remaining;
1508     GLuint *value = (GLuint *) 0;
1509 
1510     if (!value_ref) {
1511         _exception = 1;
1512         _exceptionType = "java/lang/IllegalArgumentException";
1513         _exceptionMessage = "value == null";
1514         goto exit;
1515     }
1516     if (offset < 0) {
1517         _exception = 1;
1518         _exceptionType = "java/lang/IllegalArgumentException";
1519         _exceptionMessage = "offset < 0";
1520         goto exit;
1521     }
1522     _remaining = _env->GetArrayLength(value_ref) - offset;
1523     value_base = (GLuint *)
1524         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1525     value = value_base + offset;
1526 
1527     glProgramUniform2uiv(
1528         (GLuint)program,
1529         (GLint)location,
1530         (GLsizei)count,
1531         (GLuint *)value
1532     );
1533 
1534 exit:
1535     if (value_base) {
1536         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1537             JNI_ABORT);
1538     }
1539     if (_exception) {
1540         jniThrowException(_env, _exceptionType, _exceptionMessage);
1541     }
1542 }
1543 
1544 /* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1545 static void
android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1546 android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2
1547   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1548     jarray _array = (jarray) 0;
1549     jint _bufferOffset = (jint) 0;
1550     jint _remaining;
1551     GLuint *value = (GLuint *) 0;
1552 
1553     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1554     if (value == NULL) {
1555         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1556         value = (GLuint *) (_valueBase + _bufferOffset);
1557     }
1558     glProgramUniform2uiv(
1559         (GLuint)program,
1560         (GLint)location,
1561         (GLsizei)count,
1562         (GLuint *)value
1563     );
1564     if (_array) {
1565         releasePointer(_env, _array, value, JNI_FALSE);
1566     }
1567 }
1568 
1569 /* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1570 static void
android_glProgramUniform3uiv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1571 android_glProgramUniform3uiv__III_3II
1572   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1573     jint _exception = 0;
1574     const char * _exceptionType = NULL;
1575     const char * _exceptionMessage = NULL;
1576     GLuint *value_base = (GLuint *) 0;
1577     jint _remaining;
1578     GLuint *value = (GLuint *) 0;
1579 
1580     if (!value_ref) {
1581         _exception = 1;
1582         _exceptionType = "java/lang/IllegalArgumentException";
1583         _exceptionMessage = "value == null";
1584         goto exit;
1585     }
1586     if (offset < 0) {
1587         _exception = 1;
1588         _exceptionType = "java/lang/IllegalArgumentException";
1589         _exceptionMessage = "offset < 0";
1590         goto exit;
1591     }
1592     _remaining = _env->GetArrayLength(value_ref) - offset;
1593     value_base = (GLuint *)
1594         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1595     value = value_base + offset;
1596 
1597     glProgramUniform3uiv(
1598         (GLuint)program,
1599         (GLint)location,
1600         (GLsizei)count,
1601         (GLuint *)value
1602     );
1603 
1604 exit:
1605     if (value_base) {
1606         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1607             JNI_ABORT);
1608     }
1609     if (_exception) {
1610         jniThrowException(_env, _exceptionType, _exceptionMessage);
1611     }
1612 }
1613 
1614 /* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1615 static void
android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1616 android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2
1617   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1618     jarray _array = (jarray) 0;
1619     jint _bufferOffset = (jint) 0;
1620     jint _remaining;
1621     GLuint *value = (GLuint *) 0;
1622 
1623     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1624     if (value == NULL) {
1625         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1626         value = (GLuint *) (_valueBase + _bufferOffset);
1627     }
1628     glProgramUniform3uiv(
1629         (GLuint)program,
1630         (GLint)location,
1631         (GLsizei)count,
1632         (GLuint *)value
1633     );
1634     if (_array) {
1635         releasePointer(_env, _array, value, JNI_FALSE);
1636     }
1637 }
1638 
1639 /* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1640 static void
android_glProgramUniform4uiv__III_3II(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jintArray value_ref,jint offset)1641 android_glProgramUniform4uiv__III_3II
1642   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) {
1643     jint _exception = 0;
1644     const char * _exceptionType = NULL;
1645     const char * _exceptionMessage = NULL;
1646     GLuint *value_base = (GLuint *) 0;
1647     jint _remaining;
1648     GLuint *value = (GLuint *) 0;
1649 
1650     if (!value_ref) {
1651         _exception = 1;
1652         _exceptionType = "java/lang/IllegalArgumentException";
1653         _exceptionMessage = "value == null";
1654         goto exit;
1655     }
1656     if (offset < 0) {
1657         _exception = 1;
1658         _exceptionType = "java/lang/IllegalArgumentException";
1659         _exceptionMessage = "offset < 0";
1660         goto exit;
1661     }
1662     _remaining = _env->GetArrayLength(value_ref) - offset;
1663     value_base = (GLuint *)
1664         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1665     value = value_base + offset;
1666 
1667     glProgramUniform4uiv(
1668         (GLuint)program,
1669         (GLint)location,
1670         (GLsizei)count,
1671         (GLuint *)value
1672     );
1673 
1674 exit:
1675     if (value_base) {
1676         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1677             JNI_ABORT);
1678     }
1679     if (_exception) {
1680         jniThrowException(_env, _exceptionType, _exceptionMessage);
1681     }
1682 }
1683 
1684 /* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */
1685 static void
android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1686 android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2
1687   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1688     jarray _array = (jarray) 0;
1689     jint _bufferOffset = (jint) 0;
1690     jint _remaining;
1691     GLuint *value = (GLuint *) 0;
1692 
1693     value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1694     if (value == NULL) {
1695         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1696         value = (GLuint *) (_valueBase + _bufferOffset);
1697     }
1698     glProgramUniform4uiv(
1699         (GLuint)program,
1700         (GLint)location,
1701         (GLsizei)count,
1702         (GLuint *)value
1703     );
1704     if (_array) {
1705         releasePointer(_env, _array, value, JNI_FALSE);
1706     }
1707 }
1708 
1709 /* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1710 static void
android_glProgramUniform1fv__III_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jfloatArray value_ref,jint offset)1711 android_glProgramUniform1fv__III_3FI
1712   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) {
1713     jint _exception = 0;
1714     const char * _exceptionType = NULL;
1715     const char * _exceptionMessage = NULL;
1716     GLfloat *value_base = (GLfloat *) 0;
1717     jint _remaining;
1718     GLfloat *value = (GLfloat *) 0;
1719 
1720     if (!value_ref) {
1721         _exception = 1;
1722         _exceptionType = "java/lang/IllegalArgumentException";
1723         _exceptionMessage = "value == null";
1724         goto exit;
1725     }
1726     if (offset < 0) {
1727         _exception = 1;
1728         _exceptionType = "java/lang/IllegalArgumentException";
1729         _exceptionMessage = "offset < 0";
1730         goto exit;
1731     }
1732     _remaining = _env->GetArrayLength(value_ref) - offset;
1733     value_base = (GLfloat *)
1734         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1735     value = value_base + offset;
1736 
1737     glProgramUniform1fv(
1738         (GLuint)program,
1739         (GLint)location,
1740         (GLsizei)count,
1741         (GLfloat *)value
1742     );
1743 
1744 exit:
1745     if (value_base) {
1746         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1747             JNI_ABORT);
1748     }
1749     if (_exception) {
1750         jniThrowException(_env, _exceptionType, _exceptionMessage);
1751     }
1752 }
1753 
1754 /* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1755 static void
android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1756 android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2
1757   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1758     jarray _array = (jarray) 0;
1759     jint _bufferOffset = (jint) 0;
1760     jint _remaining;
1761     GLfloat *value = (GLfloat *) 0;
1762 
1763     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1764     if (value == NULL) {
1765         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1766         value = (GLfloat *) (_valueBase + _bufferOffset);
1767     }
1768     glProgramUniform1fv(
1769         (GLuint)program,
1770         (GLint)location,
1771         (GLsizei)count,
1772         (GLfloat *)value
1773     );
1774     if (_array) {
1775         releasePointer(_env, _array, value, JNI_FALSE);
1776     }
1777 }
1778 
1779 /* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1780 static void
android_glProgramUniform2fv__III_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jfloatArray value_ref,jint offset)1781 android_glProgramUniform2fv__III_3FI
1782   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) {
1783     jint _exception = 0;
1784     const char * _exceptionType = NULL;
1785     const char * _exceptionMessage = NULL;
1786     GLfloat *value_base = (GLfloat *) 0;
1787     jint _remaining;
1788     GLfloat *value = (GLfloat *) 0;
1789 
1790     if (!value_ref) {
1791         _exception = 1;
1792         _exceptionType = "java/lang/IllegalArgumentException";
1793         _exceptionMessage = "value == null";
1794         goto exit;
1795     }
1796     if (offset < 0) {
1797         _exception = 1;
1798         _exceptionType = "java/lang/IllegalArgumentException";
1799         _exceptionMessage = "offset < 0";
1800         goto exit;
1801     }
1802     _remaining = _env->GetArrayLength(value_ref) - offset;
1803     value_base = (GLfloat *)
1804         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1805     value = value_base + offset;
1806 
1807     glProgramUniform2fv(
1808         (GLuint)program,
1809         (GLint)location,
1810         (GLsizei)count,
1811         (GLfloat *)value
1812     );
1813 
1814 exit:
1815     if (value_base) {
1816         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1817             JNI_ABORT);
1818     }
1819     if (_exception) {
1820         jniThrowException(_env, _exceptionType, _exceptionMessage);
1821     }
1822 }
1823 
1824 /* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1825 static void
android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1826 android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2
1827   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1828     jarray _array = (jarray) 0;
1829     jint _bufferOffset = (jint) 0;
1830     jint _remaining;
1831     GLfloat *value = (GLfloat *) 0;
1832 
1833     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1834     if (value == NULL) {
1835         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1836         value = (GLfloat *) (_valueBase + _bufferOffset);
1837     }
1838     glProgramUniform2fv(
1839         (GLuint)program,
1840         (GLint)location,
1841         (GLsizei)count,
1842         (GLfloat *)value
1843     );
1844     if (_array) {
1845         releasePointer(_env, _array, value, JNI_FALSE);
1846     }
1847 }
1848 
1849 /* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1850 static void
android_glProgramUniform3fv__III_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jfloatArray value_ref,jint offset)1851 android_glProgramUniform3fv__III_3FI
1852   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) {
1853     jint _exception = 0;
1854     const char * _exceptionType = NULL;
1855     const char * _exceptionMessage = NULL;
1856     GLfloat *value_base = (GLfloat *) 0;
1857     jint _remaining;
1858     GLfloat *value = (GLfloat *) 0;
1859 
1860     if (!value_ref) {
1861         _exception = 1;
1862         _exceptionType = "java/lang/IllegalArgumentException";
1863         _exceptionMessage = "value == null";
1864         goto exit;
1865     }
1866     if (offset < 0) {
1867         _exception = 1;
1868         _exceptionType = "java/lang/IllegalArgumentException";
1869         _exceptionMessage = "offset < 0";
1870         goto exit;
1871     }
1872     _remaining = _env->GetArrayLength(value_ref) - offset;
1873     value_base = (GLfloat *)
1874         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1875     value = value_base + offset;
1876 
1877     glProgramUniform3fv(
1878         (GLuint)program,
1879         (GLint)location,
1880         (GLsizei)count,
1881         (GLfloat *)value
1882     );
1883 
1884 exit:
1885     if (value_base) {
1886         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1887             JNI_ABORT);
1888     }
1889     if (_exception) {
1890         jniThrowException(_env, _exceptionType, _exceptionMessage);
1891     }
1892 }
1893 
1894 /* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1895 static void
android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1896 android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2
1897   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1898     jarray _array = (jarray) 0;
1899     jint _bufferOffset = (jint) 0;
1900     jint _remaining;
1901     GLfloat *value = (GLfloat *) 0;
1902 
1903     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1904     if (value == NULL) {
1905         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1906         value = (GLfloat *) (_valueBase + _bufferOffset);
1907     }
1908     glProgramUniform3fv(
1909         (GLuint)program,
1910         (GLint)location,
1911         (GLsizei)count,
1912         (GLfloat *)value
1913     );
1914     if (_array) {
1915         releasePointer(_env, _array, value, JNI_FALSE);
1916     }
1917 }
1918 
1919 /* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1920 static void
android_glProgramUniform4fv__III_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jfloatArray value_ref,jint offset)1921 android_glProgramUniform4fv__III_3FI
1922   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) {
1923     jint _exception = 0;
1924     const char * _exceptionType = NULL;
1925     const char * _exceptionMessage = NULL;
1926     GLfloat *value_base = (GLfloat *) 0;
1927     jint _remaining;
1928     GLfloat *value = (GLfloat *) 0;
1929 
1930     if (!value_ref) {
1931         _exception = 1;
1932         _exceptionType = "java/lang/IllegalArgumentException";
1933         _exceptionMessage = "value == null";
1934         goto exit;
1935     }
1936     if (offset < 0) {
1937         _exception = 1;
1938         _exceptionType = "java/lang/IllegalArgumentException";
1939         _exceptionMessage = "offset < 0";
1940         goto exit;
1941     }
1942     _remaining = _env->GetArrayLength(value_ref) - offset;
1943     value_base = (GLfloat *)
1944         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1945     value = value_base + offset;
1946 
1947     glProgramUniform4fv(
1948         (GLuint)program,
1949         (GLint)location,
1950         (GLsizei)count,
1951         (GLfloat *)value
1952     );
1953 
1954 exit:
1955     if (value_base) {
1956         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1957             JNI_ABORT);
1958     }
1959     if (_exception) {
1960         jniThrowException(_env, _exceptionType, _exceptionMessage);
1961     }
1962 }
1963 
1964 /* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */
1965 static void
android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jobject value_buf)1966 android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2
1967   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) {
1968     jarray _array = (jarray) 0;
1969     jint _bufferOffset = (jint) 0;
1970     jint _remaining;
1971     GLfloat *value = (GLfloat *) 0;
1972 
1973     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1974     if (value == NULL) {
1975         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1976         value = (GLfloat *) (_valueBase + _bufferOffset);
1977     }
1978     glProgramUniform4fv(
1979         (GLuint)program,
1980         (GLint)location,
1981         (GLsizei)count,
1982         (GLfloat *)value
1983     );
1984     if (_array) {
1985         releasePointer(_env, _array, value, JNI_FALSE);
1986     }
1987 }
1988 
1989 /* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1990 static void
android_glProgramUniformMatrix2fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)1991 android_glProgramUniformMatrix2fv__IIIZ_3FI
1992   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1993     jint _exception = 0;
1994     const char * _exceptionType = NULL;
1995     const char * _exceptionMessage = NULL;
1996     GLfloat *value_base = (GLfloat *) 0;
1997     jint _remaining;
1998     GLfloat *value = (GLfloat *) 0;
1999 
2000     if (!value_ref) {
2001         _exception = 1;
2002         _exceptionType = "java/lang/IllegalArgumentException";
2003         _exceptionMessage = "value == null";
2004         goto exit;
2005     }
2006     if (offset < 0) {
2007         _exception = 1;
2008         _exceptionType = "java/lang/IllegalArgumentException";
2009         _exceptionMessage = "offset < 0";
2010         goto exit;
2011     }
2012     _remaining = _env->GetArrayLength(value_ref) - offset;
2013     value_base = (GLfloat *)
2014         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2015     value = value_base + offset;
2016 
2017     glProgramUniformMatrix2fv(
2018         (GLuint)program,
2019         (GLint)location,
2020         (GLsizei)count,
2021         (GLboolean)transpose,
2022         (GLfloat *)value
2023     );
2024 
2025 exit:
2026     if (value_base) {
2027         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2028             JNI_ABORT);
2029     }
2030     if (_exception) {
2031         jniThrowException(_env, _exceptionType, _exceptionMessage);
2032     }
2033 }
2034 
2035 /* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2036 static void
android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2037 android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2
2038   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2039     jarray _array = (jarray) 0;
2040     jint _bufferOffset = (jint) 0;
2041     jint _remaining;
2042     GLfloat *value = (GLfloat *) 0;
2043 
2044     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2045     if (value == NULL) {
2046         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2047         value = (GLfloat *) (_valueBase + _bufferOffset);
2048     }
2049     glProgramUniformMatrix2fv(
2050         (GLuint)program,
2051         (GLint)location,
2052         (GLsizei)count,
2053         (GLboolean)transpose,
2054         (GLfloat *)value
2055     );
2056     if (_array) {
2057         releasePointer(_env, _array, value, JNI_FALSE);
2058     }
2059 }
2060 
2061 /* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2062 static void
android_glProgramUniformMatrix3fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2063 android_glProgramUniformMatrix3fv__IIIZ_3FI
2064   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2065     jint _exception = 0;
2066     const char * _exceptionType = NULL;
2067     const char * _exceptionMessage = NULL;
2068     GLfloat *value_base = (GLfloat *) 0;
2069     jint _remaining;
2070     GLfloat *value = (GLfloat *) 0;
2071 
2072     if (!value_ref) {
2073         _exception = 1;
2074         _exceptionType = "java/lang/IllegalArgumentException";
2075         _exceptionMessage = "value == null";
2076         goto exit;
2077     }
2078     if (offset < 0) {
2079         _exception = 1;
2080         _exceptionType = "java/lang/IllegalArgumentException";
2081         _exceptionMessage = "offset < 0";
2082         goto exit;
2083     }
2084     _remaining = _env->GetArrayLength(value_ref) - offset;
2085     value_base = (GLfloat *)
2086         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2087     value = value_base + offset;
2088 
2089     glProgramUniformMatrix3fv(
2090         (GLuint)program,
2091         (GLint)location,
2092         (GLsizei)count,
2093         (GLboolean)transpose,
2094         (GLfloat *)value
2095     );
2096 
2097 exit:
2098     if (value_base) {
2099         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2100             JNI_ABORT);
2101     }
2102     if (_exception) {
2103         jniThrowException(_env, _exceptionType, _exceptionMessage);
2104     }
2105 }
2106 
2107 /* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2108 static void
android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2109 android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2
2110   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2111     jarray _array = (jarray) 0;
2112     jint _bufferOffset = (jint) 0;
2113     jint _remaining;
2114     GLfloat *value = (GLfloat *) 0;
2115 
2116     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2117     if (value == NULL) {
2118         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2119         value = (GLfloat *) (_valueBase + _bufferOffset);
2120     }
2121     glProgramUniformMatrix3fv(
2122         (GLuint)program,
2123         (GLint)location,
2124         (GLsizei)count,
2125         (GLboolean)transpose,
2126         (GLfloat *)value
2127     );
2128     if (_array) {
2129         releasePointer(_env, _array, value, JNI_FALSE);
2130     }
2131 }
2132 
2133 /* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2134 static void
android_glProgramUniformMatrix4fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2135 android_glProgramUniformMatrix4fv__IIIZ_3FI
2136   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2137     jint _exception = 0;
2138     const char * _exceptionType = NULL;
2139     const char * _exceptionMessage = NULL;
2140     GLfloat *value_base = (GLfloat *) 0;
2141     jint _remaining;
2142     GLfloat *value = (GLfloat *) 0;
2143 
2144     if (!value_ref) {
2145         _exception = 1;
2146         _exceptionType = "java/lang/IllegalArgumentException";
2147         _exceptionMessage = "value == null";
2148         goto exit;
2149     }
2150     if (offset < 0) {
2151         _exception = 1;
2152         _exceptionType = "java/lang/IllegalArgumentException";
2153         _exceptionMessage = "offset < 0";
2154         goto exit;
2155     }
2156     _remaining = _env->GetArrayLength(value_ref) - offset;
2157     value_base = (GLfloat *)
2158         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2159     value = value_base + offset;
2160 
2161     glProgramUniformMatrix4fv(
2162         (GLuint)program,
2163         (GLint)location,
2164         (GLsizei)count,
2165         (GLboolean)transpose,
2166         (GLfloat *)value
2167     );
2168 
2169 exit:
2170     if (value_base) {
2171         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2172             JNI_ABORT);
2173     }
2174     if (_exception) {
2175         jniThrowException(_env, _exceptionType, _exceptionMessage);
2176     }
2177 }
2178 
2179 /* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2180 static void
android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2181 android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2
2182   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2183     jarray _array = (jarray) 0;
2184     jint _bufferOffset = (jint) 0;
2185     jint _remaining;
2186     GLfloat *value = (GLfloat *) 0;
2187 
2188     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2189     if (value == NULL) {
2190         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2191         value = (GLfloat *) (_valueBase + _bufferOffset);
2192     }
2193     glProgramUniformMatrix4fv(
2194         (GLuint)program,
2195         (GLint)location,
2196         (GLsizei)count,
2197         (GLboolean)transpose,
2198         (GLfloat *)value
2199     );
2200     if (_array) {
2201         releasePointer(_env, _array, value, JNI_FALSE);
2202     }
2203 }
2204 
2205 /* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2206 static void
android_glProgramUniformMatrix2x3fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2207 android_glProgramUniformMatrix2x3fv__IIIZ_3FI
2208   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2209     jint _exception = 0;
2210     const char * _exceptionType = NULL;
2211     const char * _exceptionMessage = NULL;
2212     GLfloat *value_base = (GLfloat *) 0;
2213     jint _remaining;
2214     GLfloat *value = (GLfloat *) 0;
2215 
2216     if (!value_ref) {
2217         _exception = 1;
2218         _exceptionType = "java/lang/IllegalArgumentException";
2219         _exceptionMessage = "value == null";
2220         goto exit;
2221     }
2222     if (offset < 0) {
2223         _exception = 1;
2224         _exceptionType = "java/lang/IllegalArgumentException";
2225         _exceptionMessage = "offset < 0";
2226         goto exit;
2227     }
2228     _remaining = _env->GetArrayLength(value_ref) - offset;
2229     value_base = (GLfloat *)
2230         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2231     value = value_base + offset;
2232 
2233     glProgramUniformMatrix2x3fv(
2234         (GLuint)program,
2235         (GLint)location,
2236         (GLsizei)count,
2237         (GLboolean)transpose,
2238         (GLfloat *)value
2239     );
2240 
2241 exit:
2242     if (value_base) {
2243         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2244             JNI_ABORT);
2245     }
2246     if (_exception) {
2247         jniThrowException(_env, _exceptionType, _exceptionMessage);
2248     }
2249 }
2250 
2251 /* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2252 static void
android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2253 android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2
2254   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2255     jarray _array = (jarray) 0;
2256     jint _bufferOffset = (jint) 0;
2257     jint _remaining;
2258     GLfloat *value = (GLfloat *) 0;
2259 
2260     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2261     if (value == NULL) {
2262         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2263         value = (GLfloat *) (_valueBase + _bufferOffset);
2264     }
2265     glProgramUniformMatrix2x3fv(
2266         (GLuint)program,
2267         (GLint)location,
2268         (GLsizei)count,
2269         (GLboolean)transpose,
2270         (GLfloat *)value
2271     );
2272     if (_array) {
2273         releasePointer(_env, _array, value, JNI_FALSE);
2274     }
2275 }
2276 
2277 /* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2278 static void
android_glProgramUniformMatrix3x2fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2279 android_glProgramUniformMatrix3x2fv__IIIZ_3FI
2280   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2281     jint _exception = 0;
2282     const char * _exceptionType = NULL;
2283     const char * _exceptionMessage = NULL;
2284     GLfloat *value_base = (GLfloat *) 0;
2285     jint _remaining;
2286     GLfloat *value = (GLfloat *) 0;
2287 
2288     if (!value_ref) {
2289         _exception = 1;
2290         _exceptionType = "java/lang/IllegalArgumentException";
2291         _exceptionMessage = "value == null";
2292         goto exit;
2293     }
2294     if (offset < 0) {
2295         _exception = 1;
2296         _exceptionType = "java/lang/IllegalArgumentException";
2297         _exceptionMessage = "offset < 0";
2298         goto exit;
2299     }
2300     _remaining = _env->GetArrayLength(value_ref) - offset;
2301     value_base = (GLfloat *)
2302         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2303     value = value_base + offset;
2304 
2305     glProgramUniformMatrix3x2fv(
2306         (GLuint)program,
2307         (GLint)location,
2308         (GLsizei)count,
2309         (GLboolean)transpose,
2310         (GLfloat *)value
2311     );
2312 
2313 exit:
2314     if (value_base) {
2315         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2316             JNI_ABORT);
2317     }
2318     if (_exception) {
2319         jniThrowException(_env, _exceptionType, _exceptionMessage);
2320     }
2321 }
2322 
2323 /* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2324 static void
android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2325 android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2
2326   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2327     jarray _array = (jarray) 0;
2328     jint _bufferOffset = (jint) 0;
2329     jint _remaining;
2330     GLfloat *value = (GLfloat *) 0;
2331 
2332     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2333     if (value == NULL) {
2334         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2335         value = (GLfloat *) (_valueBase + _bufferOffset);
2336     }
2337     glProgramUniformMatrix3x2fv(
2338         (GLuint)program,
2339         (GLint)location,
2340         (GLsizei)count,
2341         (GLboolean)transpose,
2342         (GLfloat *)value
2343     );
2344     if (_array) {
2345         releasePointer(_env, _array, value, JNI_FALSE);
2346     }
2347 }
2348 
2349 /* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2350 static void
android_glProgramUniformMatrix2x4fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2351 android_glProgramUniformMatrix2x4fv__IIIZ_3FI
2352   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2353     jint _exception = 0;
2354     const char * _exceptionType = NULL;
2355     const char * _exceptionMessage = NULL;
2356     GLfloat *value_base = (GLfloat *) 0;
2357     jint _remaining;
2358     GLfloat *value = (GLfloat *) 0;
2359 
2360     if (!value_ref) {
2361         _exception = 1;
2362         _exceptionType = "java/lang/IllegalArgumentException";
2363         _exceptionMessage = "value == null";
2364         goto exit;
2365     }
2366     if (offset < 0) {
2367         _exception = 1;
2368         _exceptionType = "java/lang/IllegalArgumentException";
2369         _exceptionMessage = "offset < 0";
2370         goto exit;
2371     }
2372     _remaining = _env->GetArrayLength(value_ref) - offset;
2373     value_base = (GLfloat *)
2374         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2375     value = value_base + offset;
2376 
2377     glProgramUniformMatrix2x4fv(
2378         (GLuint)program,
2379         (GLint)location,
2380         (GLsizei)count,
2381         (GLboolean)transpose,
2382         (GLfloat *)value
2383     );
2384 
2385 exit:
2386     if (value_base) {
2387         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2388             JNI_ABORT);
2389     }
2390     if (_exception) {
2391         jniThrowException(_env, _exceptionType, _exceptionMessage);
2392     }
2393 }
2394 
2395 /* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2396 static void
android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2397 android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2
2398   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2399     jarray _array = (jarray) 0;
2400     jint _bufferOffset = (jint) 0;
2401     jint _remaining;
2402     GLfloat *value = (GLfloat *) 0;
2403 
2404     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2405     if (value == NULL) {
2406         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2407         value = (GLfloat *) (_valueBase + _bufferOffset);
2408     }
2409     glProgramUniformMatrix2x4fv(
2410         (GLuint)program,
2411         (GLint)location,
2412         (GLsizei)count,
2413         (GLboolean)transpose,
2414         (GLfloat *)value
2415     );
2416     if (_array) {
2417         releasePointer(_env, _array, value, JNI_FALSE);
2418     }
2419 }
2420 
2421 /* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2422 static void
android_glProgramUniformMatrix4x2fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2423 android_glProgramUniformMatrix4x2fv__IIIZ_3FI
2424   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2425     jint _exception = 0;
2426     const char * _exceptionType = NULL;
2427     const char * _exceptionMessage = NULL;
2428     GLfloat *value_base = (GLfloat *) 0;
2429     jint _remaining;
2430     GLfloat *value = (GLfloat *) 0;
2431 
2432     if (!value_ref) {
2433         _exception = 1;
2434         _exceptionType = "java/lang/IllegalArgumentException";
2435         _exceptionMessage = "value == null";
2436         goto exit;
2437     }
2438     if (offset < 0) {
2439         _exception = 1;
2440         _exceptionType = "java/lang/IllegalArgumentException";
2441         _exceptionMessage = "offset < 0";
2442         goto exit;
2443     }
2444     _remaining = _env->GetArrayLength(value_ref) - offset;
2445     value_base = (GLfloat *)
2446         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2447     value = value_base + offset;
2448 
2449     glProgramUniformMatrix4x2fv(
2450         (GLuint)program,
2451         (GLint)location,
2452         (GLsizei)count,
2453         (GLboolean)transpose,
2454         (GLfloat *)value
2455     );
2456 
2457 exit:
2458     if (value_base) {
2459         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2460             JNI_ABORT);
2461     }
2462     if (_exception) {
2463         jniThrowException(_env, _exceptionType, _exceptionMessage);
2464     }
2465 }
2466 
2467 /* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2468 static void
android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2469 android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2
2470   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2471     jarray _array = (jarray) 0;
2472     jint _bufferOffset = (jint) 0;
2473     jint _remaining;
2474     GLfloat *value = (GLfloat *) 0;
2475 
2476     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2477     if (value == NULL) {
2478         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2479         value = (GLfloat *) (_valueBase + _bufferOffset);
2480     }
2481     glProgramUniformMatrix4x2fv(
2482         (GLuint)program,
2483         (GLint)location,
2484         (GLsizei)count,
2485         (GLboolean)transpose,
2486         (GLfloat *)value
2487     );
2488     if (_array) {
2489         releasePointer(_env, _array, value, JNI_FALSE);
2490     }
2491 }
2492 
2493 /* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2494 static void
android_glProgramUniformMatrix3x4fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2495 android_glProgramUniformMatrix3x4fv__IIIZ_3FI
2496   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2497     jint _exception = 0;
2498     const char * _exceptionType = NULL;
2499     const char * _exceptionMessage = NULL;
2500     GLfloat *value_base = (GLfloat *) 0;
2501     jint _remaining;
2502     GLfloat *value = (GLfloat *) 0;
2503 
2504     if (!value_ref) {
2505         _exception = 1;
2506         _exceptionType = "java/lang/IllegalArgumentException";
2507         _exceptionMessage = "value == null";
2508         goto exit;
2509     }
2510     if (offset < 0) {
2511         _exception = 1;
2512         _exceptionType = "java/lang/IllegalArgumentException";
2513         _exceptionMessage = "offset < 0";
2514         goto exit;
2515     }
2516     _remaining = _env->GetArrayLength(value_ref) - offset;
2517     value_base = (GLfloat *)
2518         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2519     value = value_base + offset;
2520 
2521     glProgramUniformMatrix3x4fv(
2522         (GLuint)program,
2523         (GLint)location,
2524         (GLsizei)count,
2525         (GLboolean)transpose,
2526         (GLfloat *)value
2527     );
2528 
2529 exit:
2530     if (value_base) {
2531         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2532             JNI_ABORT);
2533     }
2534     if (_exception) {
2535         jniThrowException(_env, _exceptionType, _exceptionMessage);
2536     }
2537 }
2538 
2539 /* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2540 static void
android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2541 android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2
2542   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2543     jarray _array = (jarray) 0;
2544     jint _bufferOffset = (jint) 0;
2545     jint _remaining;
2546     GLfloat *value = (GLfloat *) 0;
2547 
2548     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2549     if (value == NULL) {
2550         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2551         value = (GLfloat *) (_valueBase + _bufferOffset);
2552     }
2553     glProgramUniformMatrix3x4fv(
2554         (GLuint)program,
2555         (GLint)location,
2556         (GLsizei)count,
2557         (GLboolean)transpose,
2558         (GLfloat *)value
2559     );
2560     if (_array) {
2561         releasePointer(_env, _array, value, JNI_FALSE);
2562     }
2563 }
2564 
2565 /* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2566 static void
android_glProgramUniformMatrix4x3fv__IIIZ_3FI(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jfloatArray value_ref,jint offset)2567 android_glProgramUniformMatrix4x3fv__IIIZ_3FI
2568   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
2569     jint _exception = 0;
2570     const char * _exceptionType = NULL;
2571     const char * _exceptionMessage = NULL;
2572     GLfloat *value_base = (GLfloat *) 0;
2573     jint _remaining;
2574     GLfloat *value = (GLfloat *) 0;
2575 
2576     if (!value_ref) {
2577         _exception = 1;
2578         _exceptionType = "java/lang/IllegalArgumentException";
2579         _exceptionMessage = "value == null";
2580         goto exit;
2581     }
2582     if (offset < 0) {
2583         _exception = 1;
2584         _exceptionType = "java/lang/IllegalArgumentException";
2585         _exceptionMessage = "offset < 0";
2586         goto exit;
2587     }
2588     _remaining = _env->GetArrayLength(value_ref) - offset;
2589     value_base = (GLfloat *)
2590         _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
2591     value = value_base + offset;
2592 
2593     glProgramUniformMatrix4x3fv(
2594         (GLuint)program,
2595         (GLint)location,
2596         (GLsizei)count,
2597         (GLboolean)transpose,
2598         (GLfloat *)value
2599     );
2600 
2601 exit:
2602     if (value_base) {
2603         _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
2604             JNI_ABORT);
2605     }
2606     if (_exception) {
2607         jniThrowException(_env, _exceptionType, _exceptionMessage);
2608     }
2609 }
2610 
2611 /* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
2612 static void
android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint program,jint location,jint count,jboolean transpose,jobject value_buf)2613 android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2
2614   (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) {
2615     jarray _array = (jarray) 0;
2616     jint _bufferOffset = (jint) 0;
2617     jint _remaining;
2618     GLfloat *value = (GLfloat *) 0;
2619 
2620     value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
2621     if (value == NULL) {
2622         char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2623         value = (GLfloat *) (_valueBase + _bufferOffset);
2624     }
2625     glProgramUniformMatrix4x3fv(
2626         (GLuint)program,
2627         (GLint)location,
2628         (GLsizei)count,
2629         (GLboolean)transpose,
2630         (GLfloat *)value
2631     );
2632     if (_array) {
2633         releasePointer(_env, _array, value, JNI_FALSE);
2634     }
2635 }
2636 
2637 /* void glValidateProgramPipeline ( GLuint pipeline ) */
2638 static void
android_glValidateProgramPipeline__I(JNIEnv * _env,jobject _this,jint pipeline)2639 android_glValidateProgramPipeline__I
2640   (JNIEnv *_env, jobject _this, jint pipeline) {
2641     glValidateProgramPipeline(
2642         (GLuint)pipeline
2643     );
2644 }
2645 
2646 #include <stdlib.h>
2647 
2648 /* void glGetProgramPipelineInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
android_glGetProgramPipelineInfoLog(JNIEnv * _env,jobject,jint shader)2649 static jstring android_glGetProgramPipelineInfoLog(JNIEnv *_env, jobject, jint shader) {
2650     GLint infoLen = 0;
2651     glGetProgramPipelineiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
2652     if (!infoLen) {
2653         return _env->NewStringUTF("");
2654     }
2655     char* buf = (char*) malloc(infoLen);
2656     if (buf == NULL) {
2657         jniThrowException(_env, "java/lang/OutOfMemoryError", "out of memory");
2658         return NULL;
2659     }
2660     glGetProgramPipelineInfoLog(shader, infoLen, NULL, buf);
2661     jstring result = _env->NewStringUTF(buf);
2662     free(buf);
2663     return result;
2664 }
2665 /* void glBindImageTexture ( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format ) */
2666 static void
android_glBindImageTexture__IIIZIII(JNIEnv * _env,jobject _this,jint unit,jint texture,jint level,jboolean layered,jint layer,jint access,jint format)2667 android_glBindImageTexture__IIIZIII
2668   (JNIEnv *_env, jobject _this, jint unit, jint texture, jint level, jboolean layered, jint layer, jint access, jint format) {
2669     glBindImageTexture(
2670         (GLuint)unit,
2671         (GLuint)texture,
2672         (GLint)level,
2673         (GLboolean)layered,
2674         (GLint)layer,
2675         (GLenum)access,
2676         (GLenum)format
2677     );
2678 }
2679 
2680 /* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */
2681 static void
android_glGetBooleani_v__II_3ZI(JNIEnv * _env,jobject _this,jint target,jint index,jbooleanArray data_ref,jint offset)2682 android_glGetBooleani_v__II_3ZI
2683   (JNIEnv *_env, jobject _this, jint target, jint index, jbooleanArray data_ref, jint offset) {
2684     jint _exception = 0;
2685     const char * _exceptionType = NULL;
2686     const char * _exceptionMessage = NULL;
2687     GLboolean *data_base = (GLboolean *) 0;
2688     jint _remaining;
2689     GLboolean *data = (GLboolean *) 0;
2690 
2691     if (!data_ref) {
2692         _exception = 1;
2693         _exceptionType = "java/lang/IllegalArgumentException";
2694         _exceptionMessage = "data == null";
2695         goto exit;
2696     }
2697     if (offset < 0) {
2698         _exception = 1;
2699         _exceptionType = "java/lang/IllegalArgumentException";
2700         _exceptionMessage = "offset < 0";
2701         goto exit;
2702     }
2703     _remaining = _env->GetArrayLength(data_ref) - offset;
2704     data_base = (GLboolean *)
2705         _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0);
2706     data = data_base + offset;
2707 
2708     glGetBooleani_v(
2709         (GLenum)target,
2710         (GLuint)index,
2711         (GLboolean *)data
2712     );
2713 
2714 exit:
2715     if (data_base) {
2716         _env->ReleasePrimitiveArrayCritical(data_ref, data_base,
2717             _exception ? JNI_ABORT: 0);
2718     }
2719     if (_exception) {
2720         jniThrowException(_env, _exceptionType, _exceptionMessage);
2721     }
2722 }
2723 
2724 /* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */
2725 static void
android_glGetBooleani_v__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint index,jobject data_buf)2726 android_glGetBooleani_v__IILjava_nio_IntBuffer_2
2727   (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) {
2728     jarray _array = (jarray) 0;
2729     jint _bufferOffset = (jint) 0;
2730     jint _remaining;
2731     GLboolean *data = (GLboolean *) 0;
2732 
2733     data = (GLboolean *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
2734     if (data == NULL) {
2735         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2736         data = (GLboolean *) (_dataBase + _bufferOffset);
2737     }
2738     glGetBooleani_v(
2739         (GLenum)target,
2740         (GLuint)index,
2741         (GLboolean *)data
2742     );
2743     if (_array) {
2744         releasePointer(_env, _array, data, JNI_TRUE);
2745     }
2746 }
2747 
2748 /* void glMemoryBarrier ( GLbitfield barriers ) */
2749 static void
android_glMemoryBarrier__I(JNIEnv * _env,jobject _this,jint barriers)2750 android_glMemoryBarrier__I
2751   (JNIEnv *_env, jobject _this, jint barriers) {
2752     glMemoryBarrier(
2753         (GLbitfield)barriers
2754     );
2755 }
2756 
2757 /* void glMemoryBarrierByRegion ( GLbitfield barriers ) */
2758 static void
android_glMemoryBarrierByRegion__I(JNIEnv * _env,jobject _this,jint barriers)2759 android_glMemoryBarrierByRegion__I
2760   (JNIEnv *_env, jobject _this, jint barriers) {
2761     glMemoryBarrierByRegion(
2762         (GLbitfield)barriers
2763     );
2764 }
2765 
2766 /* void glTexStorage2DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations ) */
2767 static void
android_glTexStorage2DMultisample__IIIIIZ(JNIEnv * _env,jobject _this,jint target,jint samples,jint internalformat,jint width,jint height,jboolean fixedsamplelocations)2768 android_glTexStorage2DMultisample__IIIIIZ
2769   (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jboolean fixedsamplelocations) {
2770     glTexStorage2DMultisample(
2771         (GLenum)target,
2772         (GLsizei)samples,
2773         (GLenum)internalformat,
2774         (GLsizei)width,
2775         (GLsizei)height,
2776         (GLboolean)fixedsamplelocations
2777     );
2778 }
2779 
2780 /* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */
2781 static void
android_glGetMultisamplefv__II_3FI(JNIEnv * _env,jobject _this,jint pname,jint index,jfloatArray val_ref,jint offset)2782 android_glGetMultisamplefv__II_3FI
2783   (JNIEnv *_env, jobject _this, jint pname, jint index, jfloatArray val_ref, jint offset) {
2784     jint _exception = 0;
2785     const char * _exceptionType = NULL;
2786     const char * _exceptionMessage = NULL;
2787     GLfloat *val_base = (GLfloat *) 0;
2788     jint _remaining;
2789     GLfloat *val = (GLfloat *) 0;
2790 
2791     if (!val_ref) {
2792         _exception = 1;
2793         _exceptionType = "java/lang/IllegalArgumentException";
2794         _exceptionMessage = "val == null";
2795         goto exit;
2796     }
2797     if (offset < 0) {
2798         _exception = 1;
2799         _exceptionType = "java/lang/IllegalArgumentException";
2800         _exceptionMessage = "offset < 0";
2801         goto exit;
2802     }
2803     _remaining = _env->GetArrayLength(val_ref) - offset;
2804     val_base = (GLfloat *)
2805         _env->GetPrimitiveArrayCritical(val_ref, (jboolean *)0);
2806     val = val_base + offset;
2807 
2808     glGetMultisamplefv(
2809         (GLenum)pname,
2810         (GLuint)index,
2811         (GLfloat *)val
2812     );
2813 
2814 exit:
2815     if (val_base) {
2816         _env->ReleasePrimitiveArrayCritical(val_ref, val_base,
2817             _exception ? JNI_ABORT: 0);
2818     }
2819     if (_exception) {
2820         jniThrowException(_env, _exceptionType, _exceptionMessage);
2821     }
2822 }
2823 
2824 /* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */
2825 static void
android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint pname,jint index,jobject val_buf)2826 android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2
2827   (JNIEnv *_env, jobject _this, jint pname, jint index, jobject val_buf) {
2828     jarray _array = (jarray) 0;
2829     jint _bufferOffset = (jint) 0;
2830     jint _remaining;
2831     GLfloat *val = (GLfloat *) 0;
2832 
2833     val = (GLfloat *)getPointer(_env, val_buf, &_array, &_remaining, &_bufferOffset);
2834     if (val == NULL) {
2835         char * _valBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2836         val = (GLfloat *) (_valBase + _bufferOffset);
2837     }
2838     glGetMultisamplefv(
2839         (GLenum)pname,
2840         (GLuint)index,
2841         (GLfloat *)val
2842     );
2843     if (_array) {
2844         releasePointer(_env, _array, val, JNI_TRUE);
2845     }
2846 }
2847 
2848 /* void glSampleMaski ( GLuint maskNumber, GLbitfield mask ) */
2849 static void
android_glSampleMaski__II(JNIEnv * _env,jobject _this,jint maskNumber,jint mask)2850 android_glSampleMaski__II
2851   (JNIEnv *_env, jobject _this, jint maskNumber, jint mask) {
2852     glSampleMaski(
2853         (GLuint)maskNumber,
2854         (GLbitfield)mask
2855     );
2856 }
2857 
2858 /* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */
2859 static void
android_glGetTexLevelParameteriv__III_3II(JNIEnv * _env,jobject _this,jint target,jint level,jint pname,jintArray params_ref,jint offset)2860 android_glGetTexLevelParameteriv__III_3II
2861   (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jintArray params_ref, jint offset) {
2862     jint _exception = 0;
2863     const char * _exceptionType = NULL;
2864     const char * _exceptionMessage = NULL;
2865     GLint *params_base = (GLint *) 0;
2866     jint _remaining;
2867     GLint *params = (GLint *) 0;
2868 
2869     if (!params_ref) {
2870         _exception = 1;
2871         _exceptionType = "java/lang/IllegalArgumentException";
2872         _exceptionMessage = "params == null";
2873         goto exit;
2874     }
2875     if (offset < 0) {
2876         _exception = 1;
2877         _exceptionType = "java/lang/IllegalArgumentException";
2878         _exceptionMessage = "offset < 0";
2879         goto exit;
2880     }
2881     _remaining = _env->GetArrayLength(params_ref) - offset;
2882     params_base = (GLint *)
2883         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2884     params = params_base + offset;
2885 
2886     glGetTexLevelParameteriv(
2887         (GLenum)target,
2888         (GLint)level,
2889         (GLenum)pname,
2890         (GLint *)params
2891     );
2892 
2893 exit:
2894     if (params_base) {
2895         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2896             _exception ? JNI_ABORT: 0);
2897     }
2898     if (_exception) {
2899         jniThrowException(_env, _exceptionType, _exceptionMessage);
2900     }
2901 }
2902 
2903 /* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */
2904 static void
android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint pname,jobject params_buf)2905 android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2
2906   (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) {
2907     jarray _array = (jarray) 0;
2908     jint _bufferOffset = (jint) 0;
2909     jint _remaining;
2910     GLint *params = (GLint *) 0;
2911 
2912     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2913     if (params == NULL) {
2914         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2915         params = (GLint *) (_paramsBase + _bufferOffset);
2916     }
2917     glGetTexLevelParameteriv(
2918         (GLenum)target,
2919         (GLint)level,
2920         (GLenum)pname,
2921         (GLint *)params
2922     );
2923     if (_array) {
2924         releasePointer(_env, _array, params, JNI_TRUE);
2925     }
2926 }
2927 
2928 /* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */
2929 static void
android_glGetTexLevelParameterfv__III_3FI(JNIEnv * _env,jobject _this,jint target,jint level,jint pname,jfloatArray params_ref,jint offset)2930 android_glGetTexLevelParameterfv__III_3FI
2931   (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jfloatArray params_ref, jint offset) {
2932     jint _exception = 0;
2933     const char * _exceptionType = NULL;
2934     const char * _exceptionMessage = NULL;
2935     GLfloat *params_base = (GLfloat *) 0;
2936     jint _remaining;
2937     GLfloat *params = (GLfloat *) 0;
2938 
2939     if (!params_ref) {
2940         _exception = 1;
2941         _exceptionType = "java/lang/IllegalArgumentException";
2942         _exceptionMessage = "params == null";
2943         goto exit;
2944     }
2945     if (offset < 0) {
2946         _exception = 1;
2947         _exceptionType = "java/lang/IllegalArgumentException";
2948         _exceptionMessage = "offset < 0";
2949         goto exit;
2950     }
2951     _remaining = _env->GetArrayLength(params_ref) - offset;
2952     params_base = (GLfloat *)
2953         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2954     params = params_base + offset;
2955 
2956     glGetTexLevelParameterfv(
2957         (GLenum)target,
2958         (GLint)level,
2959         (GLenum)pname,
2960         (GLfloat *)params
2961     );
2962 
2963 exit:
2964     if (params_base) {
2965         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2966             _exception ? JNI_ABORT: 0);
2967     }
2968     if (_exception) {
2969         jniThrowException(_env, _exceptionType, _exceptionMessage);
2970     }
2971 }
2972 
2973 /* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */
2974 static void
android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint pname,jobject params_buf)2975 android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2
2976   (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) {
2977     jarray _array = (jarray) 0;
2978     jint _bufferOffset = (jint) 0;
2979     jint _remaining;
2980     GLfloat *params = (GLfloat *) 0;
2981 
2982     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2983     if (params == NULL) {
2984         char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2985         params = (GLfloat *) (_paramsBase + _bufferOffset);
2986     }
2987     glGetTexLevelParameterfv(
2988         (GLenum)target,
2989         (GLint)level,
2990         (GLenum)pname,
2991         (GLfloat *)params
2992     );
2993     if (_array) {
2994         releasePointer(_env, _array, params, JNI_TRUE);
2995     }
2996 }
2997 
2998 /* void glBindVertexBuffer ( GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride ) */
2999 static void
android_glBindVertexBuffer__IIJI(JNIEnv * _env,jobject _this,jint bindingindex,jint buffer,jlong offset,jint stride)3000 android_glBindVertexBuffer__IIJI
3001   (JNIEnv *_env, jobject _this, jint bindingindex, jint buffer, jlong offset, jint stride) {
3002     if (sizeof(GLintptr) != sizeof(jlong) && (offset < LONG_MIN || offset > LONG_MAX)) {
3003         jniThrowException(_env, "java/lang/IllegalArgumentException", "offset too large");
3004         return;
3005     }
3006     glBindVertexBuffer(
3007         (GLuint)bindingindex,
3008         (GLuint)buffer,
3009         (GLintptr)offset,
3010         (GLsizei)stride
3011     );
3012 }
3013 /* void glVertexAttribFormat ( GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset ) */
3014 static void
android_glVertexAttribFormat__IIIZI(JNIEnv * _env,jobject _this,jint attribindex,jint size,jint type,jboolean normalized,jint relativeoffset)3015 android_glVertexAttribFormat__IIIZI
3016   (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jboolean normalized, jint relativeoffset) {
3017     glVertexAttribFormat(
3018         (GLuint)attribindex,
3019         (GLint)size,
3020         (GLenum)type,
3021         (GLboolean)normalized,
3022         (GLuint)relativeoffset
3023     );
3024 }
3025 
3026 /* void glVertexAttribIFormat ( GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset ) */
3027 static void
android_glVertexAttribIFormat__IIII(JNIEnv * _env,jobject _this,jint attribindex,jint size,jint type,jint relativeoffset)3028 android_glVertexAttribIFormat__IIII
3029   (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jint relativeoffset) {
3030     glVertexAttribIFormat(
3031         (GLuint)attribindex,
3032         (GLint)size,
3033         (GLenum)type,
3034         (GLuint)relativeoffset
3035     );
3036 }
3037 
3038 /* void glVertexAttribBinding ( GLuint attribindex, GLuint bindingindex ) */
3039 static void
android_glVertexAttribBinding__II(JNIEnv * _env,jobject _this,jint attribindex,jint bindingindex)3040 android_glVertexAttribBinding__II
3041   (JNIEnv *_env, jobject _this, jint attribindex, jint bindingindex) {
3042     glVertexAttribBinding(
3043         (GLuint)attribindex,
3044         (GLuint)bindingindex
3045     );
3046 }
3047 
3048 /* void glVertexBindingDivisor ( GLuint bindingindex, GLuint divisor ) */
3049 static void
android_glVertexBindingDivisor__II(JNIEnv * _env,jobject _this,jint bindingindex,jint divisor)3050 android_glVertexBindingDivisor__II
3051   (JNIEnv *_env, jobject _this, jint bindingindex, jint divisor) {
3052     glVertexBindingDivisor(
3053         (GLuint)bindingindex,
3054         (GLuint)divisor
3055     );
3056 }
3057 
3058 static const char *classPathName = "android/opengl/GLES31";
3059 
3060 static JNINativeMethod methods[] = {
3061 {"_nativeClassInit", "()V", (void*)nativeClassInit },
3062 {"glDispatchCompute", "(III)V", (void *) android_glDispatchCompute__III },
3063 {"glDispatchComputeIndirect", "(J)V", (void *) android_glDispatchComputeIndirect },
3064 {"glDrawArraysIndirect", "(IJ)V", (void *) android_glDrawArraysIndirect },
3065 {"glDrawElementsIndirect", "(IIJ)V", (void *) android_glDrawElementsIndirect },
3066 {"glFramebufferParameteri", "(III)V", (void *) android_glFramebufferParameteri__III },
3067 {"glGetFramebufferParameteriv", "(II[II)V", (void *) android_glGetFramebufferParameteriv__II_3II },
3068 {"glGetFramebufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 },
3069 {"glGetProgramInterfaceiv", "(III[II)V", (void *) android_glGetProgramInterfaceiv__III_3II },
3070 {"glGetProgramInterfaceiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 },
3071 {"glGetProgramResourceIndex", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceIndex__IILjava_lang_String_2 },
3072 {"glGetProgramResourceName", "(III)Ljava/lang/String;", (void *) android_glGetProgramResourceName },
3073 {"glGetProgramResourceiv", "(IIII[III[II[II)V", (void *) android_glGetProgramResourceiv__IIII_3III_3II_3II },
3074 {"glGetProgramResourceiv", "(IIIILjava/nio/IntBuffer;ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
3075 {"glGetProgramResourceLocation", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceLocation__IILjava_lang_String_2 },
3076 {"glUseProgramStages", "(III)V", (void *) android_glUseProgramStages__III },
3077 {"glActiveShaderProgram", "(II)V", (void *) android_glActiveShaderProgram__II },
3078 {"glCreateShaderProgramv", "(I[Ljava/lang/String;)I", (void *) android_glCreateShaderProgramv },
3079 {"glBindProgramPipeline", "(I)V", (void *) android_glBindProgramPipeline__I },
3080 {"glDeleteProgramPipelines", "(I[II)V", (void *) android_glDeleteProgramPipelines__I_3II },
3081 {"glDeleteProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 },
3082 {"glGenProgramPipelines", "(I[II)V", (void *) android_glGenProgramPipelines__I_3II },
3083 {"glGenProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenProgramPipelines__ILjava_nio_IntBuffer_2 },
3084 {"glIsProgramPipeline", "(I)Z", (void *) android_glIsProgramPipeline__I },
3085 {"glGetProgramPipelineiv", "(II[II)V", (void *) android_glGetProgramPipelineiv__II_3II },
3086 {"glGetProgramPipelineiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 },
3087 {"glProgramUniform1i", "(III)V", (void *) android_glProgramUniform1i__III },
3088 {"glProgramUniform2i", "(IIII)V", (void *) android_glProgramUniform2i__IIII },
3089 {"glProgramUniform3i", "(IIIII)V", (void *) android_glProgramUniform3i__IIIII },
3090 {"glProgramUniform4i", "(IIIIII)V", (void *) android_glProgramUniform4i__IIIIII },
3091 {"glProgramUniform1ui", "(III)V", (void *) android_glProgramUniform1ui__III },
3092 {"glProgramUniform2ui", "(IIII)V", (void *) android_glProgramUniform2ui__IIII },
3093 {"glProgramUniform3ui", "(IIIII)V", (void *) android_glProgramUniform3ui__IIIII },
3094 {"glProgramUniform4ui", "(IIIIII)V", (void *) android_glProgramUniform4ui__IIIIII },
3095 {"glProgramUniform1f", "(IIF)V", (void *) android_glProgramUniform1f__IIF },
3096 {"glProgramUniform2f", "(IIFF)V", (void *) android_glProgramUniform2f__IIFF },
3097 {"glProgramUniform3f", "(IIFFF)V", (void *) android_glProgramUniform3f__IIFFF },
3098 {"glProgramUniform4f", "(IIFFFF)V", (void *) android_glProgramUniform4f__IIFFFF },
3099 {"glProgramUniform1iv", "(III[II)V", (void *) android_glProgramUniform1iv__III_3II },
3100 {"glProgramUniform1iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 },
3101 {"glProgramUniform2iv", "(III[II)V", (void *) android_glProgramUniform2iv__III_3II },
3102 {"glProgramUniform2iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 },
3103 {"glProgramUniform3iv", "(III[II)V", (void *) android_glProgramUniform3iv__III_3II },
3104 {"glProgramUniform3iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 },
3105 {"glProgramUniform4iv", "(III[II)V", (void *) android_glProgramUniform4iv__III_3II },
3106 {"glProgramUniform4iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 },
3107 {"glProgramUniform1uiv", "(III[II)V", (void *) android_glProgramUniform1uiv__III_3II },
3108 {"glProgramUniform1uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 },
3109 {"glProgramUniform2uiv", "(III[II)V", (void *) android_glProgramUniform2uiv__III_3II },
3110 {"glProgramUniform2uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 },
3111 {"glProgramUniform3uiv", "(III[II)V", (void *) android_glProgramUniform3uiv__III_3II },
3112 {"glProgramUniform3uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 },
3113 {"glProgramUniform4uiv", "(III[II)V", (void *) android_glProgramUniform4uiv__III_3II },
3114 {"glProgramUniform4uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 },
3115 {"glProgramUniform1fv", "(III[FI)V", (void *) android_glProgramUniform1fv__III_3FI },
3116 {"glProgramUniform1fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 },
3117 {"glProgramUniform2fv", "(III[FI)V", (void *) android_glProgramUniform2fv__III_3FI },
3118 {"glProgramUniform2fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 },
3119 {"glProgramUniform3fv", "(III[FI)V", (void *) android_glProgramUniform3fv__III_3FI },
3120 {"glProgramUniform3fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 },
3121 {"glProgramUniform4fv", "(III[FI)V", (void *) android_glProgramUniform4fv__III_3FI },
3122 {"glProgramUniform4fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 },
3123 {"glProgramUniformMatrix2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2fv__IIIZ_3FI },
3124 {"glProgramUniformMatrix2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 },
3125 {"glProgramUniformMatrix3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3fv__IIIZ_3FI },
3126 {"glProgramUniformMatrix3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 },
3127 {"glProgramUniformMatrix4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4fv__IIIZ_3FI },
3128 {"glProgramUniformMatrix4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 },
3129 {"glProgramUniformMatrix2x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZ_3FI },
3130 {"glProgramUniformMatrix2x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 },
3131 {"glProgramUniformMatrix3x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZ_3FI },
3132 {"glProgramUniformMatrix3x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 },
3133 {"glProgramUniformMatrix2x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZ_3FI },
3134 {"glProgramUniformMatrix2x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 },
3135 {"glProgramUniformMatrix4x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZ_3FI },
3136 {"glProgramUniformMatrix4x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 },
3137 {"glProgramUniformMatrix3x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZ_3FI },
3138 {"glProgramUniformMatrix3x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 },
3139 {"glProgramUniformMatrix4x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZ_3FI },
3140 {"glProgramUniformMatrix4x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 },
3141 {"glValidateProgramPipeline", "(I)V", (void *) android_glValidateProgramPipeline__I },
3142 {"glGetProgramPipelineInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramPipelineInfoLog },
3143 {"glBindImageTexture", "(IIIZIII)V", (void *) android_glBindImageTexture__IIIZIII },
3144 {"glGetBooleani_v", "(II[ZI)V", (void *) android_glGetBooleani_v__II_3ZI },
3145 {"glGetBooleani_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBooleani_v__IILjava_nio_IntBuffer_2 },
3146 {"glMemoryBarrier", "(I)V", (void *) android_glMemoryBarrier__I },
3147 {"glMemoryBarrierByRegion", "(I)V", (void *) android_glMemoryBarrierByRegion__I },
3148 {"glTexStorage2DMultisample", "(IIIIIZ)V", (void *) android_glTexStorage2DMultisample__IIIIIZ },
3149 {"glGetMultisamplefv", "(II[FI)V", (void *) android_glGetMultisamplefv__II_3FI },
3150 {"glGetMultisamplefv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 },
3151 {"glSampleMaski", "(II)V", (void *) android_glSampleMaski__II },
3152 {"glGetTexLevelParameteriv", "(III[II)V", (void *) android_glGetTexLevelParameteriv__III_3II },
3153 {"glGetTexLevelParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 },
3154 {"glGetTexLevelParameterfv", "(III[FI)V", (void *) android_glGetTexLevelParameterfv__III_3FI },
3155 {"glGetTexLevelParameterfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 },
3156 {"glBindVertexBuffer", "(IIJI)V", (void *) android_glBindVertexBuffer__IIJI },
3157 {"glVertexAttribFormat", "(IIIZI)V", (void *) android_glVertexAttribFormat__IIIZI },
3158 {"glVertexAttribIFormat", "(IIII)V", (void *) android_glVertexAttribIFormat__IIII },
3159 {"glVertexAttribBinding", "(II)V", (void *) android_glVertexAttribBinding__II },
3160 {"glVertexBindingDivisor", "(II)V", (void *) android_glVertexBindingDivisor__II },
3161 };
3162 
register_android_opengl_jni_GLES31(JNIEnv * _env)3163 int register_android_opengl_jni_GLES31(JNIEnv *_env)
3164 {
3165     int err;
3166     err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
3167     return err;
3168 }
3169