xref: /aosp_15_r20/frameworks/base/core/jni/android_opengl_GLES31Ext.cpp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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 #pragma GCC diagnostic ignored "-Wunused-variable"
20 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
21 #pragma GCC diagnostic ignored "-Wunused-function"
22 
23 #include <GLES3/gl31.h>
24 #include <GLES2/gl2ext.h>
25 
26 #include <jni.h>
27 #include <nativehelper/JNIPlatformHelp.h>
28 #include <android_runtime/AndroidRuntime.h>
29 #include <utils/misc.h>
30 #include <assert.h>
31 
32 
33 /* special calls implemented in Android's GLES wrapper used to more
34  * efficiently bound-check passed arrays */
35 extern "C" {
36 #ifdef GL_VERSION_ES_CM_1_1
37 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
38         const GLvoid *ptr, GLsizei count);
39 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
40         const GLvoid *pointer, GLsizei count);
41 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
42         GLsizei stride, const GLvoid *pointer, GLsizei count);
43 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
44         GLsizei stride, const GLvoid *pointer, GLsizei count);
45 GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
46         GLsizei stride, const GLvoid *pointer, GLsizei count);
47 GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
48         GLsizei stride, const GLvoid *pointer, GLsizei count);
49 GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
50         GLsizei stride, const GLvoid *pointer, GLsizei count);
51 #endif
52 #ifdef GL_ES_VERSION_2_0
glVertexAttribPointerBounds(GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer,GLsizei count)53 static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
54         GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
55     glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
56 }
57 #endif
58 #ifdef GL_ES_VERSION_3_0
glVertexAttribIPointerBounds(GLuint indx,GLint size,GLenum type,GLsizei stride,const GLvoid * pointer,GLsizei count)59 static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
60         GLsizei stride, const GLvoid *pointer, GLsizei count) {
61     glVertexAttribIPointer(indx, size, type, stride, pointer);
62 }
63 #endif
64 }
65 
66 static void
nativeClassInit(JNIEnv * _env,jclass glImplClass)67 nativeClassInit(JNIEnv *_env, jclass glImplClass)
68 {
69 }
70 
71 static void *
getPointer(JNIEnv * _env,jobject buffer,jarray * array,jint * remaining,jint * offset)72 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
73 {
74     jint position;
75     jint limit;
76     jint elementSizeShift;
77     jlong pointer;
78 
79     pointer = jniGetNioBufferFields(_env, buffer, &position, &limit, &elementSizeShift);
80     *remaining = (limit - position) << elementSizeShift;
81     if (pointer != 0L) {
82         *array = nullptr;
83         pointer += position << elementSizeShift;
84         return reinterpret_cast<void*>(pointer);
85     }
86 
87     *array = jniGetNioBufferBaseArray(_env, buffer);
88     *offset = jniGetNioBufferBaseArrayOffset(_env, buffer);
89     return nullptr;
90 }
91 
92 class ByteArrayGetter {
93 public:
Get(JNIEnv * _env,jbyteArray array,jboolean * is_copy)94     static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
95         return _env->GetByteArrayElements(array, is_copy);
96     }
97 };
98 class BooleanArrayGetter {
99 public:
Get(JNIEnv * _env,jbooleanArray array,jboolean * is_copy)100     static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
101         return _env->GetBooleanArrayElements(array, is_copy);
102     }
103 };
104 class CharArrayGetter {
105 public:
Get(JNIEnv * _env,jcharArray array,jboolean * is_copy)106     static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
107         return _env->GetCharArrayElements(array, is_copy);
108     }
109 };
110 class ShortArrayGetter {
111 public:
Get(JNIEnv * _env,jshortArray array,jboolean * is_copy)112     static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
113         return _env->GetShortArrayElements(array, is_copy);
114     }
115 };
116 class IntArrayGetter {
117 public:
Get(JNIEnv * _env,jintArray array,jboolean * is_copy)118     static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
119         return _env->GetIntArrayElements(array, is_copy);
120     }
121 };
122 class LongArrayGetter {
123 public:
Get(JNIEnv * _env,jlongArray array,jboolean * is_copy)124     static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
125         return _env->GetLongArrayElements(array, is_copy);
126     }
127 };
128 class FloatArrayGetter {
129 public:
Get(JNIEnv * _env,jfloatArray array,jboolean * is_copy)130     static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
131         return _env->GetFloatArrayElements(array, is_copy);
132     }
133 };
134 class DoubleArrayGetter {
135 public:
Get(JNIEnv * _env,jdoubleArray array,jboolean * is_copy)136     static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
137         return _env->GetDoubleArrayElements(array, is_copy);
138     }
139 };
140 
141 template<typename JTYPEARRAY, typename ARRAYGETTER>
142 static void*
getArrayPointer(JNIEnv * _env,JTYPEARRAY array,jboolean * is_copy)143 getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
144     return ARRAYGETTER::Get(_env, array, is_copy);
145 }
146 
147 class ByteArrayReleaser {
148 public:
Release(JNIEnv * _env,jbyteArray array,jbyte * data,jboolean commit)149     static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
150         _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
151     }
152 };
153 class BooleanArrayReleaser {
154 public:
Release(JNIEnv * _env,jbooleanArray array,jboolean * data,jboolean commit)155     static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
156         _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
157     }
158 };
159 class CharArrayReleaser {
160 public:
Release(JNIEnv * _env,jcharArray array,jchar * data,jboolean commit)161     static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
162         _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
163     }
164 };
165 class ShortArrayReleaser {
166 public:
Release(JNIEnv * _env,jshortArray array,jshort * data,jboolean commit)167     static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
168         _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
169     }
170 };
171 class IntArrayReleaser {
172 public:
Release(JNIEnv * _env,jintArray array,jint * data,jboolean commit)173     static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
174         _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
175     }
176 };
177 class LongArrayReleaser {
178 public:
Release(JNIEnv * _env,jlongArray array,jlong * data,jboolean commit)179     static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
180         _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
181     }
182 };
183 class FloatArrayReleaser {
184 public:
Release(JNIEnv * _env,jfloatArray array,jfloat * data,jboolean commit)185     static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
186         _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
187     }
188 };
189 class DoubleArrayReleaser {
190 public:
Release(JNIEnv * _env,jdoubleArray array,jdouble * data,jboolean commit)191     static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
192         _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
193     }
194 };
195 
196 template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
197 static void
releaseArrayPointer(JNIEnv * _env,JTYPEARRAY array,NTYPEARRAY data,jboolean commit)198 releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
199     ARRAYRELEASER::Release(_env, array, data, commit);
200 }
201 
202 static void
releasePointer(JNIEnv * _env,jarray array,void * data,jboolean commit)203 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
204 {
205     _env->ReleasePrimitiveArrayCritical(array, data,
206                        commit ? 0 : JNI_ABORT);
207 }
208 
209 static void *
getDirectBufferPointer(JNIEnv * _env,jobject buffer)210 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
211     jint position;
212     jint limit;
213     jint elementSizeShift;
214     jlong pointer;
215     pointer = jniGetNioBufferFields(_env, buffer, &position, &limit, &elementSizeShift);
216     if (pointer == 0) {
217         jniThrowException(_env, "java/lang/IllegalArgumentException",
218                           "Must use a native order direct Buffer");
219         return nullptr;
220     }
221     pointer += position << elementSizeShift;
222     return reinterpret_cast<void*>(pointer);
223 }
224 
225 // --------------------------------------------------------------------------
226 
227 /*
228  * returns the number of values glGet returns for a given pname.
229  *
230  * The code below is written such that pnames requiring only one values
231  * are the default (and are not explicitely tested for). This makes the
232  * checking code much shorter/readable/efficient.
233  *
234  * This means that unknown pnames (e.g.: extensions) will default to 1. If
235  * that unknown pname needs more than 1 value, then the validation check
236  * is incomplete and the app may crash if it passed the wrong number params.
237  */
getNeededCount(GLint pname)238 static int getNeededCount(GLint pname) {
239     int needed = 1;
240 #ifdef GL_ES_VERSION_3_0
241     // GLES 3.x pnames
242     switch (pname) {
243         case GL_MAX_VIEWPORT_DIMS:
244             needed = 2;
245             break;
246 
247         case GL_PROGRAM_BINARY_FORMATS:
248             glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed);
249             break;
250     }
251 #endif
252 
253 #ifdef GL_ES_VERSION_2_0
254     // GLES 2.x pnames
255     switch (pname) {
256         case GL_ALIASED_LINE_WIDTH_RANGE:
257         case GL_ALIASED_POINT_SIZE_RANGE:
258             needed = 2;
259             break;
260 
261         case GL_BLEND_COLOR:
262         case GL_COLOR_CLEAR_VALUE:
263         case GL_COLOR_WRITEMASK:
264         case GL_SCISSOR_BOX:
265         case GL_VIEWPORT:
266             needed = 4;
267             break;
268 
269         case GL_COMPRESSED_TEXTURE_FORMATS:
270             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
271             break;
272 
273         case GL_SHADER_BINARY_FORMATS:
274             glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
275             break;
276     }
277 #endif
278 
279 #ifdef GL_VERSION_ES_CM_1_1
280     // GLES 1.x pnames
281     switch (pname) {
282         case GL_ALIASED_LINE_WIDTH_RANGE:
283         case GL_ALIASED_POINT_SIZE_RANGE:
284         case GL_DEPTH_RANGE:
285         case GL_SMOOTH_LINE_WIDTH_RANGE:
286         case GL_SMOOTH_POINT_SIZE_RANGE:
287             needed = 2;
288             break;
289 
290         case GL_CURRENT_NORMAL:
291         case GL_POINT_DISTANCE_ATTENUATION:
292             needed = 3;
293             break;
294 
295         case GL_COLOR_CLEAR_VALUE:
296         case GL_COLOR_WRITEMASK:
297         case GL_CURRENT_COLOR:
298         case GL_CURRENT_TEXTURE_COORDS:
299         case GL_FOG_COLOR:
300         case GL_LIGHT_MODEL_AMBIENT:
301         case GL_SCISSOR_BOX:
302         case GL_VIEWPORT:
303             needed = 4;
304             break;
305 
306         case GL_MODELVIEW_MATRIX:
307         case GL_PROJECTION_MATRIX:
308         case GL_TEXTURE_MATRIX:
309             needed = 16;
310             break;
311 
312         case GL_COMPRESSED_TEXTURE_FORMATS:
313             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
314             break;
315     }
316 #endif
317     return needed;
318 }
319 
320 template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
321           typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
322 static void
get(JNIEnv * _env,jobject _this,jint pname,JTYPEARRAY params_ref,jint offset)323 get
324   (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
325     jint _exception = 0;
326     const char * _exceptionType;
327     const char * _exceptionMessage;
328     CTYPE *params_base = (CTYPE *) 0;
329     jint _remaining;
330     CTYPE *params = (CTYPE *) 0;
331     int _needed = 0;
332 
333     if (!params_ref) {
334         _exception = 1;
335         _exceptionType = "java/lang/IllegalArgumentException";
336         _exceptionMessage = "params == null";
337         goto exit;
338     }
339     if (offset < 0) {
340         _exception = 1;
341         _exceptionType = "java/lang/IllegalArgumentException";
342         _exceptionMessage = "offset < 0";
343         goto exit;
344     }
345     _remaining = _env->GetArrayLength(params_ref) - offset;
346     _needed = getNeededCount(pname);
347     // if we didn't find this pname, we just assume the user passed
348     // an array of the right size -- this might happen with extensions
349     // or if we forget an enum here.
350     if (_remaining < _needed) {
351         _exception = 1;
352         _exceptionType = "java/lang/IllegalArgumentException";
353         _exceptionMessage = "length - offset < needed";
354         goto exit;
355     }
356     params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
357         _env, params_ref, (jboolean *)0);
358     params = params_base + offset;
359 
360     GET(
361         (GLenum)pname,
362         (CTYPE *)params
363     );
364 
365 exit:
366     if (params_base) {
367         releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
368             _env, params_ref, params_base, !_exception);
369     }
370     if (_exception) {
371         jniThrowException(_env, _exceptionType, _exceptionMessage);
372     }
373 }
374 
375 
376 template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
377           typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
378 static void
getarray(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)379 getarray
380   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
381     jint _exception = 0;
382     const char * _exceptionType;
383     const char * _exceptionMessage;
384     JTYPEARRAY _array = (JTYPEARRAY) 0;
385     jint _bufferOffset = (jint) 0;
386     jint _remaining;
387     CTYPE *params = (CTYPE *) 0;
388     int _needed = 0;
389 
390     params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
391     _remaining /= sizeof(CTYPE);    // convert from bytes to item count
392     _needed = getNeededCount(pname);
393     // if we didn't find this pname, we just assume the user passed
394     // an array of the right size -- this might happen with extensions
395     // or if we forget an enum here.
396     if (_needed>0 && _remaining < _needed) {
397         _exception = 1;
398         _exceptionType = "java/lang/IllegalArgumentException";
399         _exceptionMessage = "remaining() < needed";
400         goto exit;
401     }
402     if (params == NULL) {
403         char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
404             _env, _array, (jboolean *) 0);
405         params = (CTYPE *) (_paramsBase + _bufferOffset);
406     }
407     GET(
408         (GLenum)pname,
409         (CTYPE *)params
410     );
411 
412 exit:
413     if (_array) {
414         releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
415             _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
416     }
417     if (_exception) {
418         jniThrowException(_env, _exceptionType, _exceptionMessage);
419     }
420 }
421 
422 // --------------------------------------------------------------------------
423 /* void glBlendBarrierKHR ( void ) */
424 static void
android_glBlendBarrierKHR__(JNIEnv * _env,jobject _this)425 android_glBlendBarrierKHR__
426   (JNIEnv *_env, jobject _this) {
427     glBlendBarrierKHR();
428 }
429 
430 /* void glDebugMessageControlKHR ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */
431 static void
android_glDebugMessageControlKHR__IIII_3IIZ(JNIEnv * _env,jobject _this,jint source,jint type,jint severity,jint count,jintArray ids_ref,jint offset,jboolean enabled)432 android_glDebugMessageControlKHR__IIII_3IIZ
433   (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jintArray ids_ref, jint offset, jboolean enabled) {
434     jint _exception = 0;
435     const char * _exceptionType = NULL;
436     const char * _exceptionMessage = NULL;
437     GLuint *ids_base = (GLuint *) 0;
438     jint _remaining;
439     GLuint *ids = (GLuint *) 0;
440 
441     if (!ids_ref) {
442         _exception = 1;
443         _exceptionType = "java/lang/IllegalArgumentException";
444         _exceptionMessage = "ids == null";
445         goto exit;
446     }
447     if (offset < 0) {
448         _exception = 1;
449         _exceptionType = "java/lang/IllegalArgumentException";
450         _exceptionMessage = "offset < 0";
451         goto exit;
452     }
453     _remaining = _env->GetArrayLength(ids_ref) - offset;
454     ids_base = (GLuint *)
455         _env->GetIntArrayElements(ids_ref, (jboolean *)0);
456     ids = ids_base + offset;
457 
458     glDebugMessageControlKHR(
459         (GLenum)source,
460         (GLenum)type,
461         (GLenum)severity,
462         (GLsizei)count,
463         (GLuint *)ids,
464         (GLboolean)enabled
465     );
466 
467 exit:
468     if (ids_base) {
469         _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base,
470             JNI_ABORT);
471     }
472     if (_exception) {
473         jniThrowException(_env, _exceptionType, _exceptionMessage);
474     }
475 }
476 
477 /* void glDebugMessageControlKHR ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */
478 static void
android_glDebugMessageControlKHR__IIIILjava_nio_IntBuffer_2Z(JNIEnv * _env,jobject _this,jint source,jint type,jint severity,jint count,jobject ids_buf,jboolean enabled)479 android_glDebugMessageControlKHR__IIIILjava_nio_IntBuffer_2Z
480   (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jobject ids_buf, jboolean enabled) {
481     jint _exception = 0;
482     const char * _exceptionType = NULL;
483     const char * _exceptionMessage = NULL;
484     jintArray _array = (jintArray) 0;
485     jint _bufferOffset = (jint) 0;
486     jint _remaining;
487     GLuint *ids = (GLuint *) 0;
488 
489     if (!ids_buf) {
490         _exception = 1;
491         _exceptionType = "java/lang/IllegalArgumentException";
492         _exceptionMessage = "ids == null";
493         goto exit;
494     }
495     ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
496     if (ids == NULL) {
497         char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
498         ids = (GLuint *) (_idsBase + _bufferOffset);
499     }
500     glDebugMessageControlKHR(
501         (GLenum)source,
502         (GLenum)type,
503         (GLenum)severity,
504         (GLsizei)count,
505         (GLuint *)ids,
506         (GLboolean)enabled
507     );
508 
509 exit:
510     if (_array) {
511         _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT);
512     }
513     if (_exception) {
514         jniThrowException(_env, _exceptionType, _exceptionMessage);
515     }
516 }
517 
518 /* void glDebugMessageInsertKHR ( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf ) */
519 static void
android_glDebugMessageInsertKHR__IIIILjava_lang_String_2(JNIEnv * _env,jobject _this,jint source,jint type,jint id,jint severity,jstring buf)520 android_glDebugMessageInsertKHR__IIIILjava_lang_String_2
521   (JNIEnv *_env, jobject _this, jint source, jint type, jint id, jint severity, jstring buf) {
522     jint _exception = 0;
523     const char * _exceptionType = NULL;
524     const char * _exceptionMessage = NULL;
525     const char* _nativebuf = 0;
526     jint _length = 0;
527 
528     if (!buf) {
529         _exception = 1;
530         _exceptionType = "java/lang/IllegalArgumentException";
531         _exceptionMessage = "buf == null";
532         goto exit;
533     }
534     _nativebuf = _env->GetStringUTFChars(buf, 0);
535     _length = _env->GetStringUTFLength(buf);
536 
537     glDebugMessageInsertKHR(
538         (GLenum)source,
539         (GLenum)type,
540         (GLuint)id,
541         (GLenum)severity,
542         (GLsizei)_length,
543         (GLchar *)_nativebuf
544     );
545 
546 exit:
547     if (_nativebuf) {
548         _env->ReleaseStringUTFChars(buf, _nativebuf);
549     }
550 
551     if (_exception) {
552         jniThrowException(_env, _exceptionType, _exceptionMessage);
553     }
554 }
555 
556 /* void glDebugMessageCallbackKHR ( GLDEBUGPROCKHR callback, const void *userParam ) */
557 static void
android_glDebugMessageCallbackKHR(JNIEnv * _env,jobject _this,jobject callback)558 android_glDebugMessageCallbackKHR(JNIEnv *_env, jobject _this, jobject callback) {
559     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
560 }
561 /* GLuint glGetDebugMessageLogKHR ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
562 static jint
android_glGetDebugMessageLogKHR__II_3II_3II_3II_3II_3II_3BI(JNIEnv * _env,jobject _this,jint count,jint bufSize,jintArray sources_ref,jint sourcesOffset,jintArray types_ref,jint typesOffset,jintArray ids_ref,jint idsOffset,jintArray severities_ref,jint severitiesOffset,jintArray lengths_ref,jint lengthsOffset,jbyteArray messageLog_ref,jint messageLogOffset)563 android_glGetDebugMessageLogKHR__II_3II_3II_3II_3II_3II_3BI
564   (JNIEnv *_env, jobject _this, jint count, jint bufSize, jintArray sources_ref, jint sourcesOffset, jintArray types_ref, jint typesOffset, jintArray ids_ref, jint idsOffset, jintArray severities_ref, jint severitiesOffset, jintArray lengths_ref, jint lengthsOffset, jbyteArray messageLog_ref, jint messageLogOffset) {
565     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
566     return 0;
567 }
568 
569 /* GLuint glGetDebugMessageLogKHR ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
570 static uint
android_glGetDebugMessageLogKHR__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2(JNIEnv * _env,jobject _this,jint count,jobject sources_ref,jobject types_ref,jobject ids_ref,jobject severities_ref,jobject lengths_ref,jobject messageLog_ref)571 android_glGetDebugMessageLogKHR__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2
572   (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref, jobject lengths_ref, jobject messageLog_ref) {
573     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
574     return 0;
575 }
576 
577 /* GLuint glGetDebugMessageLogKHR ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
578 static jobjectArray
android_glGetDebugMessageLogKHR__I_3II_3II_3II_3II(JNIEnv * _env,jobject _this,jint count,jintArray sources_ref,jint sourcesOffset,jintArray types_ref,jint typesOffset,jintArray ids_ref,jint idsOffset,jintArray severities_ref,jint severitiesOffset)579 android_glGetDebugMessageLogKHR__I_3II_3II_3II_3II
580   (JNIEnv *_env, jobject _this, jint count, jintArray sources_ref, jint sourcesOffset, jintArray types_ref, jint typesOffset, jintArray ids_ref, jint idsOffset, jintArray severities_ref, jint severitiesOffset) {
581     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
582     return 0;
583 }
584 
585 /* GLuint glGetDebugMessageLogKHR ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
586 static jobjectArray
android_glGetDebugMessageLogKHR__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint count,jobject sources_ref,jobject types_ref,jobject ids_ref,jobject severities_ref)587 android_glGetDebugMessageLogKHR__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
588   (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref) {
589     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
590     return 0;
591 }
592 /* void glPushDebugGroupKHR ( GLenum source, GLuint id, GLsizei length, const GLchar *message ) */
593 static void
android_glPushDebugGroupKHR__IIILjava_lang_String_2(JNIEnv * _env,jobject _this,jint source,jint id,jint length,jstring message)594 android_glPushDebugGroupKHR__IIILjava_lang_String_2
595   (JNIEnv *_env, jobject _this, jint source, jint id, jint length, jstring message) {
596     jint _exception = 0;
597     const char * _exceptionType = NULL;
598     const char * _exceptionMessage = NULL;
599     const char* _nativemessage = 0;
600 
601     if (!message) {
602         _exception = 1;
603         _exceptionType = "java/lang/IllegalArgumentException";
604         _exceptionMessage = "message == null";
605         goto exit;
606     }
607     _nativemessage = _env->GetStringUTFChars(message, 0);
608 
609     glPushDebugGroupKHR(
610         (GLenum)source,
611         (GLuint)id,
612         (GLsizei)length,
613         (GLchar *)_nativemessage
614     );
615 
616 exit:
617     if (_nativemessage) {
618         _env->ReleaseStringUTFChars(message, _nativemessage);
619     }
620 
621     if (_exception) {
622         jniThrowException(_env, _exceptionType, _exceptionMessage);
623     }
624 }
625 
626 /* void glPopDebugGroupKHR ( void ) */
627 static void
android_glPopDebugGroupKHR__(JNIEnv * _env,jobject _this)628 android_glPopDebugGroupKHR__
629   (JNIEnv *_env, jobject _this) {
630     glPopDebugGroupKHR();
631 }
632 
633 /* void glObjectLabelKHR ( GLenum identifier, GLuint name, GLsizei length, const GLchar *label ) */
634 static void
android_glObjectLabelKHR__IIILjava_lang_String_2(JNIEnv * _env,jobject _this,jint identifier,jint name,jint length,jstring label)635 android_glObjectLabelKHR__IIILjava_lang_String_2
636   (JNIEnv *_env, jobject _this, jint identifier, jint name, jint length, jstring label) {
637     jint _exception = 0;
638     const char * _exceptionType = NULL;
639     const char * _exceptionMessage = NULL;
640     const char* _nativelabel = 0;
641 
642     if (label) {
643         _nativelabel = _env->GetStringUTFChars(label, 0);
644     }
645 
646     glObjectLabelKHR(
647         (GLenum)identifier,
648         (GLuint)name,
649         (GLsizei)length,
650         (GLchar *)_nativelabel
651     );
652     if (_nativelabel) {
653         _env->ReleaseStringUTFChars(label, _nativelabel);
654     }
655 
656     if (_exception) {
657         jniThrowException(_env, _exceptionType, _exceptionMessage);
658     }
659 }
660 
661 /* void glGetObjectLabelKHR ( GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label ) */
662 static jstring
android_glGetObjectLabelKHR(JNIEnv * _env,jobject _this,jint identifier,jint name)663 android_glGetObjectLabelKHR(JNIEnv *_env, jobject _this, jint identifier, jint name) {
664     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
665     return NULL;
666 }
667 
668 /* void glObjectPtrLabelKHR ( const void *ptr, GLsizei length, const GLchar *label ) */
669 static void
android_glObjectPtrLabelKHR(JNIEnv * _env,jobject _this,jlong ptr,jstring label)670 android_glObjectPtrLabelKHR(JNIEnv *_env, jobject _this, jlong ptr, jstring label) {
671     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
672 }
673 
674 /* void glGetObjectPtrLabelKHR ( const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label ) */
675 static jstring
android_glGetObjectPtrLabelKHR(JNIEnv * _env,jobject _this,jlong ptr)676 android_glGetObjectPtrLabelKHR(JNIEnv *_env, jobject _this, jlong ptr) {
677     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
678     return NULL;
679 }
680 
681 /* void glGetPointervKHR ( GLenum pname, void **params ) */
682 static jobject
android_glGetDebugMessageCallbackKHR(JNIEnv * _env,jobject _this)683 android_glGetDebugMessageCallbackKHR(JNIEnv *_env, jobject _this) {
684     jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
685     return NULL;
686 }
687 
688 /* void glMinSampleShadingOES ( GLfloat value ) */
689 static void
android_glMinSampleShadingOES__F(JNIEnv * _env,jobject _this,jfloat value)690 android_glMinSampleShadingOES__F
691   (JNIEnv *_env, jobject _this, jfloat value) {
692     glMinSampleShadingOES(
693         (GLfloat)value
694     );
695 }
696 
697 /* void glTexStorage3DMultisampleOES ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations ) */
698 static void
android_glTexStorage3DMultisampleOES__IIIIIIZ(JNIEnv * _env,jobject _this,jint target,jint samples,jint internalformat,jint width,jint height,jint depth,jboolean fixedsamplelocations)699 android_glTexStorage3DMultisampleOES__IIIIIIZ
700   (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jint depth, jboolean fixedsamplelocations) {
701     glTexStorage3DMultisampleOES(
702         (GLenum)target,
703         (GLsizei)samples,
704         (GLenum)internalformat,
705         (GLsizei)width,
706         (GLsizei)height,
707         (GLsizei)depth,
708         (GLboolean)fixedsamplelocations
709     );
710 }
711 
712 /* void glCopyImageSubDataEXT ( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth ) */
713 static void
android_glCopyImageSubDataEXT__IIIIIIIIIIIIIII(JNIEnv * _env,jobject _this,jint srcName,jint srcTarget,jint srcLevel,jint srcX,jint srcY,jint srcZ,jint dstName,jint dstTarget,jint dstLevel,jint dstX,jint dstY,jint dstZ,jint srcWidth,jint srcHeight,jint srcDepth)714 android_glCopyImageSubDataEXT__IIIIIIIIIIIIIII
715   (JNIEnv *_env, jobject _this, jint srcName, jint srcTarget, jint srcLevel, jint srcX, jint srcY, jint srcZ, jint dstName, jint dstTarget, jint dstLevel, jint dstX, jint dstY, jint dstZ, jint srcWidth, jint srcHeight, jint srcDepth) {
716     glCopyImageSubDataEXT(
717         (GLuint)srcName,
718         (GLenum)srcTarget,
719         (GLint)srcLevel,
720         (GLint)srcX,
721         (GLint)srcY,
722         (GLint)srcZ,
723         (GLuint)dstName,
724         (GLenum)dstTarget,
725         (GLint)dstLevel,
726         (GLint)dstX,
727         (GLint)dstY,
728         (GLint)dstZ,
729         (GLsizei)srcWidth,
730         (GLsizei)srcHeight,
731         (GLsizei)srcDepth
732     );
733 }
734 
735 /* void glEnableiEXT ( GLenum target, GLuint index ) */
736 static void
android_glEnableiEXT__II(JNIEnv * _env,jobject _this,jint target,jint index)737 android_glEnableiEXT__II
738   (JNIEnv *_env, jobject _this, jint target, jint index) {
739     glEnableiEXT(
740         (GLenum)target,
741         (GLuint)index
742     );
743 }
744 
745 /* void glDisableiEXT ( GLenum target, GLuint index ) */
746 static void
android_glDisableiEXT__II(JNIEnv * _env,jobject _this,jint target,jint index)747 android_glDisableiEXT__II
748   (JNIEnv *_env, jobject _this, jint target, jint index) {
749     glDisableiEXT(
750         (GLenum)target,
751         (GLuint)index
752     );
753 }
754 
755 /* void glBlendEquationiEXT ( GLuint buf, GLenum mode ) */
756 static void
android_glBlendEquationiEXT__II(JNIEnv * _env,jobject _this,jint buf,jint mode)757 android_glBlendEquationiEXT__II
758   (JNIEnv *_env, jobject _this, jint buf, jint mode) {
759     glBlendEquationiEXT(
760         (GLuint)buf,
761         (GLenum)mode
762     );
763 }
764 
765 /* void glBlendEquationSeparateiEXT ( GLuint buf, GLenum modeRGB, GLenum modeAlpha ) */
766 static void
android_glBlendEquationSeparateiEXT__III(JNIEnv * _env,jobject _this,jint buf,jint modeRGB,jint modeAlpha)767 android_glBlendEquationSeparateiEXT__III
768   (JNIEnv *_env, jobject _this, jint buf, jint modeRGB, jint modeAlpha) {
769     glBlendEquationSeparateiEXT(
770         (GLuint)buf,
771         (GLenum)modeRGB,
772         (GLenum)modeAlpha
773     );
774 }
775 
776 /* void glBlendFunciEXT ( GLuint buf, GLenum src, GLenum dst ) */
777 static void
android_glBlendFunciEXT__III(JNIEnv * _env,jobject _this,jint buf,jint src,jint dst)778 android_glBlendFunciEXT__III
779   (JNIEnv *_env, jobject _this, jint buf, jint src, jint dst) {
780     glBlendFunciEXT(
781         (GLuint)buf,
782         (GLenum)src,
783         (GLenum)dst
784     );
785 }
786 
787 /* void glBlendFuncSeparateiEXT ( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */
788 static void
android_glBlendFuncSeparateiEXT__IIIII(JNIEnv * _env,jobject _this,jint buf,jint srcRGB,jint dstRGB,jint srcAlpha,jint dstAlpha)789 android_glBlendFuncSeparateiEXT__IIIII
790   (JNIEnv *_env, jobject _this, jint buf, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) {
791     glBlendFuncSeparateiEXT(
792         (GLuint)buf,
793         (GLenum)srcRGB,
794         (GLenum)dstRGB,
795         (GLenum)srcAlpha,
796         (GLenum)dstAlpha
797     );
798 }
799 
800 /* void glColorMaskiEXT ( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) */
801 static void
android_glColorMaskiEXT__IZZZZ(JNIEnv * _env,jobject _this,jint index,jboolean r,jboolean g,jboolean b,jboolean a)802 android_glColorMaskiEXT__IZZZZ
803   (JNIEnv *_env, jobject _this, jint index, jboolean r, jboolean g, jboolean b, jboolean a) {
804     glColorMaskiEXT(
805         (GLuint)index,
806         (GLboolean)r,
807         (GLboolean)g,
808         (GLboolean)b,
809         (GLboolean)a
810     );
811 }
812 
813 /* GLboolean glIsEnablediEXT ( GLenum target, GLuint index ) */
814 static jboolean
android_glIsEnablediEXT__II(JNIEnv * _env,jobject _this,jint target,jint index)815 android_glIsEnablediEXT__II
816   (JNIEnv *_env, jobject _this, jint target, jint index) {
817     GLboolean _returnValue;
818     _returnValue = glIsEnablediEXT(
819         (GLenum)target,
820         (GLuint)index
821     );
822     return (jboolean)_returnValue;
823 }
824 
825 /* void glFramebufferTextureEXT ( GLenum target, GLenum attachment, GLuint texture, GLint level ) */
826 static void
android_glFramebufferTextureEXT__IIII(JNIEnv * _env,jobject _this,jint target,jint attachment,jint texture,jint level)827 android_glFramebufferTextureEXT__IIII
828   (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level) {
829     glFramebufferTextureEXT(
830         (GLenum)target,
831         (GLenum)attachment,
832         (GLuint)texture,
833         (GLint)level
834     );
835 }
836 
837 /* void glPrimitiveBoundingBoxEXT ( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW ) */
838 static void
android_glPrimitiveBoundingBoxEXT__FFFFFFFF(JNIEnv * _env,jobject _this,jfloat minX,jfloat minY,jfloat minZ,jfloat minW,jfloat maxX,jfloat maxY,jfloat maxZ,jfloat maxW)839 android_glPrimitiveBoundingBoxEXT__FFFFFFFF
840   (JNIEnv *_env, jobject _this, jfloat minX, jfloat minY, jfloat minZ, jfloat minW, jfloat maxX, jfloat maxY, jfloat maxZ, jfloat maxW) {
841     glPrimitiveBoundingBoxEXT(
842         (GLfloat)minX,
843         (GLfloat)minY,
844         (GLfloat)minZ,
845         (GLfloat)minW,
846         (GLfloat)maxX,
847         (GLfloat)maxY,
848         (GLfloat)maxZ,
849         (GLfloat)maxW
850     );
851 }
852 
853 /* void glPatchParameteriEXT ( GLenum pname, GLint value ) */
854 static void
android_glPatchParameteriEXT__II(JNIEnv * _env,jobject _this,jint pname,jint value)855 android_glPatchParameteriEXT__II
856   (JNIEnv *_env, jobject _this, jint pname, jint value) {
857     glPatchParameteriEXT(
858         (GLenum)pname,
859         (GLint)value
860     );
861 }
862 
863 /* void glTexParameterIivEXT ( GLenum target, GLenum pname, const GLint *params ) */
864 static void
android_glTexParameterIivEXT__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)865 android_glTexParameterIivEXT__II_3II
866   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
867     jint _exception = 0;
868     const char * _exceptionType = NULL;
869     const char * _exceptionMessage = NULL;
870     GLint *params_base = (GLint *) 0;
871     jint _remaining;
872     GLint *params = (GLint *) 0;
873 
874     if (!params_ref) {
875         _exception = 1;
876         _exceptionType = "java/lang/IllegalArgumentException";
877         _exceptionMessage = "params == null";
878         goto exit;
879     }
880     if (offset < 0) {
881         _exception = 1;
882         _exceptionType = "java/lang/IllegalArgumentException";
883         _exceptionMessage = "offset < 0";
884         goto exit;
885     }
886     _remaining = _env->GetArrayLength(params_ref) - offset;
887     params_base = (GLint *)
888         _env->GetIntArrayElements(params_ref, (jboolean *)0);
889     params = params_base + offset;
890 
891     glTexParameterIivEXT(
892         (GLenum)target,
893         (GLenum)pname,
894         (GLint *)params
895     );
896 
897 exit:
898     if (params_base) {
899         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
900             JNI_ABORT);
901     }
902     if (_exception) {
903         jniThrowException(_env, _exceptionType, _exceptionMessage);
904     }
905 }
906 
907 /* void glTexParameterIivEXT ( GLenum target, GLenum pname, const GLint *params ) */
908 static void
android_glTexParameterIivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)909 android_glTexParameterIivEXT__IILjava_nio_IntBuffer_2
910   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
911     jint _exception = 0;
912     const char * _exceptionType = NULL;
913     const char * _exceptionMessage = NULL;
914     jintArray _array = (jintArray) 0;
915     jint _bufferOffset = (jint) 0;
916     jint _remaining;
917     GLint *params = (GLint *) 0;
918 
919     if (!params_buf) {
920         _exception = 1;
921         _exceptionType = "java/lang/IllegalArgumentException";
922         _exceptionMessage = "params == null";
923         goto exit;
924     }
925     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
926     if (params == NULL) {
927         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
928         params = (GLint *) (_paramsBase + _bufferOffset);
929     }
930     glTexParameterIivEXT(
931         (GLenum)target,
932         (GLenum)pname,
933         (GLint *)params
934     );
935 
936 exit:
937     if (_array) {
938         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
939     }
940     if (_exception) {
941         jniThrowException(_env, _exceptionType, _exceptionMessage);
942     }
943 }
944 
945 /* void glTexParameterIuivEXT ( GLenum target, GLenum pname, const GLuint *params ) */
946 static void
android_glTexParameterIuivEXT__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)947 android_glTexParameterIuivEXT__II_3II
948   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
949     jint _exception = 0;
950     const char * _exceptionType = NULL;
951     const char * _exceptionMessage = NULL;
952     GLuint *params_base = (GLuint *) 0;
953     jint _remaining;
954     GLuint *params = (GLuint *) 0;
955 
956     if (!params_ref) {
957         _exception = 1;
958         _exceptionType = "java/lang/IllegalArgumentException";
959         _exceptionMessage = "params == null";
960         goto exit;
961     }
962     if (offset < 0) {
963         _exception = 1;
964         _exceptionType = "java/lang/IllegalArgumentException";
965         _exceptionMessage = "offset < 0";
966         goto exit;
967     }
968     _remaining = _env->GetArrayLength(params_ref) - offset;
969     params_base = (GLuint *)
970         _env->GetIntArrayElements(params_ref, (jboolean *)0);
971     params = params_base + offset;
972 
973     glTexParameterIuivEXT(
974         (GLenum)target,
975         (GLenum)pname,
976         (GLuint *)params
977     );
978 
979 exit:
980     if (params_base) {
981         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
982             JNI_ABORT);
983     }
984     if (_exception) {
985         jniThrowException(_env, _exceptionType, _exceptionMessage);
986     }
987 }
988 
989 /* void glTexParameterIuivEXT ( GLenum target, GLenum pname, const GLuint *params ) */
990 static void
android_glTexParameterIuivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)991 android_glTexParameterIuivEXT__IILjava_nio_IntBuffer_2
992   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
993     jint _exception = 0;
994     const char * _exceptionType = NULL;
995     const char * _exceptionMessage = NULL;
996     jintArray _array = (jintArray) 0;
997     jint _bufferOffset = (jint) 0;
998     jint _remaining;
999     GLuint *params = (GLuint *) 0;
1000 
1001     if (!params_buf) {
1002         _exception = 1;
1003         _exceptionType = "java/lang/IllegalArgumentException";
1004         _exceptionMessage = "params == null";
1005         goto exit;
1006     }
1007     params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1008     if (params == NULL) {
1009         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1010         params = (GLuint *) (_paramsBase + _bufferOffset);
1011     }
1012     glTexParameterIuivEXT(
1013         (GLenum)target,
1014         (GLenum)pname,
1015         (GLuint *)params
1016     );
1017 
1018 exit:
1019     if (_array) {
1020         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
1021     }
1022     if (_exception) {
1023         jniThrowException(_env, _exceptionType, _exceptionMessage);
1024     }
1025 }
1026 
1027 /* void glGetTexParameterIivEXT ( GLenum target, GLenum pname, GLint *params ) */
1028 static void
android_glGetTexParameterIivEXT__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)1029 android_glGetTexParameterIivEXT__II_3II
1030   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
1031     jint _exception = 0;
1032     const char * _exceptionType = NULL;
1033     const char * _exceptionMessage = NULL;
1034     GLint *params_base = (GLint *) 0;
1035     jint _remaining;
1036     GLint *params = (GLint *) 0;
1037 
1038     if (!params_ref) {
1039         _exception = 1;
1040         _exceptionType = "java/lang/IllegalArgumentException";
1041         _exceptionMessage = "params == null";
1042         goto exit;
1043     }
1044     if (offset < 0) {
1045         _exception = 1;
1046         _exceptionType = "java/lang/IllegalArgumentException";
1047         _exceptionMessage = "offset < 0";
1048         goto exit;
1049     }
1050     _remaining = _env->GetArrayLength(params_ref) - offset;
1051     params_base = (GLint *)
1052         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1053     params = params_base + offset;
1054 
1055     glGetTexParameterIivEXT(
1056         (GLenum)target,
1057         (GLenum)pname,
1058         (GLint *)params
1059     );
1060 
1061 exit:
1062     if (params_base) {
1063         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1064             _exception ? JNI_ABORT: 0);
1065     }
1066     if (_exception) {
1067         jniThrowException(_env, _exceptionType, _exceptionMessage);
1068     }
1069 }
1070 
1071 /* void glGetTexParameterIivEXT ( GLenum target, GLenum pname, GLint *params ) */
1072 static void
android_glGetTexParameterIivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)1073 android_glGetTexParameterIivEXT__IILjava_nio_IntBuffer_2
1074   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
1075     jint _exception = 0;
1076     const char * _exceptionType = NULL;
1077     const char * _exceptionMessage = NULL;
1078     jintArray _array = (jintArray) 0;
1079     jint _bufferOffset = (jint) 0;
1080     jint _remaining;
1081     GLint *params = (GLint *) 0;
1082 
1083     if (!params_buf) {
1084         _exception = 1;
1085         _exceptionType = "java/lang/IllegalArgumentException";
1086         _exceptionMessage = "params == null";
1087         goto exit;
1088     }
1089     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1090     if (params == NULL) {
1091         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1092         params = (GLint *) (_paramsBase + _bufferOffset);
1093     }
1094     glGetTexParameterIivEXT(
1095         (GLenum)target,
1096         (GLenum)pname,
1097         (GLint *)params
1098     );
1099 
1100 exit:
1101     if (_array) {
1102         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1103     }
1104     if (_exception) {
1105         jniThrowException(_env, _exceptionType, _exceptionMessage);
1106     }
1107 }
1108 
1109 /* void glGetTexParameterIuivEXT ( GLenum target, GLenum pname, GLuint *params ) */
1110 static void
android_glGetTexParameterIuivEXT__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)1111 android_glGetTexParameterIuivEXT__II_3II
1112   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
1113     jint _exception = 0;
1114     const char * _exceptionType = NULL;
1115     const char * _exceptionMessage = NULL;
1116     GLuint *params_base = (GLuint *) 0;
1117     jint _remaining;
1118     GLuint *params = (GLuint *) 0;
1119 
1120     if (!params_ref) {
1121         _exception = 1;
1122         _exceptionType = "java/lang/IllegalArgumentException";
1123         _exceptionMessage = "params == null";
1124         goto exit;
1125     }
1126     if (offset < 0) {
1127         _exception = 1;
1128         _exceptionType = "java/lang/IllegalArgumentException";
1129         _exceptionMessage = "offset < 0";
1130         goto exit;
1131     }
1132     _remaining = _env->GetArrayLength(params_ref) - offset;
1133     params_base = (GLuint *)
1134         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1135     params = params_base + offset;
1136 
1137     glGetTexParameterIuivEXT(
1138         (GLenum)target,
1139         (GLenum)pname,
1140         (GLuint *)params
1141     );
1142 
1143 exit:
1144     if (params_base) {
1145         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1146             _exception ? JNI_ABORT: 0);
1147     }
1148     if (_exception) {
1149         jniThrowException(_env, _exceptionType, _exceptionMessage);
1150     }
1151 }
1152 
1153 /* void glGetTexParameterIuivEXT ( GLenum target, GLenum pname, GLuint *params ) */
1154 static void
android_glGetTexParameterIuivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)1155 android_glGetTexParameterIuivEXT__IILjava_nio_IntBuffer_2
1156   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
1157     jint _exception = 0;
1158     const char * _exceptionType = NULL;
1159     const char * _exceptionMessage = NULL;
1160     jintArray _array = (jintArray) 0;
1161     jint _bufferOffset = (jint) 0;
1162     jint _remaining;
1163     GLuint *params = (GLuint *) 0;
1164 
1165     if (!params_buf) {
1166         _exception = 1;
1167         _exceptionType = "java/lang/IllegalArgumentException";
1168         _exceptionMessage = "params == null";
1169         goto exit;
1170     }
1171     params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1172     if (params == NULL) {
1173         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1174         params = (GLuint *) (_paramsBase + _bufferOffset);
1175     }
1176     glGetTexParameterIuivEXT(
1177         (GLenum)target,
1178         (GLenum)pname,
1179         (GLuint *)params
1180     );
1181 
1182 exit:
1183     if (_array) {
1184         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1185     }
1186     if (_exception) {
1187         jniThrowException(_env, _exceptionType, _exceptionMessage);
1188     }
1189 }
1190 
1191 /* void glSamplerParameterIivEXT ( GLuint sampler, GLenum pname, const GLint *param ) */
1192 static void
android_glSamplerParameterIivEXT__II_3II(JNIEnv * _env,jobject _this,jint sampler,jint pname,jintArray param_ref,jint offset)1193 android_glSamplerParameterIivEXT__II_3II
1194   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) {
1195     jint _exception = 0;
1196     const char * _exceptionType = NULL;
1197     const char * _exceptionMessage = NULL;
1198     GLint *param_base = (GLint *) 0;
1199     jint _remaining;
1200     GLint *param = (GLint *) 0;
1201 
1202     if (!param_ref) {
1203         _exception = 1;
1204         _exceptionType = "java/lang/IllegalArgumentException";
1205         _exceptionMessage = "param == null";
1206         goto exit;
1207     }
1208     if (offset < 0) {
1209         _exception = 1;
1210         _exceptionType = "java/lang/IllegalArgumentException";
1211         _exceptionMessage = "offset < 0";
1212         goto exit;
1213     }
1214     _remaining = _env->GetArrayLength(param_ref) - offset;
1215     param_base = (GLint *)
1216         _env->GetIntArrayElements(param_ref, (jboolean *)0);
1217     param = param_base + offset;
1218 
1219     glSamplerParameterIivEXT(
1220         (GLuint)sampler,
1221         (GLenum)pname,
1222         (GLint *)param
1223     );
1224 
1225 exit:
1226     if (param_base) {
1227         _env->ReleaseIntArrayElements(param_ref, (jint*)param_base,
1228             JNI_ABORT);
1229     }
1230     if (_exception) {
1231         jniThrowException(_env, _exceptionType, _exceptionMessage);
1232     }
1233 }
1234 
1235 /* void glSamplerParameterIivEXT ( GLuint sampler, GLenum pname, const GLint *param ) */
1236 static void
android_glSamplerParameterIivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject param_buf)1237 android_glSamplerParameterIivEXT__IILjava_nio_IntBuffer_2
1238   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
1239     jint _exception = 0;
1240     const char * _exceptionType = NULL;
1241     const char * _exceptionMessage = NULL;
1242     jintArray _array = (jintArray) 0;
1243     jint _bufferOffset = (jint) 0;
1244     jint _remaining;
1245     GLint *param = (GLint *) 0;
1246 
1247     if (!param_buf) {
1248         _exception = 1;
1249         _exceptionType = "java/lang/IllegalArgumentException";
1250         _exceptionMessage = "param == null";
1251         goto exit;
1252     }
1253     param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1254     if (param == NULL) {
1255         char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1256         param = (GLint *) (_paramBase + _bufferOffset);
1257     }
1258     glSamplerParameterIivEXT(
1259         (GLuint)sampler,
1260         (GLenum)pname,
1261         (GLint *)param
1262     );
1263 
1264 exit:
1265     if (_array) {
1266         _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT);
1267     }
1268     if (_exception) {
1269         jniThrowException(_env, _exceptionType, _exceptionMessage);
1270     }
1271 }
1272 
1273 /* void glSamplerParameterIuivEXT ( GLuint sampler, GLenum pname, const GLuint *param ) */
1274 static void
android_glSamplerParameterIuivEXT__II_3II(JNIEnv * _env,jobject _this,jint sampler,jint pname,jintArray param_ref,jint offset)1275 android_glSamplerParameterIuivEXT__II_3II
1276   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) {
1277     jint _exception = 0;
1278     const char * _exceptionType = NULL;
1279     const char * _exceptionMessage = NULL;
1280     GLuint *param_base = (GLuint *) 0;
1281     jint _remaining;
1282     GLuint *param = (GLuint *) 0;
1283 
1284     if (!param_ref) {
1285         _exception = 1;
1286         _exceptionType = "java/lang/IllegalArgumentException";
1287         _exceptionMessage = "param == null";
1288         goto exit;
1289     }
1290     if (offset < 0) {
1291         _exception = 1;
1292         _exceptionType = "java/lang/IllegalArgumentException";
1293         _exceptionMessage = "offset < 0";
1294         goto exit;
1295     }
1296     _remaining = _env->GetArrayLength(param_ref) - offset;
1297     param_base = (GLuint *)
1298         _env->GetIntArrayElements(param_ref, (jboolean *)0);
1299     param = param_base + offset;
1300 
1301     glSamplerParameterIuivEXT(
1302         (GLuint)sampler,
1303         (GLenum)pname,
1304         (GLuint *)param
1305     );
1306 
1307 exit:
1308     if (param_base) {
1309         _env->ReleaseIntArrayElements(param_ref, (jint*)param_base,
1310             JNI_ABORT);
1311     }
1312     if (_exception) {
1313         jniThrowException(_env, _exceptionType, _exceptionMessage);
1314     }
1315 }
1316 
1317 /* void glSamplerParameterIuivEXT ( GLuint sampler, GLenum pname, const GLuint *param ) */
1318 static void
android_glSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject param_buf)1319 android_glSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2
1320   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
1321     jint _exception = 0;
1322     const char * _exceptionType = NULL;
1323     const char * _exceptionMessage = NULL;
1324     jintArray _array = (jintArray) 0;
1325     jint _bufferOffset = (jint) 0;
1326     jint _remaining;
1327     GLuint *param = (GLuint *) 0;
1328 
1329     if (!param_buf) {
1330         _exception = 1;
1331         _exceptionType = "java/lang/IllegalArgumentException";
1332         _exceptionMessage = "param == null";
1333         goto exit;
1334     }
1335     param = (GLuint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1336     if (param == NULL) {
1337         char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1338         param = (GLuint *) (_paramBase + _bufferOffset);
1339     }
1340     glSamplerParameterIuivEXT(
1341         (GLuint)sampler,
1342         (GLenum)pname,
1343         (GLuint *)param
1344     );
1345 
1346 exit:
1347     if (_array) {
1348         _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT);
1349     }
1350     if (_exception) {
1351         jniThrowException(_env, _exceptionType, _exceptionMessage);
1352     }
1353 }
1354 
1355 /* void glGetSamplerParameterIivEXT ( GLuint sampler, GLenum pname, GLint *params ) */
1356 static void
android_glGetSamplerParameterIivEXT__II_3II(JNIEnv * _env,jobject _this,jint sampler,jint pname,jintArray params_ref,jint offset)1357 android_glGetSamplerParameterIivEXT__II_3II
1358   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) {
1359     jint _exception = 0;
1360     const char * _exceptionType = NULL;
1361     const char * _exceptionMessage = NULL;
1362     GLint *params_base = (GLint *) 0;
1363     jint _remaining;
1364     GLint *params = (GLint *) 0;
1365 
1366     if (!params_ref) {
1367         _exception = 1;
1368         _exceptionType = "java/lang/IllegalArgumentException";
1369         _exceptionMessage = "params == null";
1370         goto exit;
1371     }
1372     if (offset < 0) {
1373         _exception = 1;
1374         _exceptionType = "java/lang/IllegalArgumentException";
1375         _exceptionMessage = "offset < 0";
1376         goto exit;
1377     }
1378     _remaining = _env->GetArrayLength(params_ref) - offset;
1379     params_base = (GLint *)
1380         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1381     params = params_base + offset;
1382 
1383     glGetSamplerParameterIivEXT(
1384         (GLuint)sampler,
1385         (GLenum)pname,
1386         (GLint *)params
1387     );
1388 
1389 exit:
1390     if (params_base) {
1391         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1392             _exception ? JNI_ABORT: 0);
1393     }
1394     if (_exception) {
1395         jniThrowException(_env, _exceptionType, _exceptionMessage);
1396     }
1397 }
1398 
1399 /* void glGetSamplerParameterIivEXT ( GLuint sampler, GLenum pname, GLint *params ) */
1400 static void
android_glGetSamplerParameterIivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject params_buf)1401 android_glGetSamplerParameterIivEXT__IILjava_nio_IntBuffer_2
1402   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
1403     jint _exception = 0;
1404     const char * _exceptionType = NULL;
1405     const char * _exceptionMessage = NULL;
1406     jintArray _array = (jintArray) 0;
1407     jint _bufferOffset = (jint) 0;
1408     jint _remaining;
1409     GLint *params = (GLint *) 0;
1410 
1411     if (!params_buf) {
1412         _exception = 1;
1413         _exceptionType = "java/lang/IllegalArgumentException";
1414         _exceptionMessage = "params == null";
1415         goto exit;
1416     }
1417     params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1418     if (params == NULL) {
1419         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1420         params = (GLint *) (_paramsBase + _bufferOffset);
1421     }
1422     glGetSamplerParameterIivEXT(
1423         (GLuint)sampler,
1424         (GLenum)pname,
1425         (GLint *)params
1426     );
1427 
1428 exit:
1429     if (_array) {
1430         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1431     }
1432     if (_exception) {
1433         jniThrowException(_env, _exceptionType, _exceptionMessage);
1434     }
1435 }
1436 
1437 /* void glGetSamplerParameterIuivEXT ( GLuint sampler, GLenum pname, GLuint *params ) */
1438 static void
android_glGetSamplerParameterIuivEXT__II_3II(JNIEnv * _env,jobject _this,jint sampler,jint pname,jintArray params_ref,jint offset)1439 android_glGetSamplerParameterIuivEXT__II_3II
1440   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) {
1441     jint _exception = 0;
1442     const char * _exceptionType = NULL;
1443     const char * _exceptionMessage = NULL;
1444     GLuint *params_base = (GLuint *) 0;
1445     jint _remaining;
1446     GLuint *params = (GLuint *) 0;
1447 
1448     if (!params_ref) {
1449         _exception = 1;
1450         _exceptionType = "java/lang/IllegalArgumentException";
1451         _exceptionMessage = "params == null";
1452         goto exit;
1453     }
1454     if (offset < 0) {
1455         _exception = 1;
1456         _exceptionType = "java/lang/IllegalArgumentException";
1457         _exceptionMessage = "offset < 0";
1458         goto exit;
1459     }
1460     _remaining = _env->GetArrayLength(params_ref) - offset;
1461     params_base = (GLuint *)
1462         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1463     params = params_base + offset;
1464 
1465     glGetSamplerParameterIuivEXT(
1466         (GLuint)sampler,
1467         (GLenum)pname,
1468         (GLuint *)params
1469     );
1470 
1471 exit:
1472     if (params_base) {
1473         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1474             _exception ? JNI_ABORT: 0);
1475     }
1476     if (_exception) {
1477         jniThrowException(_env, _exceptionType, _exceptionMessage);
1478     }
1479 }
1480 
1481 /* void glGetSamplerParameterIuivEXT ( GLuint sampler, GLenum pname, GLuint *params ) */
1482 static void
android_glGetSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint sampler,jint pname,jobject params_buf)1483 android_glGetSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2
1484   (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
1485     jint _exception = 0;
1486     const char * _exceptionType = NULL;
1487     const char * _exceptionMessage = NULL;
1488     jintArray _array = (jintArray) 0;
1489     jint _bufferOffset = (jint) 0;
1490     jint _remaining;
1491     GLuint *params = (GLuint *) 0;
1492 
1493     if (!params_buf) {
1494         _exception = 1;
1495         _exceptionType = "java/lang/IllegalArgumentException";
1496         _exceptionMessage = "params == null";
1497         goto exit;
1498     }
1499     params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1500     if (params == NULL) {
1501         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1502         params = (GLuint *) (_paramsBase + _bufferOffset);
1503     }
1504     glGetSamplerParameterIuivEXT(
1505         (GLuint)sampler,
1506         (GLenum)pname,
1507         (GLuint *)params
1508     );
1509 
1510 exit:
1511     if (_array) {
1512         _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1513     }
1514     if (_exception) {
1515         jniThrowException(_env, _exceptionType, _exceptionMessage);
1516     }
1517 }
1518 
1519 /* void glTexBufferEXT ( GLenum target, GLenum internalformat, GLuint buffer ) */
1520 static void
android_glTexBufferEXT__III(JNIEnv * _env,jobject _this,jint target,jint internalformat,jint buffer)1521 android_glTexBufferEXT__III
1522   (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer) {
1523     glTexBufferEXT(
1524         (GLenum)target,
1525         (GLenum)internalformat,
1526         (GLuint)buffer
1527     );
1528 }
1529 
1530 /* void glTexBufferRangeEXT ( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size ) */
1531 static void
android_glTexBufferRangeEXT__IIIII(JNIEnv * _env,jobject _this,jint target,jint internalformat,jint buffer,jint offset,jint size)1532 android_glTexBufferRangeEXT__IIIII
1533   (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer, jint offset, jint size) {
1534     glTexBufferRangeEXT(
1535         (GLenum)target,
1536         (GLenum)internalformat,
1537         (GLuint)buffer,
1538         (GLintptr)offset,
1539         (GLsizeiptr)size
1540     );
1541 }
1542 
1543 static const char *classPathName = "android/opengl/GLES31Ext";
1544 
1545 static const JNINativeMethod methods[] = {
1546 {"_nativeClassInit", "()V", (void*)nativeClassInit },
1547 {"glBlendBarrierKHR", "()V", (void *) android_glBlendBarrierKHR__ },
1548 {"glDebugMessageControlKHR", "(IIII[IIZ)V", (void *) android_glDebugMessageControlKHR__IIII_3IIZ },
1549 {"glDebugMessageControlKHR", "(IIIILjava/nio/IntBuffer;Z)V", (void *) android_glDebugMessageControlKHR__IIIILjava_nio_IntBuffer_2Z },
1550 {"glDebugMessageInsertKHR", "(IIIILjava/lang/String;)V", (void *) android_glDebugMessageInsertKHR__IIIILjava_lang_String_2 },
1551 {"glDebugMessageCallbackKHR", "(Landroid/opengl/GLES31Ext$DebugProcKHR;)V", (void *) android_glDebugMessageCallbackKHR },
1552 {"glGetDebugMessageLogKHR", "(II[II[II[II[II[II[BI)I", (void *) android_glGetDebugMessageLogKHR__II_3II_3II_3II_3II_3II_3BI },
1553 {"glGetDebugMessageLogKHR", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I", (void *) android_glGetDebugMessageLogKHR__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 },
1554 {"glGetDebugMessageLogKHR", "(I[II[II[II[II)[Ljava/lang/String;", (void *) android_glGetDebugMessageLogKHR__I_3II_3II_3II_3II },
1555 {"glGetDebugMessageLogKHR", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;", (void *) android_glGetDebugMessageLogKHR__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
1556 {"glPushDebugGroupKHR", "(IIILjava/lang/String;)V", (void *) android_glPushDebugGroupKHR__IIILjava_lang_String_2 },
1557 {"glPopDebugGroupKHR", "()V", (void *) android_glPopDebugGroupKHR__ },
1558 {"glObjectLabelKHR", "(IIILjava/lang/String;)V", (void *) android_glObjectLabelKHR__IIILjava_lang_String_2 },
1559 {"glGetObjectLabelKHR", "(II)Ljava/lang/String;", (void *) android_glGetObjectLabelKHR },
1560 {"glObjectPtrLabelKHR", "(JLjava/lang/String;)V", (void *) android_glObjectPtrLabelKHR },
1561 {"glGetObjectPtrLabelKHR", "(J)Ljava/lang/String;", (void *) android_glGetObjectPtrLabelKHR },
1562 {"glGetDebugMessageCallbackKHR", "()Landroid/opengl/GLES31Ext$DebugProcKHR;", (void *) android_glGetDebugMessageCallbackKHR },
1563 {"glMinSampleShadingOES", "(F)V", (void *) android_glMinSampleShadingOES__F },
1564 {"glTexStorage3DMultisampleOES", "(IIIIIIZ)V", (void *) android_glTexStorage3DMultisampleOES__IIIIIIZ },
1565 {"glCopyImageSubDataEXT", "(IIIIIIIIIIIIIII)V", (void *) android_glCopyImageSubDataEXT__IIIIIIIIIIIIIII },
1566 {"glEnableiEXT", "(II)V", (void *) android_glEnableiEXT__II },
1567 {"glDisableiEXT", "(II)V", (void *) android_glDisableiEXT__II },
1568 {"glBlendEquationiEXT", "(II)V", (void *) android_glBlendEquationiEXT__II },
1569 {"glBlendEquationSeparateiEXT", "(III)V", (void *) android_glBlendEquationSeparateiEXT__III },
1570 {"glBlendFunciEXT", "(III)V", (void *) android_glBlendFunciEXT__III },
1571 {"glBlendFuncSeparateiEXT", "(IIIII)V", (void *) android_glBlendFuncSeparateiEXT__IIIII },
1572 {"glColorMaskiEXT", "(IZZZZ)V", (void *) android_glColorMaskiEXT__IZZZZ },
1573 {"glIsEnablediEXT", "(II)Z", (void *) android_glIsEnablediEXT__II },
1574 {"glFramebufferTextureEXT", "(IIII)V", (void *) android_glFramebufferTextureEXT__IIII },
1575 {"glPrimitiveBoundingBoxEXT", "(FFFFFFFF)V", (void *) android_glPrimitiveBoundingBoxEXT__FFFFFFFF },
1576 {"glPatchParameteriEXT", "(II)V", (void *) android_glPatchParameteriEXT__II },
1577 {"glTexParameterIivEXT", "(II[II)V", (void *) android_glTexParameterIivEXT__II_3II },
1578 {"glTexParameterIivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIivEXT__IILjava_nio_IntBuffer_2 },
1579 {"glTexParameterIuivEXT", "(II[II)V", (void *) android_glTexParameterIuivEXT__II_3II },
1580 {"glTexParameterIuivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIuivEXT__IILjava_nio_IntBuffer_2 },
1581 {"glGetTexParameterIivEXT", "(II[II)V", (void *) android_glGetTexParameterIivEXT__II_3II },
1582 {"glGetTexParameterIivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIivEXT__IILjava_nio_IntBuffer_2 },
1583 {"glGetTexParameterIuivEXT", "(II[II)V", (void *) android_glGetTexParameterIuivEXT__II_3II },
1584 {"glGetTexParameterIuivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIuivEXT__IILjava_nio_IntBuffer_2 },
1585 {"glSamplerParameterIivEXT", "(II[II)V", (void *) android_glSamplerParameterIivEXT__II_3II },
1586 {"glSamplerParameterIivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIivEXT__IILjava_nio_IntBuffer_2 },
1587 {"glSamplerParameterIuivEXT", "(II[II)V", (void *) android_glSamplerParameterIuivEXT__II_3II },
1588 {"glSamplerParameterIuivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2 },
1589 {"glGetSamplerParameterIivEXT", "(II[II)V", (void *) android_glGetSamplerParameterIivEXT__II_3II },
1590 {"glGetSamplerParameterIivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIivEXT__IILjava_nio_IntBuffer_2 },
1591 {"glGetSamplerParameterIuivEXT", "(II[II)V", (void *) android_glGetSamplerParameterIuivEXT__II_3II },
1592 {"glGetSamplerParameterIuivEXT", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2 },
1593 {"glTexBufferEXT", "(III)V", (void *) android_glTexBufferEXT__III },
1594 {"glTexBufferRangeEXT", "(IIIII)V", (void *) android_glTexBufferRangeEXT__IIIII },
1595 };
1596 
register_android_opengl_jni_GLES31Ext(JNIEnv * _env)1597 int register_android_opengl_jni_GLES31Ext(JNIEnv *_env)
1598 {
1599     int err;
1600     err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
1601     return err;
1602 }
1603