blob: 2f1e31e7fab91f5bde64ee3a950cf496fecf7e2d [file] [log] [blame]
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001/*
2 * Copyright 2015 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"
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -070020#pragma GCC diagnostic ignored "-Wunused-function"
21
22#include <stdint.h>
23#include <GLES3/gl32.h>
24#include <jni.h>
Steven Moreland2279b252017-07-19 09:50:45 -070025#include <nativehelper/JNIHelp.h>
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -070026#include <android_runtime/AndroidRuntime.h>
27#include <utils/misc.h>
28#include <assert.h>
29
30static int initialized = 0;
31
32static jclass nioAccessClass;
33static jclass bufferClass;
34static jmethodID getBasePointerID;
35static jmethodID getBaseArrayID;
36static jmethodID getBaseArrayOffsetID;
37static jfieldID positionID;
38static jfieldID limitID;
39static jfieldID elementSizeShiftID;
40
41
42/* special calls implemented in Android's GLES wrapper used to more
43 * efficiently bound-check passed arrays */
44extern "C" {
45#ifdef GL_VERSION_ES_CM_1_1
46GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
47 const GLvoid *ptr, GLsizei count);
48GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
49 const GLvoid *pointer, GLsizei count);
50GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
51 GLsizei stride, const GLvoid *pointer, GLsizei count);
52GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
53 GLsizei stride, const GLvoid *pointer, GLsizei count);
54GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
55 GLsizei stride, const GLvoid *pointer, GLsizei count);
56GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
57 GLsizei stride, const GLvoid *pointer, GLsizei count);
58GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
59 GLsizei stride, const GLvoid *pointer, GLsizei count);
60#endif
61#ifdef GL_ES_VERSION_2_0
62static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
63 GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
64 glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
65}
66#endif
67#ifdef GL_ES_VERSION_3_0
68static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
69 GLsizei stride, const GLvoid *pointer, GLsizei count) {
70 glVertexAttribIPointer(indx, size, type, stride, pointer);
71}
72#endif
73}
74
75/* Cache method IDs each time the class is loaded. */
76
77static void
78nativeClassInit(JNIEnv *_env, jclass glImplClass)
79{
80 jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
81 nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
82
83 jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
84 bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
85
86 getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
87 "getBasePointer", "(Ljava/nio/Buffer;)J");
88 getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
89 "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
90 getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
91 "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
92
93 positionID = _env->GetFieldID(bufferClass, "position", "I");
94 limitID = _env->GetFieldID(bufferClass, "limit", "I");
95 elementSizeShiftID =
96 _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
97}
98
99static void *
100getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
101{
102 jint position;
103 jint limit;
104 jint elementSizeShift;
105 jlong pointer;
106
107 position = _env->GetIntField(buffer, positionID);
108 limit = _env->GetIntField(buffer, limitID);
109 elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
110 *remaining = (limit - position) << elementSizeShift;
111 pointer = _env->CallStaticLongMethod(nioAccessClass,
112 getBasePointerID, buffer);
113 if (pointer != 0L) {
114 *array = NULL;
115 return reinterpret_cast<void*>(pointer);
116 }
117
118 *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
119 getBaseArrayID, buffer);
120 *offset = _env->CallStaticIntMethod(nioAccessClass,
121 getBaseArrayOffsetID, buffer);
122
123 return NULL;
124}
125
126class ByteArrayGetter {
127public:
128 static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
129 return _env->GetByteArrayElements(array, is_copy);
130 }
131};
132class BooleanArrayGetter {
133public:
134 static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
135 return _env->GetBooleanArrayElements(array, is_copy);
136 }
137};
138class CharArrayGetter {
139public:
140 static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
141 return _env->GetCharArrayElements(array, is_copy);
142 }
143};
144class ShortArrayGetter {
145public:
146 static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
147 return _env->GetShortArrayElements(array, is_copy);
148 }
149};
150class IntArrayGetter {
151public:
152 static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
153 return _env->GetIntArrayElements(array, is_copy);
154 }
155};
156class LongArrayGetter {
157public:
158 static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
159 return _env->GetLongArrayElements(array, is_copy);
160 }
161};
162class FloatArrayGetter {
163public:
164 static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
165 return _env->GetFloatArrayElements(array, is_copy);
166 }
167};
168class DoubleArrayGetter {
169public:
170 static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
171 return _env->GetDoubleArrayElements(array, is_copy);
172 }
173};
174
175template<typename JTYPEARRAY, typename ARRAYGETTER>
176static void*
177getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
178 return ARRAYGETTER::Get(_env, array, is_copy);
179}
180
181class ByteArrayReleaser {
182public:
183 static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
184 _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
185 }
186};
187class BooleanArrayReleaser {
188public:
189 static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
190 _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
191 }
192};
193class CharArrayReleaser {
194public:
195 static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
196 _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
197 }
198};
199class ShortArrayReleaser {
200public:
201 static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
202 _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
203 }
204};
205class IntArrayReleaser {
206public:
207 static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
208 _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
209 }
210};
211class LongArrayReleaser {
212public:
213 static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
214 _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
215 }
216};
217class FloatArrayReleaser {
218public:
219 static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
220 _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
221 }
222};
223class DoubleArrayReleaser {
224public:
225 static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
226 _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
227 }
228};
229
230template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
231static void
232releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
233 ARRAYRELEASER::Release(_env, array, data, commit);
234}
235
236static void
237releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
238{
239 _env->ReleasePrimitiveArrayCritical(array, data,
240 commit ? 0 : JNI_ABORT);
241}
242
243static void *
244getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
245 char* buf = (char*) _env->GetDirectBufferAddress(buffer);
246 if (buf) {
247 jint position = _env->GetIntField(buffer, positionID);
248 jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
249 buf += position << elementSizeShift;
250 } else {
251 jniThrowException(_env, "java/lang/IllegalArgumentException",
252 "Must use a native order direct Buffer");
253 }
254 return (void*) buf;
255}
256
257// --------------------------------------------------------------------------
258
259/*
260 * returns the number of values glGet returns for a given pname.
261 *
262 * The code below is written such that pnames requiring only one values
263 * are the default (and are not explicitely tested for). This makes the
264 * checking code much shorter/readable/efficient.
265 *
266 * This means that unknown pnames (e.g.: extensions) will default to 1. If
267 * that unknown pname needs more than 1 value, then the validation check
268 * is incomplete and the app may crash if it passed the wrong number params.
269 */
270static int getNeededCount(GLint pname) {
271 int needed = 1;
Romain Guydc43a6c2017-02-17 19:54:25 -0800272#ifdef GL_ES_VERSION_3_0
273 // GLES 3.x pnames
274 switch (pname) {
275 case GL_MAX_VIEWPORT_DIMS:
276 needed = 2;
277 break;
278
279 case GL_PROGRAM_BINARY_FORMATS:
280 glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed);
281 break;
282 }
283#endif
284
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -0700285#ifdef GL_ES_VERSION_2_0
286 // GLES 2.x pnames
287 switch (pname) {
288 case GL_ALIASED_LINE_WIDTH_RANGE:
289 case GL_ALIASED_POINT_SIZE_RANGE:
290 needed = 2;
291 break;
292
293 case GL_BLEND_COLOR:
294 case GL_COLOR_CLEAR_VALUE:
295 case GL_COLOR_WRITEMASK:
296 case GL_SCISSOR_BOX:
297 case GL_VIEWPORT:
298 needed = 4;
299 break;
300
301 case GL_COMPRESSED_TEXTURE_FORMATS:
302 glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
303 break;
304
305 case GL_SHADER_BINARY_FORMATS:
306 glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
307 break;
308 }
309#endif
310
311#ifdef GL_VERSION_ES_CM_1_1
312 // GLES 1.x pnames
313 switch (pname) {
314 case GL_ALIASED_LINE_WIDTH_RANGE:
315 case GL_ALIASED_POINT_SIZE_RANGE:
316 case GL_DEPTH_RANGE:
317 case GL_SMOOTH_LINE_WIDTH_RANGE:
318 case GL_SMOOTH_POINT_SIZE_RANGE:
319 needed = 2;
320 break;
321
322 case GL_CURRENT_NORMAL:
323 case GL_POINT_DISTANCE_ATTENUATION:
324 needed = 3;
325 break;
326
327 case GL_COLOR_CLEAR_VALUE:
328 case GL_COLOR_WRITEMASK:
329 case GL_CURRENT_COLOR:
330 case GL_CURRENT_TEXTURE_COORDS:
331 case GL_FOG_COLOR:
332 case GL_LIGHT_MODEL_AMBIENT:
333 case GL_SCISSOR_BOX:
334 case GL_VIEWPORT:
335 needed = 4;
336 break;
337
338 case GL_MODELVIEW_MATRIX:
339 case GL_PROJECTION_MATRIX:
340 case GL_TEXTURE_MATRIX:
341 needed = 16;
342 break;
343
344 case GL_COMPRESSED_TEXTURE_FORMATS:
345 glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
346 break;
347 }
348#endif
349 return needed;
350}
351
352template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
353 typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
354static void
355get
356 (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
357 jint _exception = 0;
358 const char * _exceptionType;
359 const char * _exceptionMessage;
360 CTYPE *params_base = (CTYPE *) 0;
361 jint _remaining;
362 CTYPE *params = (CTYPE *) 0;
363 int _needed = 0;
364
365 if (!params_ref) {
366 _exception = 1;
367 _exceptionType = "java/lang/IllegalArgumentException";
368 _exceptionMessage = "params == null";
369 goto exit;
370 }
371 if (offset < 0) {
372 _exception = 1;
373 _exceptionType = "java/lang/IllegalArgumentException";
374 _exceptionMessage = "offset < 0";
375 goto exit;
376 }
377 _remaining = _env->GetArrayLength(params_ref) - offset;
378 _needed = getNeededCount(pname);
379 // if we didn't find this pname, we just assume the user passed
380 // an array of the right size -- this might happen with extensions
381 // or if we forget an enum here.
382 if (_remaining < _needed) {
383 _exception = 1;
384 _exceptionType = "java/lang/IllegalArgumentException";
385 _exceptionMessage = "length - offset < needed";
386 goto exit;
387 }
388 params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
389 _env, params_ref, (jboolean *)0);
390 params = params_base + offset;
391
392 GET(
393 (GLenum)pname,
394 (CTYPE *)params
395 );
396
397exit:
398 if (params_base) {
399 releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
400 _env, params_ref, params_base, !_exception);
401 }
402 if (_exception) {
403 jniThrowException(_env, _exceptionType, _exceptionMessage);
404 }
405}
406
407
408template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
409 typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
410static void
411getarray
412 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
413 jint _exception = 0;
414 const char * _exceptionType;
415 const char * _exceptionMessage;
416 JTYPEARRAY _array = (JTYPEARRAY) 0;
417 jint _bufferOffset = (jint) 0;
418 jint _remaining;
419 CTYPE *params = (CTYPE *) 0;
420 int _needed = 0;
421
422 params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
423 _remaining /= sizeof(CTYPE); // convert from bytes to item count
424 _needed = getNeededCount(pname);
425 // if we didn't find this pname, we just assume the user passed
426 // an array of the right size -- this might happen with extensions
427 // or if we forget an enum here.
428 if (_needed>0 && _remaining < _needed) {
429 _exception = 1;
430 _exceptionType = "java/lang/IllegalArgumentException";
431 _exceptionMessage = "remaining() < needed";
432 goto exit;
433 }
434 if (params == NULL) {
435 char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
436 _env, _array, (jboolean *) 0);
437 params = (CTYPE *) (_paramsBase + _bufferOffset);
438 }
439 GET(
440 (GLenum)pname,
441 (CTYPE *)params
442 );
443
444exit:
445 if (_array) {
446 releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
447 _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
448 }
449 if (_exception) {
450 jniThrowException(_env, _exceptionType, _exceptionMessage);
451 }
452}
453
454// --------------------------------------------------------------------------
455/* void glBlendBarrier ( void ) */
456static void
457android_glBlendBarrier__
458 (JNIEnv *_env, jobject _this) {
459 glBlendBarrier();
460}
461
462/* void glCopyImageSubData ( 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 ) */
463static void
464android_glCopyImageSubData__IIIIIIIIIIIIIII
465 (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) {
466 glCopyImageSubData(
467 (GLuint)srcName,
468 (GLenum)srcTarget,
469 (GLint)srcLevel,
470 (GLint)srcX,
471 (GLint)srcY,
472 (GLint)srcZ,
473 (GLuint)dstName,
474 (GLenum)dstTarget,
475 (GLint)dstLevel,
476 (GLint)dstX,
477 (GLint)dstY,
478 (GLint)dstZ,
479 (GLsizei)srcWidth,
480 (GLsizei)srcHeight,
481 (GLsizei)srcDepth
482 );
483}
484
485/* void glDebugMessageControl ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */
486static void
487android_glDebugMessageControl__IIII_3IIZ
488 (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jintArray ids_ref, jint offset, jboolean enabled) {
489 jint _exception = 0;
490 const char * _exceptionType = NULL;
491 const char * _exceptionMessage = NULL;
492 GLuint *ids_base = (GLuint *) 0;
493 jint _remaining;
494 GLuint *ids = (GLuint *) 0;
495
496 if (!ids_ref) {
497 _exception = 1;
498 _exceptionType = "java/lang/IllegalArgumentException";
499 _exceptionMessage = "ids == null";
500 goto exit;
501 }
502 if (offset < 0) {
503 _exception = 1;
504 _exceptionType = "java/lang/IllegalArgumentException";
505 _exceptionMessage = "offset < 0";
506 goto exit;
507 }
508 _remaining = _env->GetArrayLength(ids_ref) - offset;
509 if (_remaining < count) {
510 _exception = 1;
511 _exceptionType = "java/lang/IllegalArgumentException";
512 _exceptionMessage = "length - offset < count < needed";
513 goto exit;
514 }
515 ids_base = (GLuint *)
516 _env->GetIntArrayElements(ids_ref, (jboolean *)0);
517 ids = ids_base + offset;
518
519 glDebugMessageControl(
520 (GLenum)source,
521 (GLenum)type,
522 (GLenum)severity,
523 (GLsizei)count,
524 (GLuint *)ids,
525 (GLboolean)enabled
526 );
527
528exit:
529 if (ids_base) {
530 _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base,
531 JNI_ABORT);
532 }
533 if (_exception) {
534 jniThrowException(_env, _exceptionType, _exceptionMessage);
535 }
536}
537
538/* void glDebugMessageControl ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */
539static void
540android_glDebugMessageControl__IIIILjava_nio_IntBuffer_2Z
541 (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jobject ids_buf, jboolean enabled) {
542 jint _exception = 0;
543 const char * _exceptionType = NULL;
544 const char * _exceptionMessage = NULL;
545 jintArray _array = (jintArray) 0;
546 jint _bufferOffset = (jint) 0;
547 jint _remaining;
548 GLuint *ids = (GLuint *) 0;
549
Romain Guy84cac202016-12-05 12:26:02 -0800550 if (!ids_buf) {
551 _exception = 1;
552 _exceptionType = "java/lang/IllegalArgumentException";
553 _exceptionMessage = "ids == null";
554 goto exit;
555 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -0700556 ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
557 if (_remaining < count) {
558 _exception = 1;
559 _exceptionType = "java/lang/IllegalArgumentException";
560 _exceptionMessage = "remaining() < count < needed";
561 goto exit;
562 }
563 if (ids == NULL) {
564 char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
565 ids = (GLuint *) (_idsBase + _bufferOffset);
566 }
567 glDebugMessageControl(
568 (GLenum)source,
569 (GLenum)type,
570 (GLenum)severity,
571 (GLsizei)count,
572 (GLuint *)ids,
573 (GLboolean)enabled
574 );
575
576exit:
577 if (_array) {
578 _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT);
579 }
580 if (_exception) {
581 jniThrowException(_env, _exceptionType, _exceptionMessage);
582 }
583}
584
585/* void glDebugMessageInsert ( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf ) */
586static void
587android_glDebugMessageInsert__IIIIILjava_lang_String_2
588 (JNIEnv *_env, jobject _this, jint source, jint type, jint id, jint severity, jint length, jstring buf) {
589 jint _exception = 0;
590 const char * _exceptionType = NULL;
591 const char * _exceptionMessage = NULL;
592 const char* _nativebuf = 0;
593
594 if (!buf) {
595 _exception = 1;
596 _exceptionType = "java/lang/IllegalArgumentException";
597 _exceptionMessage = "buf == null";
598 goto exit;
599 }
600 _nativebuf = _env->GetStringUTFChars(buf, 0);
601
602 glDebugMessageInsert(
603 (GLenum)source,
604 (GLenum)type,
605 (GLuint)id,
606 (GLenum)severity,
607 (GLsizei)length,
608 (GLchar *)_nativebuf
609 );
610
611exit:
612 if (_nativebuf) {
613 _env->ReleaseStringUTFChars(buf, _nativebuf);
614 }
615
616 if (_exception) {
617 jniThrowException(_env, _exceptionType, _exceptionMessage);
618 }
619}
620
621/* void glDebugMessageCallback ( GLDEBUGPROC callback, const void *userParam ) */
622static void
623android_glDebugMessageCallback(JNIEnv *_env, jobject _this, jobject callback) {
624 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
625}
626/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
627static jint
628android_glGetDebugMessageLog__II_3II_3II_3II_3II_3II_3BI
629 (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) {
630 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
631 return 0;
632}
633
634/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
635static uint
636android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2
637 (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref, jobject lengths_ref, jobject messageLog_ref) {
638 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
639 return 0;
640}
641
642/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
643static jobjectArray
644android_glGetDebugMessageLog__I_3II_3II_3II_3II
645 (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) {
646 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
647 return 0;
648}
649
650/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */
651static jobjectArray
652android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
653 (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref) {
654 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
655 return 0;
656}
657/* void glPushDebugGroup ( GLenum source, GLuint id, GLsizei length, const GLchar *message ) */
658static void
659android_glPushDebugGroup__IIILjava_lang_String_2
660 (JNIEnv *_env, jobject _this, jint source, jint id, jint length, jstring message) {
661 jint _exception = 0;
662 const char * _exceptionType = NULL;
663 const char * _exceptionMessage = NULL;
664 const char* _nativemessage = 0;
665 jsize _stringlen = 0;
666
667 if (!message) {
668 _exception = 1;
669 _exceptionType = "java/lang/IllegalArgumentException";
670 _exceptionMessage = "message == null";
671 goto exit;
672 }
673 _nativemessage = _env->GetStringUTFChars(message, 0);
674 _stringlen = _env->GetStringUTFLength(message);
675 if (length > _stringlen) {
676 _exception = 1;
677 _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
678 _exceptionMessage = "length of message is shorter than length argument";
679 goto exit;
680 }
681
682 glPushDebugGroup(
683 (GLenum)source,
684 (GLuint)id,
685 (GLsizei)length,
686 (GLchar *)_nativemessage
687 );
688
689exit:
690 if (_nativemessage) {
691 _env->ReleaseStringUTFChars(message, _nativemessage);
692 }
693
694 if (_exception) {
695 jniThrowException(_env, _exceptionType, _exceptionMessage);
696 }
697}
698
699/* void glPopDebugGroup ( void ) */
700static void
701android_glPopDebugGroup__
702 (JNIEnv *_env, jobject _this) {
703 glPopDebugGroup();
704}
705
706/* void glObjectLabel ( GLenum identifier, GLuint name, GLsizei length, const GLchar *label ) */
707static void
708android_glObjectLabel__IIILjava_lang_String_2
709 (JNIEnv *_env, jobject _this, jint identifier, jint name, jint length, jstring label) {
710 jint _exception = 0;
711 const char * _exceptionType = NULL;
712 const char * _exceptionMessage = NULL;
713 const char* _nativelabel = 0;
714 jsize _stringlen = 0;
715
716 if (label) {
717 _nativelabel = _env->GetStringUTFChars(label, 0);
718 _stringlen = _env->GetStringUTFLength(label);
719 if (length > _stringlen) {
720 _exception = 1;
721 _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
722 _exceptionMessage = "length of label is shorter than length argument";
723 goto exit;
724 }
725 }
726
727 glObjectLabel(
728 (GLenum)identifier,
729 (GLuint)name,
730 (GLsizei)length,
731 (GLchar *)_nativelabel
732 );
733
734exit:
735 if (_nativelabel) {
736 _env->ReleaseStringUTFChars(label, _nativelabel);
737 }
738
739 if (_exception) {
740 jniThrowException(_env, _exceptionType, _exceptionMessage);
741 }
742}
743
744/* void glGetObjectLabel ( GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label ) */
745static jstring
746android_glGetObjectLabel(JNIEnv *_env, jobject _this, jint identifier, jint name) {
747 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
748 return NULL;
749}
750
751/* void glObjectPtrLabel ( const void *ptr, GLsizei length, const GLchar *label ) */
752static void
753android_glObjectPtrLabel(JNIEnv *_env, jobject _this, jlong ptr, jstring label) {
754 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
755}
756
757/* void glGetObjectPtrLabel ( const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label ) */
758static jstring
759android_glGetObjectPtrLabel(JNIEnv *_env, jobject _this, jlong ptr) {
760 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
761 return NULL;
762}
763
764/* void glGetPointerv ( GLenum pname, void **params ) */
765static jlong
766android_glGetPointerv(JNIEnv *_env, jobject _this, jint pname) {
767 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented");
768 return NULL;
769}
770
771/* void glEnablei ( GLenum target, GLuint index ) */
772static void
773android_glEnablei__II
774 (JNIEnv *_env, jobject _this, jint target, jint index) {
775 glEnablei(
776 (GLenum)target,
777 (GLuint)index
778 );
779}
780
781/* void glDisablei ( GLenum target, GLuint index ) */
782static void
783android_glDisablei__II
784 (JNIEnv *_env, jobject _this, jint target, jint index) {
785 glDisablei(
786 (GLenum)target,
787 (GLuint)index
788 );
789}
790
791/* void glBlendEquationi ( GLuint buf, GLenum mode ) */
792static void
793android_glBlendEquationi__II
794 (JNIEnv *_env, jobject _this, jint buf, jint mode) {
795 glBlendEquationi(
796 (GLuint)buf,
797 (GLenum)mode
798 );
799}
800
801/* void glBlendEquationSeparatei ( GLuint buf, GLenum modeRGB, GLenum modeAlpha ) */
802static void
803android_glBlendEquationSeparatei__III
804 (JNIEnv *_env, jobject _this, jint buf, jint modeRGB, jint modeAlpha) {
805 glBlendEquationSeparatei(
806 (GLuint)buf,
807 (GLenum)modeRGB,
808 (GLenum)modeAlpha
809 );
810}
811
812/* void glBlendFunci ( GLuint buf, GLenum src, GLenum dst ) */
813static void
814android_glBlendFunci__III
815 (JNIEnv *_env, jobject _this, jint buf, jint src, jint dst) {
816 glBlendFunci(
817 (GLuint)buf,
818 (GLenum)src,
819 (GLenum)dst
820 );
821}
822
823/* void glBlendFuncSeparatei ( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */
824static void
825android_glBlendFuncSeparatei__IIIII
826 (JNIEnv *_env, jobject _this, jint buf, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) {
827 glBlendFuncSeparatei(
828 (GLuint)buf,
829 (GLenum)srcRGB,
830 (GLenum)dstRGB,
831 (GLenum)srcAlpha,
832 (GLenum)dstAlpha
833 );
834}
835
836/* void glColorMaski ( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) */
837static void
838android_glColorMaski__IZZZZ
839 (JNIEnv *_env, jobject _this, jint index, jboolean r, jboolean g, jboolean b, jboolean a) {
840 glColorMaski(
841 (GLuint)index,
842 (GLboolean)r,
843 (GLboolean)g,
844 (GLboolean)b,
845 (GLboolean)a
846 );
847}
848
849/* GLboolean glIsEnabledi ( GLenum target, GLuint index ) */
850static jboolean
851android_glIsEnabledi__II
852 (JNIEnv *_env, jobject _this, jint target, jint index) {
853 GLboolean _returnValue;
854 _returnValue = glIsEnabledi(
855 (GLenum)target,
856 (GLuint)index
857 );
858 return (jboolean)_returnValue;
859}
860
861/* void glDrawElementsBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex ) */
862static void
863android_glDrawElementsBaseVertex__IIILjava_nio_Buffer_2I
864 (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint basevertex) {
865 jint _exception = 0;
866 const char * _exceptionType = NULL;
867 const char * _exceptionMessage = NULL;
868 jarray _array = (jarray) 0;
869 jint _bufferOffset = (jint) 0;
870 jint _remaining;
871 void *indices = (void *) 0;
872
Romain Guy84cac202016-12-05 12:26:02 -0800873 if (!indices_buf) {
874 _exception = 1;
875 _exceptionType = "java/lang/IllegalArgumentException";
876 _exceptionMessage = "indices == null";
877 goto exit;
878 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -0700879 indices = (void *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
880 if (_remaining < count-basevertex) {
881 _exception = 1;
882 _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
883 _exceptionMessage = "remaining() < count-basevertex < needed";
884 goto exit;
885 }
886 if (indices == NULL) {
887 char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
888 indices = (void *) (_indicesBase + _bufferOffset);
889 }
890 glDrawElementsBaseVertex(
891 (GLenum)mode,
892 (GLsizei)count,
893 (GLenum)type,
894 (void *)indices,
895 (GLint)basevertex
896 );
897
898exit:
899 if (_array) {
900 releasePointer(_env, _array, indices, JNI_FALSE);
901 }
902 if (_exception) {
903 jniThrowException(_env, _exceptionType, _exceptionMessage);
904 }
905}
906
907/* void glDrawRangeElementsBaseVertex ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex ) */
908static void
909android_glDrawRangeElementsBaseVertex__IIIIILjava_nio_Buffer_2I
910 (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf, jint basevertex) {
911 jint _exception = 0;
912 const char * _exceptionType = NULL;
913 const char * _exceptionMessage = NULL;
914 jarray _array = (jarray) 0;
915 jint _bufferOffset = (jint) 0;
916 jint _remaining;
917 void *indices = (void *) 0;
918
Romain Guy84cac202016-12-05 12:26:02 -0800919 if (!indices_buf) {
920 _exception = 1;
921 _exceptionType = "java/lang/IllegalArgumentException";
922 _exceptionMessage = "indices == null";
923 goto exit;
924 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -0700925 indices = (void *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
926 if (_remaining < count-basevertex) {
927 _exception = 1;
928 _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
929 _exceptionMessage = "remaining() < count-basevertex < needed";
930 goto exit;
931 }
932 if (indices == NULL) {
933 char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
934 indices = (void *) (_indicesBase + _bufferOffset);
935 }
936 glDrawRangeElementsBaseVertex(
937 (GLenum)mode,
938 (GLuint)start,
939 (GLuint)end,
940 (GLsizei)count,
941 (GLenum)type,
942 (void *)indices,
943 (GLint)basevertex
944 );
945
946exit:
947 if (_array) {
948 releasePointer(_env, _array, indices, JNI_FALSE);
949 }
950 if (_exception) {
951 jniThrowException(_env, _exceptionType, _exceptionMessage);
952 }
953}
954
955/* void glDrawElementsInstancedBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount, GLint basevertex ) */
956static void
957android_glDrawElementsInstancedBaseVertex__IIILjava_nio_Buffer_2II
958 (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount, jint basevertex) {
959 jint _exception = 0;
960 const char * _exceptionType = NULL;
961 const char * _exceptionMessage = NULL;
962 jarray _array = (jarray) 0;
963 jint _bufferOffset = (jint) 0;
964 jint _remaining;
965 void *indices = (void *) 0;
966
967 indices = (void *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
968 if (_remaining < count-basevertex) {
969 _exception = 1;
970 _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
971 _exceptionMessage = "remaining() < count-basevertex < needed";
972 goto exit;
973 }
974 if (indices == NULL) {
975 char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
976 indices = (void *) (_indicesBase + _bufferOffset);
977 }
978 glDrawElementsInstancedBaseVertex(
979 (GLenum)mode,
980 (GLsizei)count,
981 (GLenum)type,
982 (void *)indices,
983 (GLsizei)instanceCount,
984 (GLint) basevertex
985 );
986
987exit:
988 if (_array) {
989 releasePointer(_env, _array, indices, JNI_FALSE);
990 }
991}
992
993/* void glDrawElementsInstancedBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount, GLint basevertex ) */
994static void
995android_glDrawElementsInstancedBaseVertex__IIIIII
996 (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount, jint basevertex) {
997 glDrawElementsInstancedBaseVertex(
998 (GLenum)mode,
999 (GLsizei)count,
1000 (GLenum)type,
1001 (void *)static_cast<uintptr_t>(indicesOffset),
1002 (GLsizei)instanceCount,
1003 (GLint)basevertex
1004 );
1005}
1006/* void glFramebufferTexture ( GLenum target, GLenum attachment, GLuint texture, GLint level ) */
1007static void
1008android_glFramebufferTexture__IIII
1009 (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level) {
1010 glFramebufferTexture(
1011 (GLenum)target,
1012 (GLenum)attachment,
1013 (GLuint)texture,
1014 (GLint)level
1015 );
1016}
1017
1018/* void glPrimitiveBoundingBox ( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW ) */
1019static void
1020android_glPrimitiveBoundingBox__FFFFFFFF
1021 (JNIEnv *_env, jobject _this, jfloat minX, jfloat minY, jfloat minZ, jfloat minW, jfloat maxX, jfloat maxY, jfloat maxZ, jfloat maxW) {
1022 glPrimitiveBoundingBox(
1023 (GLfloat)minX,
1024 (GLfloat)minY,
1025 (GLfloat)minZ,
1026 (GLfloat)minW,
1027 (GLfloat)maxX,
1028 (GLfloat)maxY,
1029 (GLfloat)maxZ,
1030 (GLfloat)maxW
1031 );
1032}
1033
1034/* GLenum glGetGraphicsResetStatus ( void ) */
1035static jint
1036android_glGetGraphicsResetStatus__
1037 (JNIEnv *_env, jobject _this) {
1038 GLenum _returnValue;
1039 _returnValue = glGetGraphicsResetStatus();
1040 return (jint)_returnValue;
1041}
1042
1043/* void glReadnPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data ) */
1044static void
1045android_glReadnPixels__IIIIIIILjava_nio_Buffer_2
1046 (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jint bufSize, jobject data_buf) {
1047 jint _exception = 0;
1048 const char * _exceptionType = NULL;
1049 const char * _exceptionMessage = NULL;
1050 jarray _array = (jarray) 0;
1051 jint _bufferOffset = (jint) 0;
1052 jint _remaining;
1053 void *data = (void *) 0;
1054
Romain Guy84cac202016-12-05 12:26:02 -08001055 if (!data_buf) {
1056 _exception = 1;
1057 _exceptionType = "java/lang/IllegalArgumentException";
1058 _exceptionMessage = "data == null";
1059 goto exit;
1060 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001061 data = (void *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1062 if (_remaining < bufSize) {
1063 _exception = 1;
1064 _exceptionType = "java/lang/IllegalArgumentException";
1065 _exceptionMessage = "remaining() < bufSize < needed";
1066 goto exit;
1067 }
1068 if (data == NULL) {
1069 char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1070 data = (void *) (_dataBase + _bufferOffset);
1071 }
1072 glReadnPixels(
1073 (GLint)x,
1074 (GLint)y,
1075 (GLsizei)width,
1076 (GLsizei)height,
1077 (GLenum)format,
1078 (GLenum)type,
1079 (GLsizei)bufSize,
1080 (void *)data
1081 );
1082
1083exit:
1084 if (_array) {
1085 releasePointer(_env, _array, data, _exception ? JNI_FALSE : JNI_TRUE);
1086 }
1087 if (_exception) {
1088 jniThrowException(_env, _exceptionType, _exceptionMessage);
1089 }
1090}
1091
1092/* void glGetnUniformfv ( GLuint program, GLint location, GLsizei bufSize, GLfloat *params ) */
1093static void
1094android_glGetnUniformfv__III_3FI
1095 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jfloatArray params_ref, jint offset) {
1096 jint _exception = 0;
1097 const char * _exceptionType = NULL;
1098 const char * _exceptionMessage = NULL;
1099 GLfloat *params_base = (GLfloat *) 0;
1100 jint _remaining;
1101 GLfloat *params = (GLfloat *) 0;
1102
1103 if (!params_ref) {
1104 _exception = 1;
1105 _exceptionType = "java/lang/IllegalArgumentException";
1106 _exceptionMessage = "params == null";
1107 goto exit;
1108 }
1109 if (offset < 0) {
1110 _exception = 1;
1111 _exceptionType = "java/lang/IllegalArgumentException";
1112 _exceptionMessage = "offset < 0";
1113 goto exit;
1114 }
1115 _remaining = _env->GetArrayLength(params_ref) - offset;
1116 if (_remaining < bufSize) {
1117 _exception = 1;
1118 _exceptionType = "java/lang/IllegalArgumentException";
1119 _exceptionMessage = "length - offset < bufSize < needed";
1120 goto exit;
1121 }
1122 params_base = (GLfloat *)
1123 _env->GetFloatArrayElements(params_ref, (jboolean *)0);
1124 params = params_base + offset;
1125
1126 glGetnUniformfv(
1127 (GLuint)program,
1128 (GLint)location,
1129 (GLsizei)bufSize,
1130 (GLfloat *)params
1131 );
1132
1133exit:
1134 if (params_base) {
1135 _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
1136 _exception ? JNI_ABORT: 0);
1137 }
1138 if (_exception) {
1139 jniThrowException(_env, _exceptionType, _exceptionMessage);
1140 }
1141}
1142
1143/* void glGetnUniformfv ( GLuint program, GLint location, GLsizei bufSize, GLfloat *params ) */
1144static void
1145android_glGetnUniformfv__IIILjava_nio_FloatBuffer_2
1146 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) {
1147 jint _exception = 0;
1148 const char * _exceptionType = NULL;
1149 const char * _exceptionMessage = NULL;
1150 jfloatArray _array = (jfloatArray) 0;
1151 jint _bufferOffset = (jint) 0;
1152 jint _remaining;
1153 GLfloat *params = (GLfloat *) 0;
1154
Romain Guy84cac202016-12-05 12:26:02 -08001155 if (!params_buf) {
1156 _exception = 1;
1157 _exceptionType = "java/lang/IllegalArgumentException";
1158 _exceptionMessage = "params == null";
1159 goto exit;
1160 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001161 params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1162 if (_remaining < bufSize) {
1163 _exception = 1;
1164 _exceptionType = "java/lang/IllegalArgumentException";
1165 _exceptionMessage = "remaining() < bufSize < needed";
1166 goto exit;
1167 }
1168 if (params == NULL) {
1169 char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
1170 params = (GLfloat *) (_paramsBase + _bufferOffset);
1171 }
1172 glGetnUniformfv(
1173 (GLuint)program,
1174 (GLint)location,
1175 (GLsizei)bufSize,
1176 (GLfloat *)params
1177 );
1178
1179exit:
1180 if (_array) {
1181 _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0);
1182 }
1183 if (_exception) {
1184 jniThrowException(_env, _exceptionType, _exceptionMessage);
1185 }
1186}
1187
1188/* void glGetnUniformiv ( GLuint program, GLint location, GLsizei bufSize, GLint *params ) */
1189static void
1190android_glGetnUniformiv__III_3II
1191 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jintArray params_ref, jint offset) {
1192 jint _exception = 0;
1193 const char * _exceptionType = NULL;
1194 const char * _exceptionMessage = NULL;
1195 GLint *params_base = (GLint *) 0;
1196 jint _remaining;
1197 GLint *params = (GLint *) 0;
1198
1199 if (!params_ref) {
1200 _exception = 1;
1201 _exceptionType = "java/lang/IllegalArgumentException";
1202 _exceptionMessage = "params == null";
1203 goto exit;
1204 }
1205 if (offset < 0) {
1206 _exception = 1;
1207 _exceptionType = "java/lang/IllegalArgumentException";
1208 _exceptionMessage = "offset < 0";
1209 goto exit;
1210 }
1211 _remaining = _env->GetArrayLength(params_ref) - offset;
1212 if (_remaining < bufSize) {
1213 _exception = 1;
1214 _exceptionType = "java/lang/IllegalArgumentException";
1215 _exceptionMessage = "length - offset < bufSize < needed";
1216 goto exit;
1217 }
1218 params_base = (GLint *)
1219 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1220 params = params_base + offset;
1221
1222 glGetnUniformiv(
1223 (GLuint)program,
1224 (GLint)location,
1225 (GLsizei)bufSize,
1226 (GLint *)params
1227 );
1228
1229exit:
1230 if (params_base) {
1231 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1232 _exception ? JNI_ABORT: 0);
1233 }
1234 if (_exception) {
1235 jniThrowException(_env, _exceptionType, _exceptionMessage);
1236 }
1237}
1238
1239/* void glGetnUniformiv ( GLuint program, GLint location, GLsizei bufSize, GLint *params ) */
1240static void
1241android_glGetnUniformiv__IIILjava_nio_IntBuffer_2
1242 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) {
1243 jint _exception = 0;
1244 const char * _exceptionType = NULL;
1245 const char * _exceptionMessage = NULL;
1246 jintArray _array = (jintArray) 0;
1247 jint _bufferOffset = (jint) 0;
1248 jint _remaining;
1249 GLint *params = (GLint *) 0;
1250
Romain Guy84cac202016-12-05 12:26:02 -08001251 if (!params_buf) {
1252 _exception = 1;
1253 _exceptionType = "java/lang/IllegalArgumentException";
1254 _exceptionMessage = "params == null";
1255 goto exit;
1256 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001257 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1258 if (_remaining < bufSize) {
1259 _exception = 1;
1260 _exceptionType = "java/lang/IllegalArgumentException";
1261 _exceptionMessage = "remaining() < bufSize < needed";
1262 goto exit;
1263 }
1264 if (params == NULL) {
1265 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1266 params = (GLint *) (_paramsBase + _bufferOffset);
1267 }
1268 glGetnUniformiv(
1269 (GLuint)program,
1270 (GLint)location,
1271 (GLsizei)bufSize,
1272 (GLint *)params
1273 );
1274
1275exit:
1276 if (_array) {
1277 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1278 }
1279 if (_exception) {
1280 jniThrowException(_env, _exceptionType, _exceptionMessage);
1281 }
1282}
1283
1284/* void glGetnUniformuiv ( GLuint program, GLint location, GLsizei bufSize, GLuint *params ) */
1285static void
1286android_glGetnUniformuiv__III_3II
1287 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jintArray params_ref, jint offset) {
1288 jint _exception = 0;
1289 const char * _exceptionType = NULL;
1290 const char * _exceptionMessage = NULL;
1291 GLuint *params_base = (GLuint *) 0;
1292 jint _remaining;
1293 GLuint *params = (GLuint *) 0;
1294
1295 if (!params_ref) {
1296 _exception = 1;
1297 _exceptionType = "java/lang/IllegalArgumentException";
1298 _exceptionMessage = "params == null";
1299 goto exit;
1300 }
1301 if (offset < 0) {
1302 _exception = 1;
1303 _exceptionType = "java/lang/IllegalArgumentException";
1304 _exceptionMessage = "offset < 0";
1305 goto exit;
1306 }
1307 _remaining = _env->GetArrayLength(params_ref) - offset;
1308 if (_remaining < bufSize) {
1309 _exception = 1;
1310 _exceptionType = "java/lang/IllegalArgumentException";
1311 _exceptionMessage = "length - offset < bufSize < needed";
1312 goto exit;
1313 }
1314 params_base = (GLuint *)
1315 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1316 params = params_base + offset;
1317
1318 glGetnUniformuiv(
1319 (GLuint)program,
1320 (GLint)location,
1321 (GLsizei)bufSize,
1322 (GLuint *)params
1323 );
1324
1325exit:
1326 if (params_base) {
1327 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1328 _exception ? JNI_ABORT: 0);
1329 }
1330 if (_exception) {
1331 jniThrowException(_env, _exceptionType, _exceptionMessage);
1332 }
1333}
1334
1335/* void glGetnUniformuiv ( GLuint program, GLint location, GLsizei bufSize, GLuint *params ) */
1336static void
1337android_glGetnUniformuiv__IIILjava_nio_IntBuffer_2
1338 (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) {
1339 jint _exception = 0;
1340 const char * _exceptionType = NULL;
1341 const char * _exceptionMessage = NULL;
1342 jintArray _array = (jintArray) 0;
1343 jint _bufferOffset = (jint) 0;
1344 jint _remaining;
1345 GLuint *params = (GLuint *) 0;
1346
Romain Guy84cac202016-12-05 12:26:02 -08001347 if (!params_buf) {
1348 _exception = 1;
1349 _exceptionType = "java/lang/IllegalArgumentException";
1350 _exceptionMessage = "params == null";
1351 goto exit;
1352 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001353 params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1354 if (_remaining < bufSize) {
1355 _exception = 1;
1356 _exceptionType = "java/lang/IllegalArgumentException";
1357 _exceptionMessage = "remaining() < bufSize < needed";
1358 goto exit;
1359 }
1360 if (params == NULL) {
1361 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1362 params = (GLuint *) (_paramsBase + _bufferOffset);
1363 }
1364 glGetnUniformuiv(
1365 (GLuint)program,
1366 (GLint)location,
1367 (GLsizei)bufSize,
1368 (GLuint *)params
1369 );
1370
1371exit:
1372 if (_array) {
1373 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1374 }
1375 if (_exception) {
1376 jniThrowException(_env, _exceptionType, _exceptionMessage);
1377 }
1378}
1379
1380/* void glMinSampleShading ( GLfloat value ) */
1381static void
1382android_glMinSampleShading__F
1383 (JNIEnv *_env, jobject _this, jfloat value) {
1384 glMinSampleShading(
1385 (GLfloat)value
1386 );
1387}
1388
1389/* void glPatchParameteri ( GLenum pname, GLint value ) */
1390static void
1391android_glPatchParameteri__II
1392 (JNIEnv *_env, jobject _this, jint pname, jint value) {
1393 glPatchParameteri(
1394 (GLenum)pname,
1395 (GLint)value
1396 );
1397}
1398
1399/* void glTexParameterIiv ( GLenum target, GLenum pname, const GLint *params ) */
1400static void
1401android_glTexParameterIiv__II_3II
1402 (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
1403 jint _exception = 0;
1404 const char * _exceptionType = NULL;
1405 const char * _exceptionMessage = NULL;
1406 GLint *params_base = (GLint *) 0;
1407 jint _remaining;
1408 GLint *params = (GLint *) 0;
1409
1410 if (!params_ref) {
1411 _exception = 1;
1412 _exceptionType = "java/lang/IllegalArgumentException";
1413 _exceptionMessage = "params == null";
1414 goto exit;
1415 }
1416 if (offset < 0) {
1417 _exception = 1;
1418 _exceptionType = "java/lang/IllegalArgumentException";
1419 _exceptionMessage = "offset < 0";
1420 goto exit;
1421 }
1422 _remaining = _env->GetArrayLength(params_ref) - offset;
1423 params_base = (GLint *)
1424 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1425 params = params_base + offset;
1426
1427 glTexParameterIiv(
1428 (GLenum)target,
1429 (GLenum)pname,
1430 (GLint *)params
1431 );
1432
1433exit:
1434 if (params_base) {
1435 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1436 JNI_ABORT);
1437 }
1438 if (_exception) {
1439 jniThrowException(_env, _exceptionType, _exceptionMessage);
1440 }
1441}
1442
1443/* void glTexParameterIiv ( GLenum target, GLenum pname, const GLint *params ) */
1444static void
1445android_glTexParameterIiv__IILjava_nio_IntBuffer_2
1446 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001447 jint _exception = 0;
1448 const char * _exceptionType = NULL;
1449 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001450 jintArray _array = (jintArray) 0;
1451 jint _bufferOffset = (jint) 0;
1452 jint _remaining;
1453 GLint *params = (GLint *) 0;
1454
Romain Guy84cac202016-12-05 12:26:02 -08001455 if (!params_buf) {
1456 _exception = 1;
1457 _exceptionType = "java/lang/IllegalArgumentException";
1458 _exceptionMessage = "params == null";
1459 goto exit;
1460 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001461 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1462 if (params == NULL) {
1463 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1464 params = (GLint *) (_paramsBase + _bufferOffset);
1465 }
1466 glTexParameterIiv(
1467 (GLenum)target,
1468 (GLenum)pname,
1469 (GLint *)params
1470 );
Romain Guy84cac202016-12-05 12:26:02 -08001471
1472exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001473 if (_array) {
1474 _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
1475 }
Romain Guy84cac202016-12-05 12:26:02 -08001476 if (_exception) {
1477 jniThrowException(_env, _exceptionType, _exceptionMessage);
1478 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001479}
1480
1481/* void glTexParameterIuiv ( GLenum target, GLenum pname, const GLuint *params ) */
1482static void
1483android_glTexParameterIuiv__II_3II
1484 (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
1485 jint _exception = 0;
1486 const char * _exceptionType = NULL;
1487 const char * _exceptionMessage = NULL;
1488 GLuint *params_base = (GLuint *) 0;
1489 jint _remaining;
1490 GLuint *params = (GLuint *) 0;
1491
1492 if (!params_ref) {
1493 _exception = 1;
1494 _exceptionType = "java/lang/IllegalArgumentException";
1495 _exceptionMessage = "params == null";
1496 goto exit;
1497 }
1498 if (offset < 0) {
1499 _exception = 1;
1500 _exceptionType = "java/lang/IllegalArgumentException";
1501 _exceptionMessage = "offset < 0";
1502 goto exit;
1503 }
1504 _remaining = _env->GetArrayLength(params_ref) - offset;
1505 params_base = (GLuint *)
1506 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1507 params = params_base + offset;
1508
1509 glTexParameterIuiv(
1510 (GLenum)target,
1511 (GLenum)pname,
1512 (GLuint *)params
1513 );
1514
1515exit:
1516 if (params_base) {
1517 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1518 JNI_ABORT);
1519 }
1520 if (_exception) {
1521 jniThrowException(_env, _exceptionType, _exceptionMessage);
1522 }
1523}
1524
1525/* void glTexParameterIuiv ( GLenum target, GLenum pname, const GLuint *params ) */
1526static void
1527android_glTexParameterIuiv__IILjava_nio_IntBuffer_2
1528 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001529 jint _exception = 0;
1530 const char * _exceptionType = NULL;
1531 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001532 jintArray _array = (jintArray) 0;
1533 jint _bufferOffset = (jint) 0;
1534 jint _remaining;
1535 GLuint *params = (GLuint *) 0;
1536
Romain Guy84cac202016-12-05 12:26:02 -08001537 if (!params_buf) {
1538 _exception = 1;
1539 _exceptionType = "java/lang/IllegalArgumentException";
1540 _exceptionMessage = "params == null";
1541 goto exit;
1542 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001543 params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1544 if (params == NULL) {
1545 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1546 params = (GLuint *) (_paramsBase + _bufferOffset);
1547 }
1548 glTexParameterIuiv(
1549 (GLenum)target,
1550 (GLenum)pname,
1551 (GLuint *)params
1552 );
Romain Guy84cac202016-12-05 12:26:02 -08001553
1554exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001555 if (_array) {
1556 _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
1557 }
Romain Guy84cac202016-12-05 12:26:02 -08001558 if (_exception) {
1559 jniThrowException(_env, _exceptionType, _exceptionMessage);
1560 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001561}
1562
1563/* void glGetTexParameterIiv ( GLenum target, GLenum pname, GLint *params ) */
1564static void
1565android_glGetTexParameterIiv__II_3II
1566 (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
1567 jint _exception = 0;
1568 const char * _exceptionType = NULL;
1569 const char * _exceptionMessage = NULL;
1570 GLint *params_base = (GLint *) 0;
1571 jint _remaining;
1572 GLint *params = (GLint *) 0;
1573
1574 if (!params_ref) {
1575 _exception = 1;
1576 _exceptionType = "java/lang/IllegalArgumentException";
1577 _exceptionMessage = "params == null";
1578 goto exit;
1579 }
1580 if (offset < 0) {
1581 _exception = 1;
1582 _exceptionType = "java/lang/IllegalArgumentException";
1583 _exceptionMessage = "offset < 0";
1584 goto exit;
1585 }
1586 _remaining = _env->GetArrayLength(params_ref) - offset;
1587 params_base = (GLint *)
1588 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1589 params = params_base + offset;
1590
1591 glGetTexParameterIiv(
1592 (GLenum)target,
1593 (GLenum)pname,
1594 (GLint *)params
1595 );
1596
1597exit:
1598 if (params_base) {
1599 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1600 _exception ? JNI_ABORT: 0);
1601 }
1602 if (_exception) {
1603 jniThrowException(_env, _exceptionType, _exceptionMessage);
1604 }
1605}
1606
1607/* void glGetTexParameterIiv ( GLenum target, GLenum pname, GLint *params ) */
1608static void
1609android_glGetTexParameterIiv__IILjava_nio_IntBuffer_2
1610 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001611 jint _exception = 0;
1612 const char * _exceptionType = NULL;
1613 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001614 jintArray _array = (jintArray) 0;
1615 jint _bufferOffset = (jint) 0;
1616 jint _remaining;
1617 GLint *params = (GLint *) 0;
1618
Romain Guy84cac202016-12-05 12:26:02 -08001619 if (!params_buf) {
1620 _exception = 1;
1621 _exceptionType = "java/lang/IllegalArgumentException";
1622 _exceptionMessage = "params == null";
1623 goto exit;
1624 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001625 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1626 if (params == NULL) {
1627 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1628 params = (GLint *) (_paramsBase + _bufferOffset);
1629 }
1630 glGetTexParameterIiv(
1631 (GLenum)target,
1632 (GLenum)pname,
1633 (GLint *)params
1634 );
Romain Guy84cac202016-12-05 12:26:02 -08001635
1636exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001637 if (_array) {
Romain Guy84cac202016-12-05 12:26:02 -08001638 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1639 }
1640 if (_exception) {
1641 jniThrowException(_env, _exceptionType, _exceptionMessage);
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001642 }
1643}
1644
1645/* void glGetTexParameterIuiv ( GLenum target, GLenum pname, GLuint *params ) */
1646static void
1647android_glGetTexParameterIuiv__II_3II
1648 (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
1649 jint _exception = 0;
1650 const char * _exceptionType = NULL;
1651 const char * _exceptionMessage = NULL;
1652 GLuint *params_base = (GLuint *) 0;
1653 jint _remaining;
1654 GLuint *params = (GLuint *) 0;
1655
1656 if (!params_ref) {
1657 _exception = 1;
1658 _exceptionType = "java/lang/IllegalArgumentException";
1659 _exceptionMessage = "params == null";
1660 goto exit;
1661 }
1662 if (offset < 0) {
1663 _exception = 1;
1664 _exceptionType = "java/lang/IllegalArgumentException";
1665 _exceptionMessage = "offset < 0";
1666 goto exit;
1667 }
1668 _remaining = _env->GetArrayLength(params_ref) - offset;
1669 params_base = (GLuint *)
1670 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1671 params = params_base + offset;
1672
1673 glGetTexParameterIuiv(
1674 (GLenum)target,
1675 (GLenum)pname,
1676 (GLuint *)params
1677 );
1678
1679exit:
1680 if (params_base) {
1681 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1682 _exception ? JNI_ABORT: 0);
1683 }
1684 if (_exception) {
1685 jniThrowException(_env, _exceptionType, _exceptionMessage);
1686 }
1687}
1688
1689/* void glGetTexParameterIuiv ( GLenum target, GLenum pname, GLuint *params ) */
1690static void
1691android_glGetTexParameterIuiv__IILjava_nio_IntBuffer_2
1692 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001693 jint _exception = 0;
1694 const char * _exceptionType = NULL;
1695 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001696 jintArray _array = (jintArray) 0;
1697 jint _bufferOffset = (jint) 0;
1698 jint _remaining;
1699 GLuint *params = (GLuint *) 0;
1700
Romain Guy84cac202016-12-05 12:26:02 -08001701 if (!params_buf) {
1702 _exception = 1;
1703 _exceptionType = "java/lang/IllegalArgumentException";
1704 _exceptionMessage = "params == null";
1705 goto exit;
1706 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001707 params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1708 if (params == NULL) {
1709 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1710 params = (GLuint *) (_paramsBase + _bufferOffset);
1711 }
1712 glGetTexParameterIuiv(
1713 (GLenum)target,
1714 (GLenum)pname,
1715 (GLuint *)params
1716 );
Romain Guy84cac202016-12-05 12:26:02 -08001717
1718exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001719 if (_array) {
Romain Guy84cac202016-12-05 12:26:02 -08001720 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1721 }
1722 if (_exception) {
1723 jniThrowException(_env, _exceptionType, _exceptionMessage);
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001724 }
1725}
1726
1727/* void glSamplerParameterIiv ( GLuint sampler, GLenum pname, const GLint *param ) */
1728static void
1729android_glSamplerParameterIiv__II_3II
1730 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) {
1731 jint _exception = 0;
1732 const char * _exceptionType = NULL;
1733 const char * _exceptionMessage = NULL;
1734 GLint *param_base = (GLint *) 0;
1735 jint _remaining;
1736 GLint *param = (GLint *) 0;
1737
1738 if (!param_ref) {
1739 _exception = 1;
1740 _exceptionType = "java/lang/IllegalArgumentException";
1741 _exceptionMessage = "param == null";
1742 goto exit;
1743 }
1744 if (offset < 0) {
1745 _exception = 1;
1746 _exceptionType = "java/lang/IllegalArgumentException";
1747 _exceptionMessage = "offset < 0";
1748 goto exit;
1749 }
1750 _remaining = _env->GetArrayLength(param_ref) - offset;
1751 param_base = (GLint *)
1752 _env->GetIntArrayElements(param_ref, (jboolean *)0);
1753 param = param_base + offset;
1754
1755 glSamplerParameterIiv(
1756 (GLuint)sampler,
1757 (GLenum)pname,
1758 (GLint *)param
1759 );
1760
1761exit:
1762 if (param_base) {
1763 _env->ReleaseIntArrayElements(param_ref, (jint*)param_base,
1764 JNI_ABORT);
1765 }
1766 if (_exception) {
1767 jniThrowException(_env, _exceptionType, _exceptionMessage);
1768 }
1769}
1770
1771/* void glSamplerParameterIiv ( GLuint sampler, GLenum pname, const GLint *param ) */
1772static void
1773android_glSamplerParameterIiv__IILjava_nio_IntBuffer_2
1774 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001775 jint _exception = 0;
1776 const char * _exceptionType = NULL;
1777 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001778 jintArray _array = (jintArray) 0;
1779 jint _bufferOffset = (jint) 0;
1780 jint _remaining;
1781 GLint *param = (GLint *) 0;
1782
Romain Guy84cac202016-12-05 12:26:02 -08001783 if (!param_buf) {
1784 _exception = 1;
1785 _exceptionType = "java/lang/IllegalArgumentException";
1786 _exceptionMessage = "param == null";
1787 goto exit;
1788 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001789 param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1790 if (param == NULL) {
1791 char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1792 param = (GLint *) (_paramBase + _bufferOffset);
1793 }
1794 glSamplerParameterIiv(
1795 (GLuint)sampler,
1796 (GLenum)pname,
1797 (GLint *)param
1798 );
Romain Guy84cac202016-12-05 12:26:02 -08001799
1800exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001801 if (_array) {
1802 _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT);
1803 }
Romain Guy84cac202016-12-05 12:26:02 -08001804 if (_exception) {
1805 jniThrowException(_env, _exceptionType, _exceptionMessage);
1806 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001807}
1808
1809/* void glSamplerParameterIuiv ( GLuint sampler, GLenum pname, const GLuint *param ) */
1810static void
1811android_glSamplerParameterIuiv__II_3II
1812 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) {
1813 jint _exception = 0;
1814 const char * _exceptionType = NULL;
1815 const char * _exceptionMessage = NULL;
1816 GLuint *param_base = (GLuint *) 0;
1817 jint _remaining;
1818 GLuint *param = (GLuint *) 0;
1819
1820 if (!param_ref) {
1821 _exception = 1;
1822 _exceptionType = "java/lang/IllegalArgumentException";
1823 _exceptionMessage = "param == null";
1824 goto exit;
1825 }
1826 if (offset < 0) {
1827 _exception = 1;
1828 _exceptionType = "java/lang/IllegalArgumentException";
1829 _exceptionMessage = "offset < 0";
1830 goto exit;
1831 }
1832 _remaining = _env->GetArrayLength(param_ref) - offset;
1833 param_base = (GLuint *)
1834 _env->GetIntArrayElements(param_ref, (jboolean *)0);
1835 param = param_base + offset;
1836
1837 glSamplerParameterIuiv(
1838 (GLuint)sampler,
1839 (GLenum)pname,
1840 (GLuint *)param
1841 );
1842
1843exit:
1844 if (param_base) {
1845 _env->ReleaseIntArrayElements(param_ref, (jint*)param_base,
1846 JNI_ABORT);
1847 }
1848 if (_exception) {
1849 jniThrowException(_env, _exceptionType, _exceptionMessage);
1850 }
1851}
1852
1853/* void glSamplerParameterIuiv ( GLuint sampler, GLenum pname, const GLuint *param ) */
1854static void
1855android_glSamplerParameterIuiv__IILjava_nio_IntBuffer_2
1856 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001857 jint _exception = 0;
1858 const char * _exceptionType = NULL;
1859 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001860 jintArray _array = (jintArray) 0;
1861 jint _bufferOffset = (jint) 0;
1862 jint _remaining;
1863 GLuint *param = (GLuint *) 0;
1864
Romain Guy84cac202016-12-05 12:26:02 -08001865 if (!param_buf) {
1866 _exception = 1;
1867 _exceptionType = "java/lang/IllegalArgumentException";
1868 _exceptionMessage = "param == null";
1869 goto exit;
1870 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001871 param = (GLuint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1872 if (param == NULL) {
1873 char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1874 param = (GLuint *) (_paramBase + _bufferOffset);
1875 }
1876 glSamplerParameterIuiv(
1877 (GLuint)sampler,
1878 (GLenum)pname,
1879 (GLuint *)param
1880 );
Romain Guy84cac202016-12-05 12:26:02 -08001881
1882exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001883 if (_array) {
1884 _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT);
1885 }
Romain Guy84cac202016-12-05 12:26:02 -08001886 if (_exception) {
1887 jniThrowException(_env, _exceptionType, _exceptionMessage);
1888 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001889}
1890
1891/* void glGetSamplerParameterIiv ( GLuint sampler, GLenum pname, GLint *params ) */
1892static void
1893android_glGetSamplerParameterIiv__II_3II
1894 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) {
1895 jint _exception = 0;
1896 const char * _exceptionType = NULL;
1897 const char * _exceptionMessage = NULL;
1898 GLint *params_base = (GLint *) 0;
1899 jint _remaining;
1900 GLint *params = (GLint *) 0;
1901
1902 if (!params_ref) {
1903 _exception = 1;
1904 _exceptionType = "java/lang/IllegalArgumentException";
1905 _exceptionMessage = "params == null";
1906 goto exit;
1907 }
1908 if (offset < 0) {
1909 _exception = 1;
1910 _exceptionType = "java/lang/IllegalArgumentException";
1911 _exceptionMessage = "offset < 0";
1912 goto exit;
1913 }
1914 _remaining = _env->GetArrayLength(params_ref) - offset;
1915 params_base = (GLint *)
1916 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1917 params = params_base + offset;
1918
1919 glGetSamplerParameterIiv(
1920 (GLuint)sampler,
1921 (GLenum)pname,
1922 (GLint *)params
1923 );
1924
1925exit:
1926 if (params_base) {
1927 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1928 _exception ? JNI_ABORT: 0);
1929 }
1930 if (_exception) {
1931 jniThrowException(_env, _exceptionType, _exceptionMessage);
1932 }
1933}
1934
1935/* void glGetSamplerParameterIiv ( GLuint sampler, GLenum pname, GLint *params ) */
1936static void
1937android_glGetSamplerParameterIiv__IILjava_nio_IntBuffer_2
1938 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08001939 jint _exception = 0;
1940 const char * _exceptionType = NULL;
1941 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001942 jintArray _array = (jintArray) 0;
1943 jint _bufferOffset = (jint) 0;
1944 jint _remaining;
1945 GLint *params = (GLint *) 0;
1946
Romain Guy84cac202016-12-05 12:26:02 -08001947 if (!params_buf) {
1948 _exception = 1;
1949 _exceptionType = "java/lang/IllegalArgumentException";
1950 _exceptionMessage = "params == null";
1951 goto exit;
1952 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001953 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1954 if (params == NULL) {
1955 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1956 params = (GLint *) (_paramsBase + _bufferOffset);
1957 }
1958 glGetSamplerParameterIiv(
1959 (GLuint)sampler,
1960 (GLenum)pname,
1961 (GLint *)params
1962 );
Romain Guy84cac202016-12-05 12:26:02 -08001963
1964exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001965 if (_array) {
Romain Guy84cac202016-12-05 12:26:02 -08001966 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
1967 }
1968 if (_exception) {
1969 jniThrowException(_env, _exceptionType, _exceptionMessage);
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07001970 }
1971}
1972
1973/* void glGetSamplerParameterIuiv ( GLuint sampler, GLenum pname, GLuint *params ) */
1974static void
1975android_glGetSamplerParameterIuiv__II_3II
1976 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) {
1977 jint _exception = 0;
1978 const char * _exceptionType = NULL;
1979 const char * _exceptionMessage = NULL;
1980 GLuint *params_base = (GLuint *) 0;
1981 jint _remaining;
1982 GLuint *params = (GLuint *) 0;
1983
1984 if (!params_ref) {
1985 _exception = 1;
1986 _exceptionType = "java/lang/IllegalArgumentException";
1987 _exceptionMessage = "params == null";
1988 goto exit;
1989 }
1990 if (offset < 0) {
1991 _exception = 1;
1992 _exceptionType = "java/lang/IllegalArgumentException";
1993 _exceptionMessage = "offset < 0";
1994 goto exit;
1995 }
1996 _remaining = _env->GetArrayLength(params_ref) - offset;
1997 params_base = (GLuint *)
1998 _env->GetIntArrayElements(params_ref, (jboolean *)0);
1999 params = params_base + offset;
2000
2001 glGetSamplerParameterIuiv(
2002 (GLuint)sampler,
2003 (GLenum)pname,
2004 (GLuint *)params
2005 );
2006
2007exit:
2008 if (params_base) {
2009 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
2010 _exception ? JNI_ABORT: 0);
2011 }
2012 if (_exception) {
2013 jniThrowException(_env, _exceptionType, _exceptionMessage);
2014 }
2015}
2016
2017/* void glGetSamplerParameterIuiv ( GLuint sampler, GLenum pname, GLuint *params ) */
2018static void
2019android_glGetSamplerParameterIuiv__IILjava_nio_IntBuffer_2
2020 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
Romain Guy84cac202016-12-05 12:26:02 -08002021 jint _exception = 0;
2022 const char * _exceptionType = NULL;
2023 const char * _exceptionMessage = NULL;
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07002024 jintArray _array = (jintArray) 0;
2025 jint _bufferOffset = (jint) 0;
2026 jint _remaining;
2027 GLuint *params = (GLuint *) 0;
2028
Romain Guy84cac202016-12-05 12:26:02 -08002029 if (!params_buf) {
2030 _exception = 1;
2031 _exceptionType = "java/lang/IllegalArgumentException";
2032 _exceptionMessage = "params == null";
2033 goto exit;
2034 }
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07002035 params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2036 if (params == NULL) {
2037 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
2038 params = (GLuint *) (_paramsBase + _bufferOffset);
2039 }
2040 glGetSamplerParameterIuiv(
2041 (GLuint)sampler,
2042 (GLenum)pname,
2043 (GLuint *)params
2044 );
Romain Guy84cac202016-12-05 12:26:02 -08002045
2046exit:
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07002047 if (_array) {
Romain Guy84cac202016-12-05 12:26:02 -08002048 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0);
2049 }
2050 if (_exception) {
2051 jniThrowException(_env, _exceptionType, _exceptionMessage);
Pablo Ceballos38c1a7e2015-10-30 10:34:30 -07002052 }
2053}
2054
2055/* void glTexBuffer ( GLenum target, GLenum internalformat, GLuint buffer ) */
2056static void
2057android_glTexBuffer__III
2058 (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer) {
2059 glTexBuffer(
2060 (GLenum)target,
2061 (GLenum)internalformat,
2062 (GLuint)buffer
2063 );
2064}
2065
2066/* void glTexBufferRange ( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size ) */
2067static void
2068android_glTexBufferRange__IIIII
2069 (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer, jint offset, jint size) {
2070 glTexBufferRange(
2071 (GLenum)target,
2072 (GLenum)internalformat,
2073 (GLuint)buffer,
2074 (GLintptr)offset,
2075 (GLsizeiptr)size
2076 );
2077}
2078
2079/* void glTexStorage3DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations ) */
2080static void
2081android_glTexStorage3DMultisample__IIIIIIZ
2082 (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jint depth, jboolean fixedsamplelocations) {
2083 glTexStorage3DMultisample(
2084 (GLenum)target,
2085 (GLsizei)samples,
2086 (GLenum)internalformat,
2087 (GLsizei)width,
2088 (GLsizei)height,
2089 (GLsizei)depth,
2090 (GLboolean)fixedsamplelocations
2091 );
2092}
2093
2094static const char *classPathName = "android/opengl/GLES32";
2095
2096static const JNINativeMethod methods[] = {
2097{"_nativeClassInit", "()V", (void*)nativeClassInit },
2098{"glBlendBarrier", "()V", (void *) android_glBlendBarrier__ },
2099{"glCopyImageSubData", "(IIIIIIIIIIIIIII)V", (void *) android_glCopyImageSubData__IIIIIIIIIIIIIII },
2100{"glDebugMessageControl", "(IIII[IIZ)V", (void *) android_glDebugMessageControl__IIII_3IIZ },
2101{"glDebugMessageControl", "(IIIILjava/nio/IntBuffer;Z)V", (void *) android_glDebugMessageControl__IIIILjava_nio_IntBuffer_2Z },
2102{"glDebugMessageInsert", "(IIIIILjava/lang/String;)V", (void *) android_glDebugMessageInsert__IIIIILjava_lang_String_2 },
2103{"glDebugMessageCallback", "(Landroid/opengl/GLES32$DebugProc;)V", (void *) android_glDebugMessageCallback },
2104{"glGetDebugMessageLog", "(II[II[II[II[II[II[BI)I", (void *) android_glGetDebugMessageLog__II_3II_3II_3II_3II_3II_3BI },
2105{"glGetDebugMessageLog", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I", (void *) android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 },
2106{"glGetDebugMessageLog", "(I[II[II[II[II)[Ljava/lang/String;", (void *) android_glGetDebugMessageLog__I_3II_3II_3II_3II },
2107{"glGetDebugMessageLog", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;", (void *) android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
2108{"glPushDebugGroup", "(IIILjava/lang/String;)V", (void *) android_glPushDebugGroup__IIILjava_lang_String_2 },
2109{"glPopDebugGroup", "()V", (void *) android_glPopDebugGroup__ },
2110{"glObjectLabel", "(IIILjava/lang/String;)V", (void *) android_glObjectLabel__IIILjava_lang_String_2 },
2111{"glGetObjectLabel", "(II)Ljava/lang/String;", (void *) android_glGetObjectLabel },
2112{"glObjectPtrLabel", "(JLjava/lang/String;)V", (void *) android_glObjectPtrLabel },
2113{"glGetObjectPtrLabel", "(J)Ljava/lang/String;", (void *) android_glGetObjectPtrLabel },
2114{"glGetPointerv", "(I)J", (void *) android_glGetPointerv },
2115{"glEnablei", "(II)V", (void *) android_glEnablei__II },
2116{"glDisablei", "(II)V", (void *) android_glDisablei__II },
2117{"glBlendEquationi", "(II)V", (void *) android_glBlendEquationi__II },
2118{"glBlendEquationSeparatei", "(III)V", (void *) android_glBlendEquationSeparatei__III },
2119{"glBlendFunci", "(III)V", (void *) android_glBlendFunci__III },
2120{"glBlendFuncSeparatei", "(IIIII)V", (void *) android_glBlendFuncSeparatei__IIIII },
2121{"glColorMaski", "(IZZZZ)V", (void *) android_glColorMaski__IZZZZ },
2122{"glIsEnabledi", "(II)Z", (void *) android_glIsEnabledi__II },
2123{"glDrawElementsBaseVertex", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsBaseVertex__IIILjava_nio_Buffer_2I },
2124{"glDrawRangeElementsBaseVertex", "(IIIIILjava/nio/Buffer;I)V", (void *) android_glDrawRangeElementsBaseVertex__IIIIILjava_nio_Buffer_2I },
2125{"glDrawElementsInstancedBaseVertex", "(IIILjava/nio/Buffer;II)V", (void *) android_glDrawElementsInstancedBaseVertex__IIILjava_nio_Buffer_2II },
2126{"glDrawElementsInstancedBaseVertex", "(IIIIII)V", (void *) android_glDrawElementsInstancedBaseVertex__IIIIII },
2127{"glFramebufferTexture", "(IIII)V", (void *) android_glFramebufferTexture__IIII },
2128{"glPrimitiveBoundingBox", "(FFFFFFFF)V", (void *) android_glPrimitiveBoundingBox__FFFFFFFF },
2129{"glGetGraphicsResetStatus", "()I", (void *) android_glGetGraphicsResetStatus__ },
2130{"glReadnPixels", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glReadnPixels__IIIIIIILjava_nio_Buffer_2 },
2131{"glGetnUniformfv", "(III[FI)V", (void *) android_glGetnUniformfv__III_3FI },
2132{"glGetnUniformfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetnUniformfv__IIILjava_nio_FloatBuffer_2 },
2133{"glGetnUniformiv", "(III[II)V", (void *) android_glGetnUniformiv__III_3II },
2134{"glGetnUniformiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetnUniformiv__IIILjava_nio_IntBuffer_2 },
2135{"glGetnUniformuiv", "(III[II)V", (void *) android_glGetnUniformuiv__III_3II },
2136{"glGetnUniformuiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetnUniformuiv__IIILjava_nio_IntBuffer_2 },
2137{"glMinSampleShading", "(F)V", (void *) android_glMinSampleShading__F },
2138{"glPatchParameteri", "(II)V", (void *) android_glPatchParameteri__II },
2139{"glTexParameterIiv", "(II[II)V", (void *) android_glTexParameterIiv__II_3II },
2140{"glTexParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIiv__IILjava_nio_IntBuffer_2 },
2141{"glTexParameterIuiv", "(II[II)V", (void *) android_glTexParameterIuiv__II_3II },
2142{"glTexParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIuiv__IILjava_nio_IntBuffer_2 },
2143{"glGetTexParameterIiv", "(II[II)V", (void *) android_glGetTexParameterIiv__II_3II },
2144{"glGetTexParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIiv__IILjava_nio_IntBuffer_2 },
2145{"glGetTexParameterIuiv", "(II[II)V", (void *) android_glGetTexParameterIuiv__II_3II },
2146{"glGetTexParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIuiv__IILjava_nio_IntBuffer_2 },
2147{"glSamplerParameterIiv", "(II[II)V", (void *) android_glSamplerParameterIiv__II_3II },
2148{"glSamplerParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIiv__IILjava_nio_IntBuffer_2 },
2149{"glSamplerParameterIuiv", "(II[II)V", (void *) android_glSamplerParameterIuiv__II_3II },
2150{"glSamplerParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIuiv__IILjava_nio_IntBuffer_2 },
2151{"glGetSamplerParameterIiv", "(II[II)V", (void *) android_glGetSamplerParameterIiv__II_3II },
2152{"glGetSamplerParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIiv__IILjava_nio_IntBuffer_2 },
2153{"glGetSamplerParameterIuiv", "(II[II)V", (void *) android_glGetSamplerParameterIuiv__II_3II },
2154{"glGetSamplerParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIuiv__IILjava_nio_IntBuffer_2 },
2155{"glTexBuffer", "(III)V", (void *) android_glTexBuffer__III },
2156{"glTexBufferRange", "(IIIII)V", (void *) android_glTexBufferRange__IIIII },
2157{"glTexStorage3DMultisample", "(IIIIIIZ)V", (void *) android_glTexStorage3DMultisample__IIIIIIZ },
2158};
2159
2160int register_android_opengl_jni_GLES32(JNIEnv *_env)
2161{
2162 int err;
2163 err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
2164 return err;
2165}