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