blob: 081e470e2deb9d6072106e75db770e455272c942 [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);
297 _needed = getNeededCount(pname);
298 // if we didn't find this pname, we just assume the user passed
299 // an array of the right size -- this might happen with extensions
300 // or if we forget an enum here.
301 if (_needed>0 && _remaining < _needed) {
302 _exception = 1;
303 _exceptionType = "java/lang/IllegalArgumentException";
304 _exceptionMessage = "remaining() < needed";
305 goto exit;
306 }
307 if (params == NULL) {
308 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
309 params = (CTYPE *) (_paramsBase + _bufferOffset);
310 }
311 GET(
312 (GLenum)pname,
313 (CTYPE *)params
314 );
315
316exit:
317 if (_array) {
318 releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
319 }
320 if (_exception) {
321 jniThrowException(_env, _exceptionType, _exceptionMessage);
322 }
323}
324
325// --------------------------------------------------------------------------
326/* void glReadBuffer ( GLenum mode ) */
327static void
328android_glReadBuffer__I
329 (JNIEnv *_env, jobject _this, jint mode) {
330 glReadBuffer(
331 (GLenum)mode
332 );
333}
334
335/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) */
336static void
337android_glDrawRangeElements__IIIIILjava_nio_Buffer_2
338 (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf) {
339 jarray _array = (jarray) 0;
340 jint _bufferOffset = (jint) 0;
341 jint _remaining;
342 GLvoid *indices = (GLvoid *) 0;
343
344 indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
345 if (indices == NULL) {
346 char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
347 indices = (GLvoid *) (_indicesBase + _bufferOffset);
348 }
349 glDrawRangeElements(
350 (GLenum)mode,
351 (GLuint)start,
352 (GLuint)end,
353 (GLsizei)count,
354 (GLenum)type,
355 (GLvoid *)indices
356 );
357 if (_array) {
358 releasePointer(_env, _array, indices, JNI_FALSE);
359 }
360}
361
362/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLsizei offset ) */
363static void
364android_glDrawRangeElements__IIIIII
365 (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jint offset) {
366 glDrawRangeElements(
367 (GLenum)mode,
368 (GLuint)start,
369 (GLuint)end,
370 (GLsizei)count,
371 (GLenum)type,
372 (GLvoid *)offset
373 );
374}
375
376/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
377static void
378android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2
379 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jobject pixels_buf) {
380 jarray _array = (jarray) 0;
381 jint _bufferOffset = (jint) 0;
382 jint _remaining;
383 GLvoid *pixels = (GLvoid *) 0;
384
385 pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
386 if (pixels == NULL) {
387 char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
388 pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
389 }
390 glTexImage3D(
391 (GLenum)target,
392 (GLint)level,
393 (GLint)internalformat,
394 (GLsizei)width,
395 (GLsizei)height,
396 (GLsizei)depth,
397 (GLint)border,
398 (GLenum)format,
399 (GLenum)type,
400 (GLvoid *)pixels
401 );
402 if (_array) {
403 releasePointer(_env, _array, pixels, JNI_FALSE);
404 }
405}
406
407/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLsizei offset ) */
408static void
409android_glTexImage3D__IIIIIIIIII
410 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jint offset) {
411 glTexImage3D(
412 (GLenum)target,
413 (GLint)level,
414 (GLint)internalformat,
415 (GLsizei)width,
416 (GLsizei)height,
417 (GLsizei)depth,
418 (GLint)border,
419 (GLenum)format,
420 (GLenum)type,
421 (GLvoid *)offset
422 );
423}
424
425/* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels ) */
426static void
427android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2
428 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jobject pixels_buf) {
429 jarray _array = (jarray) 0;
430 jint _bufferOffset = (jint) 0;
431 jint _remaining;
432 GLvoid *pixels = (GLvoid *) 0;
433
434 pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
435 if (pixels == NULL) {
436 char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
437 pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
438 }
439 glTexSubImage3D(
440 (GLenum)target,
441 (GLint)level,
442 (GLint)xoffset,
443 (GLint)yoffset,
444 (GLint)zoffset,
445 (GLsizei)width,
446 (GLsizei)height,
447 (GLsizei)depth,
448 (GLenum)format,
449 (GLenum)type,
450 (GLvoid *)pixels
451 );
452 if (_array) {
453 releasePointer(_env, _array, pixels, JNI_FALSE);
454 }
455}
456
457/* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei offset ) */
458static void
459android_glTexSubImage3D__IIIIIIIIIII
460 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jint offset) {
461 glTexSubImage3D(
462 (GLenum)target,
463 (GLint)level,
464 (GLint)xoffset,
465 (GLint)yoffset,
466 (GLint)zoffset,
467 (GLsizei)width,
468 (GLsizei)height,
469 (GLsizei)depth,
470 (GLenum)format,
471 (GLenum)type,
472 (GLvoid *)offset
473 );
474}
475
476/* void glCopyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
477static void
478android_glCopyTexSubImage3D__IIIIIIIII
479 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) {
480 glCopyTexSubImage3D(
481 (GLenum)target,
482 (GLint)level,
483 (GLint)xoffset,
484 (GLint)yoffset,
485 (GLint)zoffset,
486 (GLint)x,
487 (GLint)y,
488 (GLsizei)width,
489 (GLsizei)height
490 );
491}
492
493/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) */
494static void
495android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2
496 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jobject data_buf) {
497 jarray _array = (jarray) 0;
498 jint _bufferOffset = (jint) 0;
499 jint _remaining;
500 GLvoid *data = (GLvoid *) 0;
501
502 data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
503 if (data == NULL) {
504 char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
505 data = (GLvoid *) (_dataBase + _bufferOffset);
506 }
507 glCompressedTexImage3D(
508 (GLenum)target,
509 (GLint)level,
510 (GLenum)internalformat,
511 (GLsizei)width,
512 (GLsizei)height,
513 (GLsizei)depth,
514 (GLint)border,
515 (GLsizei)imageSize,
516 (GLvoid *)data
517 );
518 if (_array) {
519 releasePointer(_env, _array, data, JNI_FALSE);
520 }
521}
522
523/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLsizei offset ) */
524static void
525android_glCompressedTexImage3D__IIIIIIIII
526 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jint offset) {
527 glCompressedTexImage3D(
528 (GLenum)target,
529 (GLint)level,
530 (GLenum)internalformat,
531 (GLsizei)width,
532 (GLsizei)height,
533 (GLsizei)depth,
534 (GLint)border,
535 (GLsizei)imageSize,
536 (GLvoid *)offset
537 );
538}
539
540/* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ) */
541static void
542android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2
543 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jobject data_buf) {
544 jarray _array = (jarray) 0;
545 jint _bufferOffset = (jint) 0;
546 jint _remaining;
547 GLvoid *data = (GLvoid *) 0;
548
549 data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
550 if (data == NULL) {
551 char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
552 data = (GLvoid *) (_dataBase + _bufferOffset);
553 }
554 glCompressedTexSubImage3D(
555 (GLenum)target,
556 (GLint)level,
557 (GLint)xoffset,
558 (GLint)yoffset,
559 (GLint)zoffset,
560 (GLsizei)width,
561 (GLsizei)height,
562 (GLsizei)depth,
563 (GLenum)format,
564 (GLsizei)imageSize,
565 (GLvoid *)data
566 );
567 if (_array) {
568 releasePointer(_env, _array, data, JNI_FALSE);
569 }
570}
571
572/* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLsizei offset ) */
573static void
574android_glCompressedTexSubImage3D__IIIIIIIIIII
575 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jint offset) {
576 glCompressedTexSubImage3D(
577 (GLenum)target,
578 (GLint)level,
579 (GLint)xoffset,
580 (GLint)yoffset,
581 (GLint)zoffset,
582 (GLsizei)width,
583 (GLsizei)height,
584 (GLsizei)depth,
585 (GLenum)format,
586 (GLsizei)imageSize,
587 (GLvoid *)offset
588 );
589}
590
591/* void glGenQueries ( GLsizei n, GLuint *ids ) */
592static void
593android_glGenQueries__I_3II
594 (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
595 jint _exception = 0;
596 const char * _exceptionType = NULL;
597 const char * _exceptionMessage = NULL;
598 GLuint *ids_base = (GLuint *) 0;
599 jint _remaining;
600 GLuint *ids = (GLuint *) 0;
601
602 if (!ids_ref) {
603 _exception = 1;
604 _exceptionType = "java/lang/IllegalArgumentException";
605 _exceptionMessage = "ids == null";
606 goto exit;
607 }
608 if (offset < 0) {
609 _exception = 1;
610 _exceptionType = "java/lang/IllegalArgumentException";
611 _exceptionMessage = "offset < 0";
612 goto exit;
613 }
614 _remaining = _env->GetArrayLength(ids_ref) - offset;
615 ids_base = (GLuint *)
616 _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
617 ids = ids_base + offset;
618
619 glGenQueries(
620 (GLsizei)n,
621 (GLuint *)ids
622 );
623
624exit:
625 if (ids_base) {
626 _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
627 _exception ? JNI_ABORT: 0);
628 }
629 if (_exception) {
630 jniThrowException(_env, _exceptionType, _exceptionMessage);
631 }
632}
633
634/* void glGenQueries ( GLsizei n, GLuint *ids ) */
635static void
636android_glGenQueries__ILjava_nio_IntBuffer_2
637 (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
638 jarray _array = (jarray) 0;
639 jint _bufferOffset = (jint) 0;
640 jint _remaining;
641 GLuint *ids = (GLuint *) 0;
642
643 ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
644 if (ids == NULL) {
645 char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
646 ids = (GLuint *) (_idsBase + _bufferOffset);
647 }
648 glGenQueries(
649 (GLsizei)n,
650 (GLuint *)ids
651 );
652 if (_array) {
653 releasePointer(_env, _array, ids, JNI_TRUE);
654 }
655}
656
657/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */
658static void
659android_glDeleteQueries__I_3II
660 (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
661 jint _exception = 0;
662 const char * _exceptionType = NULL;
663 const char * _exceptionMessage = NULL;
664 GLuint *ids_base = (GLuint *) 0;
665 jint _remaining;
666 GLuint *ids = (GLuint *) 0;
667
668 if (!ids_ref) {
669 _exception = 1;
670 _exceptionType = "java/lang/IllegalArgumentException";
671 _exceptionMessage = "ids == null";
672 goto exit;
673 }
674 if (offset < 0) {
675 _exception = 1;
676 _exceptionType = "java/lang/IllegalArgumentException";
677 _exceptionMessage = "offset < 0";
678 goto exit;
679 }
680 _remaining = _env->GetArrayLength(ids_ref) - offset;
681 ids_base = (GLuint *)
682 _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
683 ids = ids_base + offset;
684
685 glDeleteQueries(
686 (GLsizei)n,
687 (GLuint *)ids
688 );
689
690exit:
691 if (ids_base) {
692 _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
693 JNI_ABORT);
694 }
695 if (_exception) {
696 jniThrowException(_env, _exceptionType, _exceptionMessage);
697 }
698}
699
700/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */
701static void
702android_glDeleteQueries__ILjava_nio_IntBuffer_2
703 (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
704 jarray _array = (jarray) 0;
705 jint _bufferOffset = (jint) 0;
706 jint _remaining;
707 GLuint *ids = (GLuint *) 0;
708
709 ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
710 if (ids == NULL) {
711 char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
712 ids = (GLuint *) (_idsBase + _bufferOffset);
713 }
714 glDeleteQueries(
715 (GLsizei)n,
716 (GLuint *)ids
717 );
718 if (_array) {
719 releasePointer(_env, _array, ids, JNI_FALSE);
720 }
721}
722
723/* GLboolean glIsQuery ( GLuint id ) */
724static jboolean
725android_glIsQuery__I
726 (JNIEnv *_env, jobject _this, jint id) {
727 GLboolean _returnValue;
728 _returnValue = glIsQuery(
729 (GLuint)id
730 );
731 return (jboolean)_returnValue;
732}
733
734/* void glBeginQuery ( GLenum target, GLuint id ) */
735static void
736android_glBeginQuery__II
737 (JNIEnv *_env, jobject _this, jint target, jint id) {
738 glBeginQuery(
739 (GLenum)target,
740 (GLuint)id
741 );
742}
743
744/* void glEndQuery ( GLenum target ) */
745static void
746android_glEndQuery__I
747 (JNIEnv *_env, jobject _this, jint target) {
748 glEndQuery(
749 (GLenum)target
750 );
751}
752
753/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */
754static void
755android_glGetQueryiv__II_3II
756 (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
757 jint _exception = 0;
758 const char * _exceptionType = NULL;
759 const char * _exceptionMessage = NULL;
760 GLint *params_base = (GLint *) 0;
761 jint _remaining;
762 GLint *params = (GLint *) 0;
763
764 if (!params_ref) {
765 _exception = 1;
766 _exceptionType = "java/lang/IllegalArgumentException";
767 _exceptionMessage = "params == null";
768 goto exit;
769 }
770 if (offset < 0) {
771 _exception = 1;
772 _exceptionType = "java/lang/IllegalArgumentException";
773 _exceptionMessage = "offset < 0";
774 goto exit;
775 }
776 _remaining = _env->GetArrayLength(params_ref) - offset;
777 params_base = (GLint *)
778 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
779 params = params_base + offset;
780
781 glGetQueryiv(
782 (GLenum)target,
783 (GLenum)pname,
784 (GLint *)params
785 );
786
787exit:
788 if (params_base) {
789 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
790 _exception ? JNI_ABORT: 0);
791 }
792 if (_exception) {
793 jniThrowException(_env, _exceptionType, _exceptionMessage);
794 }
795}
796
797/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */
798static void
799android_glGetQueryiv__IILjava_nio_IntBuffer_2
800 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
801 jarray _array = (jarray) 0;
802 jint _bufferOffset = (jint) 0;
803 jint _remaining;
804 GLint *params = (GLint *) 0;
805
806 params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
807 if (params == NULL) {
808 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
809 params = (GLint *) (_paramsBase + _bufferOffset);
810 }
811 glGetQueryiv(
812 (GLenum)target,
813 (GLenum)pname,
814 (GLint *)params
815 );
816 if (_array) {
817 releasePointer(_env, _array, params, JNI_TRUE);
818 }
819}
820
821/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */
822static void
823android_glGetQueryObjectuiv__II_3II
824 (JNIEnv *_env, jobject _this, jint id, jint pname, jintArray params_ref, jint offset) {
825 jint _exception = 0;
826 const char * _exceptionType = NULL;
827 const char * _exceptionMessage = NULL;
828 GLuint *params_base = (GLuint *) 0;
829 jint _remaining;
830 GLuint *params = (GLuint *) 0;
831
832 if (!params_ref) {
833 _exception = 1;
834 _exceptionType = "java/lang/IllegalArgumentException";
835 _exceptionMessage = "params == null";
836 goto exit;
837 }
838 if (offset < 0) {
839 _exception = 1;
840 _exceptionType = "java/lang/IllegalArgumentException";
841 _exceptionMessage = "offset < 0";
842 goto exit;
843 }
844 _remaining = _env->GetArrayLength(params_ref) - offset;
845 params_base = (GLuint *)
846 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
847 params = params_base + offset;
848
849 glGetQueryObjectuiv(
850 (GLuint)id,
851 (GLenum)pname,
852 (GLuint *)params
853 );
854
855exit:
856 if (params_base) {
857 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
858 _exception ? JNI_ABORT: 0);
859 }
860 if (_exception) {
861 jniThrowException(_env, _exceptionType, _exceptionMessage);
862 }
863}
864
865/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */
866static void
867android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2
868 (JNIEnv *_env, jobject _this, jint id, jint pname, jobject params_buf) {
869 jarray _array = (jarray) 0;
870 jint _bufferOffset = (jint) 0;
871 jint _remaining;
872 GLuint *params = (GLuint *) 0;
873
874 params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
875 if (params == NULL) {
876 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
877 params = (GLuint *) (_paramsBase + _bufferOffset);
878 }
879 glGetQueryObjectuiv(
880 (GLuint)id,
881 (GLenum)pname,
882 (GLuint *)params
883 );
884 if (_array) {
885 releasePointer(_env, _array, params, JNI_TRUE);
886 }
887}
888
889/* GLboolean glUnmapBuffer ( GLenum target ) */
890static jboolean
891android_glUnmapBuffer__I
892 (JNIEnv *_env, jobject _this, jint target) {
893 GLboolean _returnValue;
894 _returnValue = glUnmapBuffer(
895 (GLenum)target
896 );
897 return (jboolean)_returnValue;
898}
899
900/* void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) */
901static jobject
902android_glGetBufferPointerv__II
903 (JNIEnv *_env, jobject _this, jint target, jint pname) {
904 GLint64 _mapLength;
905 GLvoid* _p;
906 glGetBufferParameteri64v((GLenum)target, GL_BUFFER_MAP_LENGTH, &_mapLength);
907 glGetBufferPointerv((GLenum)target, (GLenum)pname, &_p);
908 return _env->NewDirectByteBuffer(_p, _mapLength);
909}
910
911/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */
912static void
913android_glDrawBuffers__I_3II
914 (JNIEnv *_env, jobject _this, jint n, jintArray bufs_ref, jint offset) {
915 jint _exception = 0;
916 const char * _exceptionType = NULL;
917 const char * _exceptionMessage = NULL;
918 GLenum *bufs_base = (GLenum *) 0;
919 jint _remaining;
920 GLenum *bufs = (GLenum *) 0;
921
922 if (!bufs_ref) {
923 _exception = 1;
924 _exceptionType = "java/lang/IllegalArgumentException";
925 _exceptionMessage = "bufs == null";
926 goto exit;
927 }
928 if (offset < 0) {
929 _exception = 1;
930 _exceptionType = "java/lang/IllegalArgumentException";
931 _exceptionMessage = "offset < 0";
932 goto exit;
933 }
934 _remaining = _env->GetArrayLength(bufs_ref) - offset;
935 bufs_base = (GLenum *)
936 _env->GetPrimitiveArrayCritical(bufs_ref, (jboolean *)0);
937 bufs = bufs_base + offset;
938
939 glDrawBuffers(
940 (GLsizei)n,
941 (GLenum *)bufs
942 );
943
944exit:
945 if (bufs_base) {
946 _env->ReleasePrimitiveArrayCritical(bufs_ref, bufs_base,
947 JNI_ABORT);
948 }
949 if (_exception) {
950 jniThrowException(_env, _exceptionType, _exceptionMessage);
951 }
952}
953
954/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */
955static void
956android_glDrawBuffers__ILjava_nio_IntBuffer_2
957 (JNIEnv *_env, jobject _this, jint n, jobject bufs_buf) {
958 jarray _array = (jarray) 0;
959 jint _bufferOffset = (jint) 0;
960 jint _remaining;
961 GLenum *bufs = (GLenum *) 0;
962
963 bufs = (GLenum *)getPointer(_env, bufs_buf, &_array, &_remaining, &_bufferOffset);
964 if (bufs == NULL) {
965 char * _bufsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
966 bufs = (GLenum *) (_bufsBase + _bufferOffset);
967 }
968 glDrawBuffers(
969 (GLsizei)n,
970 (GLenum *)bufs
971 );
972 if (_array) {
973 releasePointer(_env, _array, bufs, JNI_FALSE);
974 }
975}
976
977/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
978static void
979android_glUniformMatrix2x3fv__IIZ_3FI
980 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
981 jint _exception = 0;
982 const char * _exceptionType = NULL;
983 const char * _exceptionMessage = NULL;
984 GLfloat *value_base = (GLfloat *) 0;
985 jint _remaining;
986 GLfloat *value = (GLfloat *) 0;
987
988 if (!value_ref) {
989 _exception = 1;
990 _exceptionType = "java/lang/IllegalArgumentException";
991 _exceptionMessage = "value == null";
992 goto exit;
993 }
994 if (offset < 0) {
995 _exception = 1;
996 _exceptionType = "java/lang/IllegalArgumentException";
997 _exceptionMessage = "offset < 0";
998 goto exit;
999 }
1000 _remaining = _env->GetArrayLength(value_ref) - offset;
1001 value_base = (GLfloat *)
1002 _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1003 value = value_base + offset;
1004
1005 glUniformMatrix2x3fv(
1006 (GLint)location,
1007 (GLsizei)count,
1008 (GLboolean)transpose,
1009 (GLfloat *)value
1010 );
1011
1012exit:
1013 if (value_base) {
1014 _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1015 JNI_ABORT);
1016 }
1017 if (_exception) {
1018 jniThrowException(_env, _exceptionType, _exceptionMessage);
1019 }
1020}
1021
1022/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1023static void
1024android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2
1025 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1026 jarray _array = (jarray) 0;
1027 jint _bufferOffset = (jint) 0;
1028 jint _remaining;
1029 GLfloat *value = (GLfloat *) 0;
1030
1031 value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1032 if (value == NULL) {
1033 char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1034 value = (GLfloat *) (_valueBase + _bufferOffset);
1035 }
1036 glUniformMatrix2x3fv(
1037 (GLint)location,
1038 (GLsizei)count,
1039 (GLboolean)transpose,
1040 (GLfloat *)value
1041 );
1042 if (_array) {
1043 releasePointer(_env, _array, value, JNI_FALSE);
1044 }
1045}
1046
1047/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1048static void
1049android_glUniformMatrix3x2fv__IIZ_3FI
1050 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1051 jint _exception = 0;
1052 const char * _exceptionType = NULL;
1053 const char * _exceptionMessage = NULL;
1054 GLfloat *value_base = (GLfloat *) 0;
1055 jint _remaining;
1056 GLfloat *value = (GLfloat *) 0;
1057
1058 if (!value_ref) {
1059 _exception = 1;
1060 _exceptionType = "java/lang/IllegalArgumentException";
1061 _exceptionMessage = "value == null";
1062 goto exit;
1063 }
1064 if (offset < 0) {
1065 _exception = 1;
1066 _exceptionType = "java/lang/IllegalArgumentException";
1067 _exceptionMessage = "offset < 0";
1068 goto exit;
1069 }
1070 _remaining = _env->GetArrayLength(value_ref) - offset;
1071 value_base = (GLfloat *)
1072 _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1073 value = value_base + offset;
1074
1075 glUniformMatrix3x2fv(
1076 (GLint)location,
1077 (GLsizei)count,
1078 (GLboolean)transpose,
1079 (GLfloat *)value
1080 );
1081
1082exit:
1083 if (value_base) {
1084 _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1085 JNI_ABORT);
1086 }
1087 if (_exception) {
1088 jniThrowException(_env, _exceptionType, _exceptionMessage);
1089 }
1090}
1091
1092/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1093static void
1094android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2
1095 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1096 jarray _array = (jarray) 0;
1097 jint _bufferOffset = (jint) 0;
1098 jint _remaining;
1099 GLfloat *value = (GLfloat *) 0;
1100
1101 value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1102 if (value == NULL) {
1103 char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1104 value = (GLfloat *) (_valueBase + _bufferOffset);
1105 }
1106 glUniformMatrix3x2fv(
1107 (GLint)location,
1108 (GLsizei)count,
1109 (GLboolean)transpose,
1110 (GLfloat *)value
1111 );
1112 if (_array) {
1113 releasePointer(_env, _array, value, JNI_FALSE);
1114 }
1115}
1116
1117/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1118static void
1119android_glUniformMatrix2x4fv__IIZ_3FI
1120 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1121 jint _exception = 0;
1122 const char * _exceptionType = NULL;
1123 const char * _exceptionMessage = NULL;
1124 GLfloat *value_base = (GLfloat *) 0;
1125 jint _remaining;
1126 GLfloat *value = (GLfloat *) 0;
1127
1128 if (!value_ref) {
1129 _exception = 1;
1130 _exceptionType = "java/lang/IllegalArgumentException";
1131 _exceptionMessage = "value == null";
1132 goto exit;
1133 }
1134 if (offset < 0) {
1135 _exception = 1;
1136 _exceptionType = "java/lang/IllegalArgumentException";
1137 _exceptionMessage = "offset < 0";
1138 goto exit;
1139 }
1140 _remaining = _env->GetArrayLength(value_ref) - offset;
1141 value_base = (GLfloat *)
1142 _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1143 value = value_base + offset;
1144
1145 glUniformMatrix2x4fv(
1146 (GLint)location,
1147 (GLsizei)count,
1148 (GLboolean)transpose,
1149 (GLfloat *)value
1150 );
1151
1152exit:
1153 if (value_base) {
1154 _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1155 JNI_ABORT);
1156 }
1157 if (_exception) {
1158 jniThrowException(_env, _exceptionType, _exceptionMessage);
1159 }
1160}
1161
1162/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1163static void
1164android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2
1165 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1166 jarray _array = (jarray) 0;
1167 jint _bufferOffset = (jint) 0;
1168 jint _remaining;
1169 GLfloat *value = (GLfloat *) 0;
1170
1171 value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1172 if (value == NULL) {
1173 char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1174 value = (GLfloat *) (_valueBase + _bufferOffset);
1175 }
1176 glUniformMatrix2x4fv(
1177 (GLint)location,
1178 (GLsizei)count,
1179 (GLboolean)transpose,
1180 (GLfloat *)value
1181 );
1182 if (_array) {
1183 releasePointer(_env, _array, value, JNI_FALSE);
1184 }
1185}
1186
1187/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1188static void
1189android_glUniformMatrix4x2fv__IIZ_3FI
1190 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1191 jint _exception = 0;
1192 const char * _exceptionType = NULL;
1193 const char * _exceptionMessage = NULL;
1194 GLfloat *value_base = (GLfloat *) 0;
1195 jint _remaining;
1196 GLfloat *value = (GLfloat *) 0;
1197
1198 if (!value_ref) {
1199 _exception = 1;
1200 _exceptionType = "java/lang/IllegalArgumentException";
1201 _exceptionMessage = "value == null";
1202 goto exit;
1203 }
1204 if (offset < 0) {
1205 _exception = 1;
1206 _exceptionType = "java/lang/IllegalArgumentException";
1207 _exceptionMessage = "offset < 0";
1208 goto exit;
1209 }
1210 _remaining = _env->GetArrayLength(value_ref) - offset;
1211 value_base = (GLfloat *)
1212 _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1213 value = value_base + offset;
1214
1215 glUniformMatrix4x2fv(
1216 (GLint)location,
1217 (GLsizei)count,
1218 (GLboolean)transpose,
1219 (GLfloat *)value
1220 );
1221
1222exit:
1223 if (value_base) {
1224 _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1225 JNI_ABORT);
1226 }
1227 if (_exception) {
1228 jniThrowException(_env, _exceptionType, _exceptionMessage);
1229 }
1230}
1231
1232/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1233static void
1234android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2
1235 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1236 jarray _array = (jarray) 0;
1237 jint _bufferOffset = (jint) 0;
1238 jint _remaining;
1239 GLfloat *value = (GLfloat *) 0;
1240
1241 value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1242 if (value == NULL) {
1243 char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1244 value = (GLfloat *) (_valueBase + _bufferOffset);
1245 }
1246 glUniformMatrix4x2fv(
1247 (GLint)location,
1248 (GLsizei)count,
1249 (GLboolean)transpose,
1250 (GLfloat *)value
1251 );
1252 if (_array) {
1253 releasePointer(_env, _array, value, JNI_FALSE);
1254 }
1255}
1256
1257/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1258static void
1259android_glUniformMatrix3x4fv__IIZ_3FI
1260 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1261 jint _exception = 0;
1262 const char * _exceptionType = NULL;
1263 const char * _exceptionMessage = NULL;
1264 GLfloat *value_base = (GLfloat *) 0;
1265 jint _remaining;
1266 GLfloat *value = (GLfloat *) 0;
1267
1268 if (!value_ref) {
1269 _exception = 1;
1270 _exceptionType = "java/lang/IllegalArgumentException";
1271 _exceptionMessage = "value == null";
1272 goto exit;
1273 }
1274 if (offset < 0) {
1275 _exception = 1;
1276 _exceptionType = "java/lang/IllegalArgumentException";
1277 _exceptionMessage = "offset < 0";
1278 goto exit;
1279 }
1280 _remaining = _env->GetArrayLength(value_ref) - offset;
1281 value_base = (GLfloat *)
1282 _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1283 value = value_base + offset;
1284
1285 glUniformMatrix3x4fv(
1286 (GLint)location,
1287 (GLsizei)count,
1288 (GLboolean)transpose,
1289 (GLfloat *)value
1290 );
1291
1292exit:
1293 if (value_base) {
1294 _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1295 JNI_ABORT);
1296 }
1297 if (_exception) {
1298 jniThrowException(_env, _exceptionType, _exceptionMessage);
1299 }
1300}
1301
1302/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1303static void
1304android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2
1305 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1306 jarray _array = (jarray) 0;
1307 jint _bufferOffset = (jint) 0;
1308 jint _remaining;
1309 GLfloat *value = (GLfloat *) 0;
1310
1311 value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1312 if (value == NULL) {
1313 char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1314 value = (GLfloat *) (_valueBase + _bufferOffset);
1315 }
1316 glUniformMatrix3x4fv(
1317 (GLint)location,
1318 (GLsizei)count,
1319 (GLboolean)transpose,
1320 (GLfloat *)value
1321 );
1322 if (_array) {
1323 releasePointer(_env, _array, value, JNI_FALSE);
1324 }
1325}
1326
1327/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1328static void
1329android_glUniformMatrix4x3fv__IIZ_3FI
1330 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
1331 jint _exception = 0;
1332 const char * _exceptionType = NULL;
1333 const char * _exceptionMessage = NULL;
1334 GLfloat *value_base = (GLfloat *) 0;
1335 jint _remaining;
1336 GLfloat *value = (GLfloat *) 0;
1337
1338 if (!value_ref) {
1339 _exception = 1;
1340 _exceptionType = "java/lang/IllegalArgumentException";
1341 _exceptionMessage = "value == null";
1342 goto exit;
1343 }
1344 if (offset < 0) {
1345 _exception = 1;
1346 _exceptionType = "java/lang/IllegalArgumentException";
1347 _exceptionMessage = "offset < 0";
1348 goto exit;
1349 }
1350 _remaining = _env->GetArrayLength(value_ref) - offset;
1351 value_base = (GLfloat *)
1352 _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
1353 value = value_base + offset;
1354
1355 glUniformMatrix4x3fv(
1356 (GLint)location,
1357 (GLsizei)count,
1358 (GLboolean)transpose,
1359 (GLfloat *)value
1360 );
1361
1362exit:
1363 if (value_base) {
1364 _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
1365 JNI_ABORT);
1366 }
1367 if (_exception) {
1368 jniThrowException(_env, _exceptionType, _exceptionMessage);
1369 }
1370}
1371
1372/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
1373static void
1374android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2
1375 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
1376 jarray _array = (jarray) 0;
1377 jint _bufferOffset = (jint) 0;
1378 jint _remaining;
1379 GLfloat *value = (GLfloat *) 0;
1380
1381 value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
1382 if (value == NULL) {
1383 char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1384 value = (GLfloat *) (_valueBase + _bufferOffset);
1385 }
1386 glUniformMatrix4x3fv(
1387 (GLint)location,
1388 (GLsizei)count,
1389 (GLboolean)transpose,
1390 (GLfloat *)value
1391 );
1392 if (_array) {
1393 releasePointer(_env, _array, value, JNI_FALSE);
1394 }
1395}
1396
1397/* void glBlitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) */
1398static void
1399android_glBlitFramebuffer__IIIIIIIIII
1400 (JNIEnv *_env, jobject _this, jint srcX0, jint srcY0, jint srcX1, jint srcY1, jint dstX0, jint dstY0, jint dstX1, jint dstY1, jint mask, jint filter) {
1401 glBlitFramebuffer(
1402 (GLint)srcX0,
1403 (GLint)srcY0,
1404 (GLint)srcX1,
1405 (GLint)srcY1,
1406 (GLint)dstX0,
1407 (GLint)dstY0,
1408 (GLint)dstX1,
1409 (GLint)dstY1,
1410 (GLbitfield)mask,
1411 (GLenum)filter
1412 );
1413}
1414
1415/* void glRenderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) */
1416static void
1417android_glRenderbufferStorageMultisample__IIIII
1418 (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height) {
1419 glRenderbufferStorageMultisample(
1420 (GLenum)target,
1421 (GLsizei)samples,
1422 (GLenum)internalformat,
1423 (GLsizei)width,
1424 (GLsizei)height
1425 );
1426}
1427
1428/* void glFramebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) */
1429static void
1430android_glFramebufferTextureLayer__IIIII
1431 (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level, jint layer) {
1432 glFramebufferTextureLayer(
1433 (GLenum)target,
1434 (GLenum)attachment,
1435 (GLuint)texture,
1436 (GLint)level,
1437 (GLint)layer
1438 );
1439}
1440
1441/* GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) */
1442static jobject
1443android_glMapBufferRange__IIII
1444 (JNIEnv *_env, jobject _this, jint target, jint offset, jint length, jint access) {
1445 GLvoid* _p = glMapBufferRange((GLenum)target,
1446 (GLintptr)offset, (GLsizeiptr)length, (GLbitfield)access);
1447 jobject _buf = (jobject)0;
1448 if (_p) {
1449 _buf = _env->NewDirectByteBuffer(_p, length);
1450 }
1451 return _buf;
1452}
1453
1454/* void glFlushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) */
1455static void
1456android_glFlushMappedBufferRange__III
1457 (JNIEnv *_env, jobject _this, jint target, jint offset, jint length) {
1458 glFlushMappedBufferRange(
1459 (GLenum)target,
1460 (GLintptr)offset,
1461 (GLsizeiptr)length
1462 );
1463}
1464
1465/* void glBindVertexArray ( GLuint array ) */
1466static void
1467android_glBindVertexArray__I
1468 (JNIEnv *_env, jobject _this, jint array) {
1469 glBindVertexArray(
1470 (GLuint)array
1471 );
1472}
1473
1474/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */
1475static void
1476android_glDeleteVertexArrays__I_3II
1477 (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) {
1478 jint _exception = 0;
1479 const char * _exceptionType = NULL;
1480 const char * _exceptionMessage = NULL;
1481 GLuint *arrays_base = (GLuint *) 0;
1482 jint _remaining;
1483 GLuint *arrays = (GLuint *) 0;
1484
1485 if (!arrays_ref) {
1486 _exception = 1;
1487 _exceptionType = "java/lang/IllegalArgumentException";
1488 _exceptionMessage = "arrays == null";
1489 goto exit;
1490 }
1491 if (offset < 0) {
1492 _exception = 1;
1493 _exceptionType = "java/lang/IllegalArgumentException";
1494 _exceptionMessage = "offset < 0";
1495 goto exit;
1496 }
1497 _remaining = _env->GetArrayLength(arrays_ref) - offset;
1498 arrays_base = (GLuint *)
1499 _env->GetPrimitiveArrayCritical(arrays_ref, (jboolean *)0);
1500 arrays = arrays_base + offset;
1501
1502 glDeleteVertexArrays(
1503 (GLsizei)n,
1504 (GLuint *)arrays
1505 );
1506
1507exit:
1508 if (arrays_base) {
1509 _env->ReleasePrimitiveArrayCritical(arrays_ref, arrays_base,
1510 JNI_ABORT);
1511 }
1512 if (_exception) {
1513 jniThrowException(_env, _exceptionType, _exceptionMessage);
1514 }
1515}
1516
1517/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */
1518static void
1519android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2
1520 (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) {
1521 jarray _array = (jarray) 0;
1522 jint _bufferOffset = (jint) 0;
1523 jint _remaining;
1524 GLuint *arrays = (GLuint *) 0;
1525
1526 arrays = (GLuint *)getPointer(_env, arrays_buf, &_array, &_remaining, &_bufferOffset);
1527 if (arrays == NULL) {
1528 char * _arraysBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1529 arrays = (GLuint *) (_arraysBase + _bufferOffset);
1530 }
1531 glDeleteVertexArrays(
1532 (GLsizei)n,
1533 (GLuint *)arrays
1534 );
1535 if (_array) {
1536 releasePointer(_env, _array, arrays, JNI_FALSE);
1537 }
1538}
1539
1540/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */
1541static void
1542android_glGenVertexArrays__I_3II
1543 (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) {
1544 jint _exception = 0;
1545 const char * _exceptionType = NULL;
1546 const char * _exceptionMessage = NULL;
1547 GLuint *arrays_base = (GLuint *) 0;
1548 jint _remaining;
1549 GLuint *arrays = (GLuint *) 0;
1550
1551 if (!arrays_ref) {
1552 _exception = 1;
1553 _exceptionType = "java/lang/IllegalArgumentException";
1554 _exceptionMessage = "arrays == null";
1555 goto exit;
1556 }
1557 if (offset < 0) {
1558 _exception = 1;
1559 _exceptionType = "java/lang/IllegalArgumentException";
1560 _exceptionMessage = "offset < 0";
1561 goto exit;
1562 }
1563 _remaining = _env->GetArrayLength(arrays_ref) - offset;
1564 arrays_base = (GLuint *)
1565 _env->GetPrimitiveArrayCritical(arrays_ref, (jboolean *)0);
1566 arrays = arrays_base + offset;
1567
1568 glGenVertexArrays(
1569 (GLsizei)n,
1570 (GLuint *)arrays
1571 );
1572
1573exit:
1574 if (arrays_base) {
1575 _env->ReleasePrimitiveArrayCritical(arrays_ref, arrays_base,
1576 _exception ? JNI_ABORT: 0);
1577 }
1578 if (_exception) {
1579 jniThrowException(_env, _exceptionType, _exceptionMessage);
1580 }
1581}
1582
1583/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */
1584static void
1585android_glGenVertexArrays__ILjava_nio_IntBuffer_2
1586 (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) {
1587 jarray _array = (jarray) 0;
1588 jint _bufferOffset = (jint) 0;
1589 jint _remaining;
1590 GLuint *arrays = (GLuint *) 0;
1591
1592 arrays = (GLuint *)getPointer(_env, arrays_buf, &_array, &_remaining, &_bufferOffset);
1593 if (arrays == NULL) {
1594 char * _arraysBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1595 arrays = (GLuint *) (_arraysBase + _bufferOffset);
1596 }
1597 glGenVertexArrays(
1598 (GLsizei)n,
1599 (GLuint *)arrays
1600 );
1601 if (_array) {
1602 releasePointer(_env, _array, arrays, JNI_TRUE);
1603 }
1604}
1605
1606/* GLboolean glIsVertexArray ( GLuint array ) */
1607static jboolean
1608android_glIsVertexArray__I
1609 (JNIEnv *_env, jobject _this, jint array) {
1610 GLboolean _returnValue;
1611 _returnValue = glIsVertexArray(
1612 (GLuint)array
1613 );
1614 return (jboolean)_returnValue;
1615}
1616
1617/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */
1618static void
1619android_glGetIntegeri_v__II_3II
1620 (JNIEnv *_env, jobject _this, jint target, jint index, jintArray data_ref, jint offset) {
1621 jint _exception = 0;
1622 const char * _exceptionType = NULL;
1623 const char * _exceptionMessage = NULL;
1624 GLint *data_base = (GLint *) 0;
1625 jint _remaining;
1626 GLint *data = (GLint *) 0;
1627
1628 if (!data_ref) {
1629 _exception = 1;
1630 _exceptionType = "java/lang/IllegalArgumentException";
1631 _exceptionMessage = "data == null";
1632 goto exit;
1633 }
1634 if (offset < 0) {
1635 _exception = 1;
1636 _exceptionType = "java/lang/IllegalArgumentException";
1637 _exceptionMessage = "offset < 0";
1638 goto exit;
1639 }
1640 _remaining = _env->GetArrayLength(data_ref) - offset;
1641 data_base = (GLint *)
1642 _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0);
1643 data = data_base + offset;
1644
1645 glGetIntegeri_v(
1646 (GLenum)target,
1647 (GLuint)index,
1648 (GLint *)data
1649 );
1650
1651exit:
1652 if (data_base) {
1653 _env->ReleasePrimitiveArrayCritical(data_ref, data_base,
1654 _exception ? JNI_ABORT: 0);
1655 }
1656 if (_exception) {
1657 jniThrowException(_env, _exceptionType, _exceptionMessage);
1658 }
1659}
1660
1661/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */
1662static void
1663android_glGetIntegeri_v__IILjava_nio_IntBuffer_2
1664 (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) {
1665 jarray _array = (jarray) 0;
1666 jint _bufferOffset = (jint) 0;
1667 jint _remaining;
1668 GLint *data = (GLint *) 0;
1669
1670 data = (GLint *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
1671 if (data == NULL) {
1672 char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
1673 data = (GLint *) (_dataBase + _bufferOffset);
1674 }
1675 glGetIntegeri_v(
1676 (GLenum)target,
1677 (GLuint)index,
1678 (GLint *)data
1679 );
1680 if (_array) {
1681 releasePointer(_env, _array, data, JNI_TRUE);
1682 }
1683}
1684
1685/* void glBeginTransformFeedback ( GLenum primitiveMode ) */
1686static void
1687android_glBeginTransformFeedback__I
1688 (JNIEnv *_env, jobject _this, jint primitiveMode) {
1689 glBeginTransformFeedback(
1690 (GLenum)primitiveMode
1691 );
1692}
1693
1694/* void glEndTransformFeedback ( void ) */
1695static void
1696android_glEndTransformFeedback__
1697 (JNIEnv *_env, jobject _this) {
1698 glEndTransformFeedback();
1699}
1700
1701/* void glBindBufferRange ( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) */
1702static void
1703android_glBindBufferRange__IIIII
1704 (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer, jint offset, jint size) {
1705 glBindBufferRange(
1706 (GLenum)target,
1707 (GLuint)index,
1708 (GLuint)buffer,
1709 (GLintptr)offset,
1710 (GLsizeiptr)size
1711 );
1712}
1713
1714/* void glBindBufferBase ( GLenum target, GLuint index, GLuint buffer ) */
1715static void
1716android_glBindBufferBase__III
1717 (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer) {
1718 glBindBufferBase(
1719 (GLenum)target,
1720 (GLuint)index,
1721 (GLuint)buffer
1722 );
1723}
1724
1725/* void glTransformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) */
1726static
1727void
1728android_glTransformFeedbackVaryings
1729 (JNIEnv *_env, jobject _this, jint program, jobjectArray varyings_ref, jint bufferMode) {
1730 jint _exception = 0;
1731 const char* _exceptionType = NULL;
1732 const char* _exceptionMessage = NULL;
1733 jint _count = 0, _i;
1734 const char** _varyings = NULL;
1735 const char* _varying = NULL;
1736
1737 if (!varyings_ref) {
1738 _exception = 1;
1739 _exceptionType = "java/lang/IllegalArgumentException";
1740 _exceptionMessage = "varyings == null";
1741 goto exit;
1742 }
1743
1744 _count = _env->GetArrayLength(varyings_ref);
1745 _varyings = (const char**)calloc(_count, sizeof(const char*));
1746 for (_i = 0; _i < _count; _i++) {
1747 jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i);
1748 if (!_varying) {
1749 _exception = 1;
1750 _exceptionType = "java/lang/IllegalArgumentException";
1751 _exceptionMessage = "null varyings element";
1752 goto exit;
1753 }
1754 _varyings[_i] = _env->GetStringUTFChars(_varying, 0);
1755 }
1756
1757 glTransformFeedbackVaryings(program, _count, _varyings, bufferMode);
1758
1759exit:
1760 for (_i = _count - 1; _i >= 0; _i--) {
1761 if (_varyings[_i]) {
1762 jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i);
1763 if (_varying) {
1764 _env->ReleaseStringUTFChars(_varying, _varyings[_i]);
1765 }
1766 }
1767 }
1768 free(_varyings);
1769 if (_exception) {
1770 jniThrowException(_env, _exceptionType, _exceptionMessage);
1771 }
1772}
1773
1774/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
1775static void
1776android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI
1777 (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) {
1778 jint _exception = 0;
1779 const char * _exceptionType;
1780 const char * _exceptionMessage;
1781 GLsizei *length_base = (GLsizei *) 0;
1782 jint _lengthRemaining;
1783 GLsizei *length = (GLsizei *) 0;
1784 GLint *size_base = (GLint *) 0;
1785 jint _sizeRemaining;
1786 GLint *size = (GLint *) 0;
1787 GLenum *type_base = (GLenum *) 0;
1788 jint _typeRemaining;
1789 GLenum *type = (GLenum *) 0;
1790 char *name_base = (char *) 0;
1791 jint _nameRemaining;
1792 char *name = (char *) 0;
1793
1794 if (!length_ref) {
1795 _exception = 1;
1796 _exceptionType = "java/lang/IllegalArgumentException";
1797 _exceptionMessage = "length == null";
1798 goto exit;
1799 }
1800 if (lengthOffset < 0) {
1801 _exception = 1;
1802 _exceptionType = "java/lang/IllegalArgumentException";
1803 _exceptionMessage = "lengthOffset < 0";
1804 goto exit;
1805 }
1806 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
1807 length_base = (GLsizei *)
1808 _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
1809 length = length_base + lengthOffset;
1810
1811 if (!size_ref) {
1812 _exception = 1;
1813 _exceptionType = "java/lang/IllegalArgumentException";
1814 _exceptionMessage = "size == null";
1815 goto exit;
1816 }
1817 if (sizeOffset < 0) {
1818 _exception = 1;
1819 _exceptionType = "java/lang/IllegalArgumentException";
1820 _exceptionMessage = "sizeOffset < 0";
1821 goto exit;
1822 }
1823 _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1824 size_base = (GLint *)
1825 _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1826 size = size_base + sizeOffset;
1827
1828 if (!type_ref) {
1829 _exception = 1;
1830 _exceptionType = "java/lang/IllegalArgumentException";
1831 _exceptionMessage = "type == null";
1832 goto exit;
1833 }
1834 if (typeOffset < 0) {
1835 _exception = 1;
1836 _exceptionType = "java/lang/IllegalArgumentException";
1837 _exceptionMessage = "typeOffset < 0";
1838 goto exit;
1839 }
1840 _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1841 type_base = (GLenum *)
1842 _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1843 type = type_base + typeOffset;
1844
1845 if (!name_ref) {
1846 _exception = 1;
1847 _exceptionType = "java/lang/IllegalArgumentException";
1848 _exceptionMessage = "name == null";
1849 goto exit;
1850 }
1851 if (nameOffset < 0) {
1852 _exception = 1;
1853 _exceptionType = "java/lang/IllegalArgumentException";
1854 _exceptionMessage = "nameOffset < 0";
1855 goto exit;
1856 }
1857 _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
1858 name_base = (char *)
1859 _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
1860 name = name_base + nameOffset;
1861
1862 glGetTransformFeedbackVarying(
1863 (GLuint)program,
1864 (GLuint)index,
1865 (GLsizei)bufsize,
1866 (GLsizei *)length,
1867 (GLint *)size,
1868 (GLenum *)type,
1869 (char *)name
1870 );
1871
1872exit:
1873 if (name_base) {
1874 _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
1875 _exception ? JNI_ABORT: 0);
1876 }
1877 if (type_base) {
1878 _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1879 _exception ? JNI_ABORT: 0);
1880 }
1881 if (size_base) {
1882 _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1883 _exception ? JNI_ABORT: 0);
1884 }
1885 if (length_base) {
1886 _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
1887 _exception ? JNI_ABORT: 0);
1888 }
1889 if (_exception) {
1890 jniThrowException(_env, _exceptionType, _exceptionMessage);
1891 }
1892}
1893
1894/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
1895static void
1896android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
1897 (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
1898 jarray _lengthArray = (jarray) 0;
1899 jint _lengthBufferOffset = (jint) 0;
1900 jarray _sizeArray = (jarray) 0;
1901 jint _sizeBufferOffset = (jint) 0;
1902 jarray _typeArray = (jarray) 0;
1903 jint _typeBufferOffset = (jint) 0;
1904 jint _lengthRemaining;
1905 GLsizei *length = (GLsizei *) 0;
1906 jint _sizeRemaining;
1907 GLint *size = (GLint *) 0;
1908 jint _typeRemaining;
1909 GLenum *type = (GLenum *) 0;
1910
1911 length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
1912 size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
1913 type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
1914 if (length == NULL) {
1915 char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
1916 length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
1917 }
1918 if (size == NULL) {
1919 char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
1920 size = (GLint *) (_sizeBase + _sizeBufferOffset);
1921 }
1922 if (type == NULL) {
1923 char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
1924 type = (GLenum *) (_typeBase + _typeBufferOffset);
1925 }
1926 glGetTransformFeedbackVarying(
1927 (GLuint)program,
1928 (GLuint)index,
1929 (GLsizei)bufsize,
1930 (GLsizei *)length,
1931 (GLint *)size,
1932 (GLenum *)type,
1933 (char *)name
1934 );
1935 if (_typeArray) {
1936 releasePointer(_env, _typeArray, type, JNI_TRUE);
1937 }
1938 if (_sizeArray) {
1939 releasePointer(_env, _sizeArray, size, JNI_TRUE);
1940 }
1941 if (_lengthArray) {
1942 releasePointer(_env, _lengthArray, length, JNI_TRUE);
1943 }
1944}
1945
1946/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
1947static jstring
1948android_glGetTransformFeedbackVarying1
1949 (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
1950 jint _exception = 0;
1951 const char * _exceptionType;
1952 const char * _exceptionMessage;
1953 GLint *size_base = (GLint *) 0;
1954 jint _sizeRemaining;
1955 GLint *size = (GLint *) 0;
1956 GLenum *type_base = (GLenum *) 0;
1957 jint _typeRemaining;
1958 GLenum *type = (GLenum *) 0;
1959
1960 jstring result = 0;
1961
1962 GLint len = 0;
1963 glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
1964 if (!len) {
1965 return _env->NewStringUTF("");
1966 }
1967 char* buf = (char*) malloc(len);
1968
1969 if (buf == NULL) {
1970 jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1971 return NULL;
1972 }
1973 if (!size_ref) {
1974 _exception = 1;
1975 _exceptionType = "java/lang/IllegalArgumentException";
1976 _exceptionMessage = "size == null";
1977 goto exit;
1978 }
1979 if (sizeOffset < 0) {
1980 _exception = 1;
1981 _exceptionType = "java/lang/IllegalArgumentException";
1982 _exceptionMessage = "sizeOffset < 0";
1983 goto exit;
1984 }
1985 _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1986 size_base = (GLint *)
1987 _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1988 size = size_base + sizeOffset;
1989
1990 if (!type_ref) {
1991 _exception = 1;
1992 _exceptionType = "java/lang/IllegalArgumentException";
1993 _exceptionMessage = "type == null";
1994 goto exit;
1995 }
1996 if (typeOffset < 0) {
1997 _exception = 1;
1998 _exceptionType = "java/lang/IllegalArgumentException";
1999 _exceptionMessage = "typeOffset < 0";
2000 goto exit;
2001 }
2002 _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
2003 type_base = (GLenum *)
2004 _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
2005 type = type_base + typeOffset;
2006
2007 glGetTransformFeedbackVarying(
2008 (GLuint)program,
2009 (GLuint)index,
2010 (GLsizei)len,
2011 NULL,
2012 (GLint *)size,
2013 (GLenum *)type,
2014 (char *)buf
2015 );
2016exit:
2017 if (type_base) {
2018 _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
2019 _exception ? JNI_ABORT: 0);
2020 }
2021 if (size_base) {
2022 _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
2023 _exception ? JNI_ABORT: 0);
2024 }
2025 if (_exception != 1) {
2026 result = _env->NewStringUTF(buf);
2027 }
2028 if (buf) {
2029 free(buf);
2030 }
2031 if (_exception) {
2032 jniThrowException(_env, _exceptionType, _exceptionMessage);
2033 }
2034 if (result == 0) {
2035 result = _env->NewStringUTF("");
2036 }
2037
2038 return result;
2039}
2040
2041/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */
2042static jstring
2043android_glGetTransformFeedbackVarying2
2044 (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
2045 jarray _sizeArray = (jarray) 0;
2046 jint _sizeBufferOffset = (jint) 0;
2047 jarray _typeArray = (jarray) 0;
2048 jint _typeBufferOffset = (jint) 0;
2049 jint _lengthRemaining;
2050 GLsizei *length = (GLsizei *) 0;
2051 jint _sizeRemaining;
2052 GLint *size = (GLint *) 0;
2053 jint _typeRemaining;
2054 GLenum *type = (GLenum *) 0;
2055
2056 jstring result = 0;
2057
2058 GLint len = 0;
2059 glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
2060 if (!len) {
2061 return _env->NewStringUTF("");
2062 }
2063 char* buf = (char*) malloc(len);
2064
2065 if (buf == NULL) {
2066 jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
2067 return NULL;
2068 }
2069
2070 size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
2071 type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
2072 if (size == NULL) {
2073 char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
2074 size = (GLint *) (_sizeBase + _sizeBufferOffset);
2075 }
2076 if (type == NULL) {
2077 char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
2078 type = (GLenum *) (_typeBase + _typeBufferOffset);
2079 }
2080 glGetTransformFeedbackVarying(
2081 (GLuint)program,
2082 (GLuint)index,
2083 (GLsizei)len,
2084 NULL,
2085 (GLint *)size,
2086 (GLenum *)type,
2087 (char *)buf
2088 );
2089
2090 if (_typeArray) {
2091 releasePointer(_env, _typeArray, type, JNI_TRUE);
2092 }
2093 if (_sizeArray) {
2094 releasePointer(_env, _sizeArray, size, JNI_TRUE);
2095 }
2096 result = _env->NewStringUTF(buf);
2097 if (buf) {
2098 free(buf);
2099 }
2100 return result;
2101}
2102/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
2103static void
2104android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I
2105 (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
2106 jarray _array = (jarray) 0;
2107 jint _bufferOffset = (jint) 0;
2108 jint _remaining;
2109 GLvoid *pointer = (GLvoid *) 0;
2110
2111 if (pointer_buf) {
2112 pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2113 if ( ! pointer ) {
2114 return;
2115 }
2116 }
2117 glVertexAttribIPointerBounds(
2118 (GLuint)index,
2119 (GLint)size,
2120 (GLenum)type,
2121 (GLsizei)stride,
2122 (GLvoid *)pointer,
2123 (GLsizei)remaining
2124 );
2125}
2126
2127/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, GLsizei offset ) */
2128static void
2129android_glVertexAttribIPointer__IIIII
2130 (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jint offset) {
2131 glVertexAttribIPointer(
2132 (GLuint)index,
2133 (GLint)size,
2134 (GLenum)type,
2135 (GLsizei)stride,
2136 (GLvoid *)offset
2137 );
2138}
2139
2140/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */
2141static void
2142android_glGetVertexAttribIiv__II_3II
2143 (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
2144 jint _exception = 0;
2145 const char * _exceptionType = NULL;
2146 const char * _exceptionMessage = NULL;
2147 GLint *params_base = (GLint *) 0;
2148 jint _remaining;
2149 GLint *params = (GLint *) 0;
2150
2151 if (!params_ref) {
2152 _exception = 1;
2153 _exceptionType = "java/lang/IllegalArgumentException";
2154 _exceptionMessage = "params == null";
2155 goto exit;
2156 }
2157 if (offset < 0) {
2158 _exception = 1;
2159 _exceptionType = "java/lang/IllegalArgumentException";
2160 _exceptionMessage = "offset < 0";
2161 goto exit;
2162 }
2163 _remaining = _env->GetArrayLength(params_ref) - offset;
2164 params_base = (GLint *)
2165 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2166 params = params_base + offset;
2167
2168 glGetVertexAttribIiv(
2169 (GLuint)index,
2170 (GLenum)pname,
2171 (GLint *)params
2172 );
2173
2174exit:
2175 if (params_base) {
2176 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2177 _exception ? JNI_ABORT: 0);
2178 }
2179 if (_exception) {
2180 jniThrowException(_env, _exceptionType, _exceptionMessage);
2181 }
2182}
2183
2184/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */
2185static void
2186android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2
2187 (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
2188 jarray _array = (jarray) 0;
2189 jint _bufferOffset = (jint) 0;
2190 jint _remaining;
2191 GLint *params = (GLint *) 0;
2192
2193 params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2194 if (params == NULL) {
2195 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2196 params = (GLint *) (_paramsBase + _bufferOffset);
2197 }
2198 glGetVertexAttribIiv(
2199 (GLuint)index,
2200 (GLenum)pname,
2201 (GLint *)params
2202 );
2203 if (_array) {
2204 releasePointer(_env, _array, params, JNI_TRUE);
2205 }
2206}
2207
2208/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */
2209static void
2210android_glGetVertexAttribIuiv__II_3II
2211 (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
2212 jint _exception = 0;
2213 const char * _exceptionType = NULL;
2214 const char * _exceptionMessage = NULL;
2215 GLuint *params_base = (GLuint *) 0;
2216 jint _remaining;
2217 GLuint *params = (GLuint *) 0;
2218
2219 if (!params_ref) {
2220 _exception = 1;
2221 _exceptionType = "java/lang/IllegalArgumentException";
2222 _exceptionMessage = "params == null";
2223 goto exit;
2224 }
2225 if (offset < 0) {
2226 _exception = 1;
2227 _exceptionType = "java/lang/IllegalArgumentException";
2228 _exceptionMessage = "offset < 0";
2229 goto exit;
2230 }
2231 _remaining = _env->GetArrayLength(params_ref) - offset;
2232 params_base = (GLuint *)
2233 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2234 params = params_base + offset;
2235
2236 glGetVertexAttribIuiv(
2237 (GLuint)index,
2238 (GLenum)pname,
2239 (GLuint *)params
2240 );
2241
2242exit:
2243 if (params_base) {
2244 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2245 _exception ? JNI_ABORT: 0);
2246 }
2247 if (_exception) {
2248 jniThrowException(_env, _exceptionType, _exceptionMessage);
2249 }
2250}
2251
2252/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */
2253static void
2254android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2
2255 (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
2256 jarray _array = (jarray) 0;
2257 jint _bufferOffset = (jint) 0;
2258 jint _remaining;
2259 GLuint *params = (GLuint *) 0;
2260
2261 params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2262 if (params == NULL) {
2263 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2264 params = (GLuint *) (_paramsBase + _bufferOffset);
2265 }
2266 glGetVertexAttribIuiv(
2267 (GLuint)index,
2268 (GLenum)pname,
2269 (GLuint *)params
2270 );
2271 if (_array) {
2272 releasePointer(_env, _array, params, JNI_TRUE);
2273 }
2274}
2275
2276/* void glVertexAttribI4i ( GLuint index, GLint x, GLint y, GLint z, GLint w ) */
2277static void
2278android_glVertexAttribI4i__IIIII
2279 (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) {
2280 glVertexAttribI4i(
2281 (GLuint)index,
2282 (GLint)x,
2283 (GLint)y,
2284 (GLint)z,
2285 (GLint)w
2286 );
2287}
2288
2289/* void glVertexAttribI4ui ( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) */
2290static void
2291android_glVertexAttribI4ui__IIIII
2292 (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) {
2293 glVertexAttribI4ui(
2294 (GLuint)index,
2295 (GLuint)x,
2296 (GLuint)y,
2297 (GLuint)z,
2298 (GLuint)w
2299 );
2300}
2301
2302/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */
2303static void
2304android_glVertexAttribI4iv__I_3II
2305 (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) {
2306 jint _exception = 0;
2307 const char * _exceptionType = NULL;
2308 const char * _exceptionMessage = NULL;
2309 GLint *v_base = (GLint *) 0;
2310 jint _remaining;
2311 GLint *v = (GLint *) 0;
2312
2313 if (!v_ref) {
2314 _exception = 1;
2315 _exceptionType = "java/lang/IllegalArgumentException";
2316 _exceptionMessage = "v == null";
2317 goto exit;
2318 }
2319 if (offset < 0) {
2320 _exception = 1;
2321 _exceptionType = "java/lang/IllegalArgumentException";
2322 _exceptionMessage = "offset < 0";
2323 goto exit;
2324 }
2325 _remaining = _env->GetArrayLength(v_ref) - offset;
2326 v_base = (GLint *)
2327 _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
2328 v = v_base + offset;
2329
2330 glVertexAttribI4iv(
2331 (GLuint)index,
2332 (GLint *)v
2333 );
2334
2335exit:
2336 if (v_base) {
2337 _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
2338 JNI_ABORT);
2339 }
2340 if (_exception) {
2341 jniThrowException(_env, _exceptionType, _exceptionMessage);
2342 }
2343}
2344
2345/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */
2346static void
2347android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2
2348 (JNIEnv *_env, jobject _this, jint index, jobject v_buf) {
2349 jarray _array = (jarray) 0;
2350 jint _bufferOffset = (jint) 0;
2351 jint _remaining;
2352 GLint *v = (GLint *) 0;
2353
2354 v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
2355 if (v == NULL) {
2356 char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2357 v = (GLint *) (_vBase + _bufferOffset);
2358 }
2359 glVertexAttribI4iv(
2360 (GLuint)index,
2361 (GLint *)v
2362 );
2363 if (_array) {
2364 releasePointer(_env, _array, v, JNI_FALSE);
2365 }
2366}
2367
2368/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */
2369static void
2370android_glVertexAttribI4uiv__I_3II
2371 (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) {
2372 jint _exception = 0;
2373 const char * _exceptionType = NULL;
2374 const char * _exceptionMessage = NULL;
2375 GLuint *v_base = (GLuint *) 0;
2376 jint _remaining;
2377 GLuint *v = (GLuint *) 0;
2378
2379 if (!v_ref) {
2380 _exception = 1;
2381 _exceptionType = "java/lang/IllegalArgumentException";
2382 _exceptionMessage = "v == null";
2383 goto exit;
2384 }
2385 if (offset < 0) {
2386 _exception = 1;
2387 _exceptionType = "java/lang/IllegalArgumentException";
2388 _exceptionMessage = "offset < 0";
2389 goto exit;
2390 }
2391 _remaining = _env->GetArrayLength(v_ref) - offset;
2392 v_base = (GLuint *)
2393 _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
2394 v = v_base + offset;
2395
2396 glVertexAttribI4uiv(
2397 (GLuint)index,
2398 (GLuint *)v
2399 );
2400
2401exit:
2402 if (v_base) {
2403 _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
2404 JNI_ABORT);
2405 }
2406 if (_exception) {
2407 jniThrowException(_env, _exceptionType, _exceptionMessage);
2408 }
2409}
2410
2411/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */
2412static void
2413android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2
2414 (JNIEnv *_env, jobject _this, jint index, jobject v_buf) {
2415 jarray _array = (jarray) 0;
2416 jint _bufferOffset = (jint) 0;
2417 jint _remaining;
2418 GLuint *v = (GLuint *) 0;
2419
2420 v = (GLuint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
2421 if (v == NULL) {
2422 char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2423 v = (GLuint *) (_vBase + _bufferOffset);
2424 }
2425 glVertexAttribI4uiv(
2426 (GLuint)index,
2427 (GLuint *)v
2428 );
2429 if (_array) {
2430 releasePointer(_env, _array, v, JNI_FALSE);
2431 }
2432}
2433
2434/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */
2435static void
2436android_glGetUniformuiv__II_3II
2437 (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) {
2438 jint _exception = 0;
2439 const char * _exceptionType = NULL;
2440 const char * _exceptionMessage = NULL;
2441 GLuint *params_base = (GLuint *) 0;
2442 jint _remaining;
2443 GLuint *params = (GLuint *) 0;
2444
2445 if (!params_ref) {
2446 _exception = 1;
2447 _exceptionType = "java/lang/IllegalArgumentException";
2448 _exceptionMessage = "params == null";
2449 goto exit;
2450 }
2451 if (offset < 0) {
2452 _exception = 1;
2453 _exceptionType = "java/lang/IllegalArgumentException";
2454 _exceptionMessage = "offset < 0";
2455 goto exit;
2456 }
2457 _remaining = _env->GetArrayLength(params_ref) - offset;
2458 params_base = (GLuint *)
2459 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2460 params = params_base + offset;
2461
2462 glGetUniformuiv(
2463 (GLuint)program,
2464 (GLint)location,
2465 (GLuint *)params
2466 );
2467
2468exit:
2469 if (params_base) {
2470 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2471 _exception ? JNI_ABORT: 0);
2472 }
2473 if (_exception) {
2474 jniThrowException(_env, _exceptionType, _exceptionMessage);
2475 }
2476}
2477
2478/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */
2479static void
2480android_glGetUniformuiv__IILjava_nio_IntBuffer_2
2481 (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
2482 jarray _array = (jarray) 0;
2483 jint _bufferOffset = (jint) 0;
2484 jint _remaining;
2485 GLuint *params = (GLuint *) 0;
2486
2487 params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2488 if (params == NULL) {
2489 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2490 params = (GLuint *) (_paramsBase + _bufferOffset);
2491 }
2492 glGetUniformuiv(
2493 (GLuint)program,
2494 (GLint)location,
2495 (GLuint *)params
2496 );
2497 if (_array) {
2498 releasePointer(_env, _array, params, JNI_TRUE);
2499 }
2500}
2501
2502/* GLint glGetFragDataLocation ( GLuint program, const GLchar *name ) */
2503static jint
2504android_glGetFragDataLocation__ILjava_lang_String_2
2505 (JNIEnv *_env, jobject _this, jint program, jstring name) {
2506 jint _exception = 0;
2507 const char * _exceptionType = NULL;
2508 const char * _exceptionMessage = NULL;
2509 GLint _returnValue = 0;
2510 const char* _nativename = 0;
2511
2512 if (!name) {
Elliott Hughes428d3fc2013-09-24 17:15:41 -07002513 _exception = 1;
Jesse Halld830e742013-03-29 11:02:35 -07002514 _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) {
Elliott Hughes428d3fc2013-09-24 17:15:41 -07003364 _exception = 1;
Jesse Halld830e742013-03-29 11:02:35 -07003365 _exceptionType = "java/lang/IllegalArgumentException";
3366 _exceptionMessage = "uniformBlockName == null";
3367 goto exit;
3368 }
3369 _nativeuniformBlockName = _env->GetStringUTFChars(uniformBlockName, 0);
3370
3371 _returnValue = glGetUniformBlockIndex(
3372 (GLuint)program,
3373 (GLchar *)_nativeuniformBlockName
3374 );
3375
3376exit:
3377 if (_nativeuniformBlockName) {
3378 _env->ReleaseStringUTFChars(uniformBlockName, _nativeuniformBlockName);
3379 }
3380
3381 if (_exception) {
3382 jniThrowException(_env, _exceptionType, _exceptionMessage);
3383 }
3384 return (jint)_returnValue;
3385}
3386
3387/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */
3388static void
3389android_glGetActiveUniformBlockiv__III_3II
3390 (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jintArray params_ref, jint offset) {
3391 jint _exception = 0;
3392 const char * _exceptionType = NULL;
3393 const char * _exceptionMessage = NULL;
3394 GLint *params_base = (GLint *) 0;
3395 jint _remaining;
3396 GLint *params = (GLint *) 0;
3397
3398 if (!params_ref) {
3399 _exception = 1;
3400 _exceptionType = "java/lang/IllegalArgumentException";
3401 _exceptionMessage = "params == null";
3402 goto exit;
3403 }
3404 if (offset < 0) {
3405 _exception = 1;
3406 _exceptionType = "java/lang/IllegalArgumentException";
3407 _exceptionMessage = "offset < 0";
3408 goto exit;
3409 }
3410 _remaining = _env->GetArrayLength(params_ref) - offset;
3411 params_base = (GLint *)
3412 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3413 params = params_base + offset;
3414
3415 glGetActiveUniformBlockiv(
3416 (GLuint)program,
3417 (GLuint)uniformBlockIndex,
3418 (GLenum)pname,
3419 (GLint *)params
3420 );
3421
3422exit:
3423 if (params_base) {
3424 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3425 _exception ? JNI_ABORT: 0);
3426 }
3427 if (_exception) {
3428 jniThrowException(_env, _exceptionType, _exceptionMessage);
3429 }
3430}
3431
3432/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */
3433static void
3434android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2
3435 (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jobject params_buf) {
3436 jarray _array = (jarray) 0;
3437 jint _bufferOffset = (jint) 0;
3438 jint _remaining;
3439 GLint *params = (GLint *) 0;
3440
3441 params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3442 if (params == NULL) {
3443 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3444 params = (GLint *) (_paramsBase + _bufferOffset);
3445 }
3446 glGetActiveUniformBlockiv(
3447 (GLuint)program,
3448 (GLuint)uniformBlockIndex,
3449 (GLenum)pname,
3450 (GLint *)params
3451 );
3452 if (_array) {
3453 releasePointer(_env, _array, params, JNI_TRUE);
3454 }
3455}
3456
3457/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
3458static void
3459android_glGetActiveUniformBlockName_III_3II_3BI
3460 (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) {
3461 jint _exception = 0;
3462 const char* _exceptionType;
3463 const char* _exceptionMessage;
3464 GLsizei* _length_base = (GLsizei*)0;
3465 jint _lengthRemaining;
3466 GLsizei* _length = (GLsizei*)0;
3467 GLchar* _name_base = (GLchar*)0;
3468 jint _nameRemaining;
3469 GLchar* _name = (GLchar*)0;
3470
3471 if (!length_ref) {
3472 _exception = 1;
3473 _exceptionType = "java/lang/IllegalArgumentException";
3474 _exceptionMessage = "length == null";
3475 goto exit;
3476 }
3477 if (lengthOffset < 0) {
3478 _exception = 1;
3479 _exceptionType = "java/lang/IllegalArgumentException";
3480 _exceptionMessage = "lengthOffset < 0";
3481 goto exit;
3482 }
3483 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3484 _length_base = (GLsizei*)_env->GetPrimitiveArrayCritical(
3485 length_ref, (jboolean*)0);
3486 _length = _length_base + lengthOffset;
3487
3488 if (!name_ref) {
3489 _exception = 1;
3490 _exceptionType = "java/lang/IllegalArgumentException";
3491 _exceptionMessage = "uniformBlockName == null";
3492 goto exit;
3493 }
3494 if (nameOffset < 0) {
3495 _exception = 1;
3496 _exceptionType = "java/lang/IllegalArgumentException";
3497 _exceptionMessage = "uniformBlockNameOffset < 0";
3498 goto exit;
3499 }
3500 _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
3501 _name_base = (GLchar*)_env->GetPrimitiveArrayCritical(
3502 name_ref, (jboolean*)0);
3503 _name = _name_base + nameOffset;
3504
3505 glGetActiveUniformBlockName(
3506 (GLuint)program,
3507 (GLuint)uniformBlockIndex,
3508 (GLsizei)bufSize,
3509 (GLsizei*)_length,
3510 (GLchar*)_name
3511 );
3512
3513exit:
3514 if (_name_base) {
3515 _env->ReleasePrimitiveArrayCritical(name_ref, _name_base,
3516 _exception ? JNI_ABORT: 0);
3517 }
3518 if (_length_base) {
3519 _env->ReleasePrimitiveArrayCritical(length_ref, _length_base,
3520 _exception ? JNI_ABORT: 0);
3521 }
3522 if (_exception) {
3523 jniThrowException(_env, _exceptionType, _exceptionMessage);
3524 }
3525}
3526
3527/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
3528static void
3529android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2
3530 (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) {
3531 jint _exception = 0;
3532 const char* _exceptionType;
3533 const char* _exceptionMessage;
3534 jarray _lengthArray = (jarray)0;
3535 jint _lengthBufferOffset = (jint)0;
3536 GLsizei* _length = (GLsizei*)0;
3537 jint _lengthRemaining;
3538 jarray _nameArray = (jarray)0;
3539 jint _nameBufferOffset = (jint)0;
3540 GLchar* _name = (GLchar*)0;
3541 jint _nameRemaining;
3542
3543 _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
3544 if (_length == NULL) {
3545 GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0);
3546 _length = (GLsizei*)(_lengthBase + _lengthBufferOffset);
3547 }
3548
3549 _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset);
3550 if (_name == NULL) {
3551 GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0);
3552 _name = (GLchar*)(_nameBase + _nameBufferOffset);
3553 }
3554
3555 glGetActiveUniformBlockName(
3556 (GLuint)program,
3557 (GLuint)uniformBlockIndex,
3558 (GLsizei)_nameRemaining,
3559 _length, _name
3560 );
3561 if (_nameArray) {
3562 releasePointer(_env, _nameArray, _name, JNI_TRUE);
3563 }
3564 if (_lengthArray) {
3565 releasePointer(_env, _lengthArray, _length, JNI_TRUE);
3566 }
3567}
3568
3569/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
3570static jstring
3571android_glGetActiveUniformBlockName_II
3572 (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) {
3573 GLint len = 0;
3574 glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex,
3575 GL_UNIFORM_BLOCK_NAME_LENGTH, &len);
3576 GLchar* name = (GLchar*)malloc(len);
3577 glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex,
3578 len, NULL, name);
3579 jstring result = _env->NewStringUTF(name);
3580 free(name);
3581 return result;
3582}
3583
3584/* void glUniformBlockBinding ( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) */
3585static void
3586android_glUniformBlockBinding__III
3587 (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint uniformBlockBinding) {
3588 glUniformBlockBinding(
3589 (GLuint)program,
3590 (GLuint)uniformBlockIndex,
3591 (GLuint)uniformBlockBinding
3592 );
3593}
3594
3595/* void glDrawArraysInstanced ( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) */
3596static void
3597android_glDrawArraysInstanced__IIII
3598 (JNIEnv *_env, jobject _this, jint mode, jint first, jint count, jint instanceCount) {
3599 glDrawArraysInstanced(
3600 (GLenum)mode,
3601 (GLint)first,
3602 (GLsizei)count,
3603 (GLsizei)instanceCount
3604 );
3605}
3606
3607/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */
3608static void
3609android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I
3610 (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount) {
3611 jarray _array = (jarray) 0;
3612 jint _bufferOffset = (jint) 0;
3613 jint _remaining;
3614 GLvoid *indices = (GLvoid *) 0;
3615
3616 indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
3617 if (indices == NULL) {
3618 char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3619 indices = (GLvoid *) (_indicesBase + _bufferOffset);
3620 }
3621 glDrawElementsInstanced(
3622 (GLenum)mode,
3623 (GLsizei)count,
3624 (GLenum)type,
3625 (GLvoid *)indices,
3626 (GLsizei)instanceCount
3627 );
3628 if (_array) {
3629 releasePointer(_env, _array, indices, JNI_FALSE);
3630 }
3631}
3632
3633/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */
3634static void
3635android_glDrawElementsInstanced__IIIII
3636 (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount) {
3637 glDrawElementsInstanced(
3638 (GLenum)mode,
3639 (GLsizei)count,
3640 (GLenum)type,
3641 (GLvoid *)indicesOffset,
3642 (GLsizei)instanceCount
3643 );
3644}
3645
3646/* GLsync glFenceSync ( GLenum condition, GLbitfield flags ) */
3647static jlong
3648android_glFenceSync__II
3649 (JNIEnv *_env, jobject _this, jint condition, jint flags) {
3650 GLsync _returnValue;
3651 _returnValue = glFenceSync(
3652 (GLenum)condition,
3653 (GLbitfield)flags
3654 );
3655 return (jlong)_returnValue;
3656}
3657
3658/* GLboolean glIsSync ( GLsync sync ) */
3659static jboolean
3660android_glIsSync__J
3661 (JNIEnv *_env, jobject _this, jlong sync) {
3662 GLboolean _returnValue;
3663 _returnValue = glIsSync(
3664 (GLsync)sync
3665 );
3666 return (jboolean)_returnValue;
3667}
3668
3669/* void glDeleteSync ( GLsync sync ) */
3670static void
3671android_glDeleteSync__J
3672 (JNIEnv *_env, jobject _this, jlong sync) {
3673 glDeleteSync(
3674 (GLsync)sync
3675 );
3676}
3677
3678/* GLenum glClientWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */
3679static jint
3680android_glClientWaitSync__JIJ
3681 (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) {
3682 GLenum _returnValue;
3683 _returnValue = glClientWaitSync(
3684 (GLsync)sync,
3685 (GLbitfield)flags,
3686 (GLuint64)timeout
3687 );
3688 return (jint)_returnValue;
3689}
3690
3691/* void glWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */
3692static void
3693android_glWaitSync__JIJ
3694 (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) {
3695 glWaitSync(
3696 (GLsync)sync,
3697 (GLbitfield)flags,
3698 (GLuint64)timeout
3699 );
3700}
3701
3702/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */
3703static void
3704android_glGetInteger64v__I_3JI
3705 (JNIEnv *_env, jobject _this, jint pname, jlongArray params_ref, jint offset) {
3706 jint _exception = 0;
3707 const char * _exceptionType = NULL;
3708 const char * _exceptionMessage = NULL;
3709 GLint64 *params_base = (GLint64 *) 0;
3710 jint _remaining;
3711 GLint64 *params = (GLint64 *) 0;
3712
3713 if (!params_ref) {
3714 _exception = 1;
3715 _exceptionType = "java/lang/IllegalArgumentException";
3716 _exceptionMessage = "params == null";
3717 goto exit;
3718 }
3719 if (offset < 0) {
3720 _exception = 1;
3721 _exceptionType = "java/lang/IllegalArgumentException";
3722 _exceptionMessage = "offset < 0";
3723 goto exit;
3724 }
3725 _remaining = _env->GetArrayLength(params_ref) - offset;
3726 params_base = (GLint64 *)
3727 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3728 params = params_base + offset;
3729
3730 glGetInteger64v(
3731 (GLenum)pname,
3732 (GLint64 *)params
3733 );
3734
3735exit:
3736 if (params_base) {
3737 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3738 _exception ? JNI_ABORT: 0);
3739 }
3740 if (_exception) {
3741 jniThrowException(_env, _exceptionType, _exceptionMessage);
3742 }
3743}
3744
3745/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */
3746static void
3747android_glGetInteger64v__ILjava_nio_LongBuffer_2
3748 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
3749 jarray _array = (jarray) 0;
3750 jint _bufferOffset = (jint) 0;
3751 jint _remaining;
3752 GLint64 *params = (GLint64 *) 0;
3753
3754 params = (GLint64 *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3755 if (params == NULL) {
3756 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3757 params = (GLint64 *) (_paramsBase + _bufferOffset);
3758 }
3759 glGetInteger64v(
3760 (GLenum)pname,
3761 (GLint64 *)params
3762 );
3763 if (_array) {
3764 releasePointer(_env, _array, params, JNI_TRUE);
3765 }
3766}
3767
3768/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */
3769static void
3770android_glGetSynciv__JII_3II_3II
3771 (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray values_ref, jint valuesOffset) {
3772 jint _exception = 0;
3773 const char * _exceptionType = NULL;
3774 const char * _exceptionMessage = NULL;
3775 GLsizei *length_base = (GLsizei *) 0;
3776 jint _lengthRemaining;
3777 GLsizei *length = (GLsizei *) 0;
3778 GLint *values_base = (GLint *) 0;
3779 jint _valuesRemaining;
3780 GLint *values = (GLint *) 0;
3781
3782 if (!length_ref) {
3783 _exception = 1;
3784 _exceptionType = "java/lang/IllegalArgumentException";
3785 _exceptionMessage = "length == null";
3786 goto exit;
3787 }
3788 if (lengthOffset < 0) {
3789 _exception = 1;
3790 _exceptionType = "java/lang/IllegalArgumentException";
3791 _exceptionMessage = "lengthOffset < 0";
3792 goto exit;
3793 }
3794 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3795 length_base = (GLsizei *)
3796 _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
3797 length = length_base + lengthOffset;
3798
3799 if (!values_ref) {
3800 _exception = 1;
3801 _exceptionType = "java/lang/IllegalArgumentException";
3802 _exceptionMessage = "values == null";
3803 goto exit;
3804 }
3805 if (valuesOffset < 0) {
3806 _exception = 1;
3807 _exceptionType = "java/lang/IllegalArgumentException";
3808 _exceptionMessage = "valuesOffset < 0";
3809 goto exit;
3810 }
3811 _valuesRemaining = _env->GetArrayLength(values_ref) - valuesOffset;
3812 values_base = (GLint *)
3813 _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
3814 values = values_base + valuesOffset;
3815
3816 glGetSynciv(
3817 (GLsync)sync,
3818 (GLenum)pname,
3819 (GLsizei)bufSize,
3820 (GLsizei *)length,
3821 (GLint *)values
3822 );
3823
3824exit:
3825 if (values_base) {
3826 _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
3827 _exception ? JNI_ABORT: 0);
3828 }
3829 if (length_base) {
3830 _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
3831 _exception ? JNI_ABORT: 0);
3832 }
3833 if (_exception) {
3834 jniThrowException(_env, _exceptionType, _exceptionMessage);
3835 }
3836}
3837
3838/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */
3839static void
3840android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
3841 (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jobject length_buf, jobject values_buf) {
3842 jarray _lengthArray = (jarray) 0;
3843 jint _lengthBufferOffset = (jint) 0;
3844 jarray _valuesArray = (jarray) 0;
3845 jint _valuesBufferOffset = (jint) 0;
3846 jint _lengthRemaining;
3847 GLsizei *length = (GLsizei *) 0;
3848 jint _valuesRemaining;
3849 GLint *values = (GLint *) 0;
3850
3851 length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
3852 values = (GLint *)getPointer(_env, values_buf, &_valuesArray, &_valuesRemaining, &_valuesBufferOffset);
3853 if (length == NULL) {
3854 char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
3855 length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
3856 }
3857 if (values == NULL) {
3858 char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_valuesArray, (jboolean *) 0);
3859 values = (GLint *) (_valuesBase + _valuesBufferOffset);
3860 }
3861 glGetSynciv(
3862 (GLsync)sync,
3863 (GLenum)pname,
3864 (GLsizei)bufSize,
3865 (GLsizei *)length,
3866 (GLint *)values
3867 );
3868 if (_valuesArray) {
3869 releasePointer(_env, _valuesArray, values, JNI_TRUE);
3870 }
3871 if (_lengthArray) {
3872 releasePointer(_env, _lengthArray, length, JNI_TRUE);
3873 }
3874}
3875
3876/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */
3877static void
3878android_glGetInteger64i_v__II_3JI
3879 (JNIEnv *_env, jobject _this, jint target, jint index, jlongArray data_ref, jint offset) {
3880 jint _exception = 0;
3881 const char * _exceptionType = NULL;
3882 const char * _exceptionMessage = NULL;
3883 GLint64 *data_base = (GLint64 *) 0;
3884 jint _remaining;
3885 GLint64 *data = (GLint64 *) 0;
3886
3887 if (!data_ref) {
3888 _exception = 1;
3889 _exceptionType = "java/lang/IllegalArgumentException";
3890 _exceptionMessage = "data == null";
3891 goto exit;
3892 }
3893 if (offset < 0) {
3894 _exception = 1;
3895 _exceptionType = "java/lang/IllegalArgumentException";
3896 _exceptionMessage = "offset < 0";
3897 goto exit;
3898 }
3899 _remaining = _env->GetArrayLength(data_ref) - offset;
3900 data_base = (GLint64 *)
3901 _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0);
3902 data = data_base + offset;
3903
3904 glGetInteger64i_v(
3905 (GLenum)target,
3906 (GLuint)index,
3907 (GLint64 *)data
3908 );
3909
3910exit:
3911 if (data_base) {
3912 _env->ReleasePrimitiveArrayCritical(data_ref, data_base,
3913 _exception ? JNI_ABORT: 0);
3914 }
3915 if (_exception) {
3916 jniThrowException(_env, _exceptionType, _exceptionMessage);
3917 }
3918}
3919
3920/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */
3921static void
3922android_glGetInteger64i_v__IILjava_nio_LongBuffer_2
3923 (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) {
3924 jarray _array = (jarray) 0;
3925 jint _bufferOffset = (jint) 0;
3926 jint _remaining;
3927 GLint64 *data = (GLint64 *) 0;
3928
3929 data = (GLint64 *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
3930 if (data == NULL) {
3931 char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3932 data = (GLint64 *) (_dataBase + _bufferOffset);
3933 }
3934 glGetInteger64i_v(
3935 (GLenum)target,
3936 (GLuint)index,
3937 (GLint64 *)data
3938 );
3939 if (_array) {
3940 releasePointer(_env, _array, data, JNI_TRUE);
3941 }
3942}
3943
3944/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */
3945static void
3946android_glGetBufferParameteri64v__II_3JI
3947 (JNIEnv *_env, jobject _this, jint target, jint pname, jlongArray params_ref, jint offset) {
3948 jint _exception = 0;
3949 const char * _exceptionType = NULL;
3950 const char * _exceptionMessage = NULL;
3951 GLint64 *params_base = (GLint64 *) 0;
3952 jint _remaining;
3953 GLint64 *params = (GLint64 *) 0;
3954
3955 if (!params_ref) {
3956 _exception = 1;
3957 _exceptionType = "java/lang/IllegalArgumentException";
3958 _exceptionMessage = "params == null";
3959 goto exit;
3960 }
3961 if (offset < 0) {
3962 _exception = 1;
3963 _exceptionType = "java/lang/IllegalArgumentException";
3964 _exceptionMessage = "offset < 0";
3965 goto exit;
3966 }
3967 _remaining = _env->GetArrayLength(params_ref) - offset;
3968 params_base = (GLint64 *)
3969 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3970 params = params_base + offset;
3971
3972 glGetBufferParameteri64v(
3973 (GLenum)target,
3974 (GLenum)pname,
3975 (GLint64 *)params
3976 );
3977
3978exit:
3979 if (params_base) {
3980 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3981 _exception ? JNI_ABORT: 0);
3982 }
3983 if (_exception) {
3984 jniThrowException(_env, _exceptionType, _exceptionMessage);
3985 }
3986}
3987
3988/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */
3989static void
3990android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2
3991 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3992 jarray _array = (jarray) 0;
3993 jint _bufferOffset = (jint) 0;
3994 jint _remaining;
3995 GLint64 *params = (GLint64 *) 0;
3996
3997 params = (GLint64 *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3998 if (params == NULL) {
3999 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4000 params = (GLint64 *) (_paramsBase + _bufferOffset);
4001 }
4002 glGetBufferParameteri64v(
4003 (GLenum)target,
4004 (GLenum)pname,
4005 (GLint64 *)params
4006 );
4007 if (_array) {
4008 releasePointer(_env, _array, params, JNI_TRUE);
4009 }
4010}
4011
4012/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */
4013static void
4014android_glGenSamplers__I_3II
4015 (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) {
4016 jint _exception = 0;
4017 const char * _exceptionType = NULL;
4018 const char * _exceptionMessage = NULL;
4019 GLuint *samplers_base = (GLuint *) 0;
4020 jint _remaining;
4021 GLuint *samplers = (GLuint *) 0;
4022
4023 if (!samplers_ref) {
4024 _exception = 1;
4025 _exceptionType = "java/lang/IllegalArgumentException";
4026 _exceptionMessage = "samplers == null";
4027 goto exit;
4028 }
4029 if (offset < 0) {
4030 _exception = 1;
4031 _exceptionType = "java/lang/IllegalArgumentException";
4032 _exceptionMessage = "offset < 0";
4033 goto exit;
4034 }
4035 _remaining = _env->GetArrayLength(samplers_ref) - offset;
4036 samplers_base = (GLuint *)
4037 _env->GetPrimitiveArrayCritical(samplers_ref, (jboolean *)0);
4038 samplers = samplers_base + offset;
4039
4040 glGenSamplers(
4041 (GLsizei)count,
4042 (GLuint *)samplers
4043 );
4044
4045exit:
4046 if (samplers_base) {
4047 _env->ReleasePrimitiveArrayCritical(samplers_ref, samplers_base,
4048 _exception ? JNI_ABORT: 0);
4049 }
4050 if (_exception) {
4051 jniThrowException(_env, _exceptionType, _exceptionMessage);
4052 }
4053}
4054
4055/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */
4056static void
4057android_glGenSamplers__ILjava_nio_IntBuffer_2
4058 (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) {
4059 jarray _array = (jarray) 0;
4060 jint _bufferOffset = (jint) 0;
4061 jint _remaining;
4062 GLuint *samplers = (GLuint *) 0;
4063
4064 samplers = (GLuint *)getPointer(_env, samplers_buf, &_array, &_remaining, &_bufferOffset);
4065 if (samplers == NULL) {
4066 char * _samplersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4067 samplers = (GLuint *) (_samplersBase + _bufferOffset);
4068 }
4069 glGenSamplers(
4070 (GLsizei)count,
4071 (GLuint *)samplers
4072 );
4073 if (_array) {
4074 releasePointer(_env, _array, samplers, JNI_TRUE);
4075 }
4076}
4077
4078/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */
4079static void
4080android_glDeleteSamplers__I_3II
4081 (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) {
4082 jint _exception = 0;
4083 const char * _exceptionType = NULL;
4084 const char * _exceptionMessage = NULL;
4085 GLuint *samplers_base = (GLuint *) 0;
4086 jint _remaining;
4087 GLuint *samplers = (GLuint *) 0;
4088
4089 if (!samplers_ref) {
4090 _exception = 1;
4091 _exceptionType = "java/lang/IllegalArgumentException";
4092 _exceptionMessage = "samplers == null";
4093 goto exit;
4094 }
4095 if (offset < 0) {
4096 _exception = 1;
4097 _exceptionType = "java/lang/IllegalArgumentException";
4098 _exceptionMessage = "offset < 0";
4099 goto exit;
4100 }
4101 _remaining = _env->GetArrayLength(samplers_ref) - offset;
4102 samplers_base = (GLuint *)
4103 _env->GetPrimitiveArrayCritical(samplers_ref, (jboolean *)0);
4104 samplers = samplers_base + offset;
4105
4106 glDeleteSamplers(
4107 (GLsizei)count,
4108 (GLuint *)samplers
4109 );
4110
4111exit:
4112 if (samplers_base) {
4113 _env->ReleasePrimitiveArrayCritical(samplers_ref, samplers_base,
4114 JNI_ABORT);
4115 }
4116 if (_exception) {
4117 jniThrowException(_env, _exceptionType, _exceptionMessage);
4118 }
4119}
4120
4121/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */
4122static void
4123android_glDeleteSamplers__ILjava_nio_IntBuffer_2
4124 (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) {
4125 jarray _array = (jarray) 0;
4126 jint _bufferOffset = (jint) 0;
4127 jint _remaining;
4128 GLuint *samplers = (GLuint *) 0;
4129
4130 samplers = (GLuint *)getPointer(_env, samplers_buf, &_array, &_remaining, &_bufferOffset);
4131 if (samplers == NULL) {
4132 char * _samplersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4133 samplers = (GLuint *) (_samplersBase + _bufferOffset);
4134 }
4135 glDeleteSamplers(
4136 (GLsizei)count,
4137 (GLuint *)samplers
4138 );
4139 if (_array) {
4140 releasePointer(_env, _array, samplers, JNI_FALSE);
4141 }
4142}
4143
4144/* GLboolean glIsSampler ( GLuint sampler ) */
4145static jboolean
4146android_glIsSampler__I
4147 (JNIEnv *_env, jobject _this, jint sampler) {
4148 GLboolean _returnValue;
4149 _returnValue = glIsSampler(
4150 (GLuint)sampler
4151 );
4152 return (jboolean)_returnValue;
4153}
4154
4155/* void glBindSampler ( GLuint unit, GLuint sampler ) */
4156static void
4157android_glBindSampler__II
4158 (JNIEnv *_env, jobject _this, jint unit, jint sampler) {
4159 glBindSampler(
4160 (GLuint)unit,
4161 (GLuint)sampler
4162 );
4163}
4164
4165/* void glSamplerParameteri ( GLuint sampler, GLenum pname, GLint param ) */
4166static void
4167android_glSamplerParameteri__III
4168 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jint param) {
4169 glSamplerParameteri(
4170 (GLuint)sampler,
4171 (GLenum)pname,
4172 (GLint)param
4173 );
4174}
4175
4176/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */
4177static void
4178android_glSamplerParameteriv__II_3II
4179 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) {
4180 jint _exception = 0;
4181 const char * _exceptionType = NULL;
4182 const char * _exceptionMessage = NULL;
4183 GLint *param_base = (GLint *) 0;
4184 jint _remaining;
4185 GLint *param = (GLint *) 0;
4186
4187 if (!param_ref) {
4188 _exception = 1;
4189 _exceptionType = "java/lang/IllegalArgumentException";
4190 _exceptionMessage = "param == null";
4191 goto exit;
4192 }
4193 if (offset < 0) {
4194 _exception = 1;
4195 _exceptionType = "java/lang/IllegalArgumentException";
4196 _exceptionMessage = "offset < 0";
4197 goto exit;
4198 }
4199 _remaining = _env->GetArrayLength(param_ref) - offset;
4200 param_base = (GLint *)
4201 _env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0);
4202 param = param_base + offset;
4203
4204 glSamplerParameteriv(
4205 (GLuint)sampler,
4206 (GLenum)pname,
4207 (GLint *)param
4208 );
4209
4210exit:
4211 if (param_base) {
4212 _env->ReleasePrimitiveArrayCritical(param_ref, param_base,
4213 JNI_ABORT);
4214 }
4215 if (_exception) {
4216 jniThrowException(_env, _exceptionType, _exceptionMessage);
4217 }
4218}
4219
4220/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */
4221static void
4222android_glSamplerParameteriv__IILjava_nio_IntBuffer_2
4223 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
4224 jarray _array = (jarray) 0;
4225 jint _bufferOffset = (jint) 0;
4226 jint _remaining;
4227 GLint *param = (GLint *) 0;
4228
4229 param = (GLint *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset);
4230 if (param == NULL) {
4231 char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4232 param = (GLint *) (_paramBase + _bufferOffset);
4233 }
4234 glSamplerParameteriv(
4235 (GLuint)sampler,
4236 (GLenum)pname,
4237 (GLint *)param
4238 );
4239 if (_array) {
4240 releasePointer(_env, _array, param, JNI_FALSE);
4241 }
4242}
4243
4244/* void glSamplerParameterf ( GLuint sampler, GLenum pname, GLfloat param ) */
4245static void
4246android_glSamplerParameterf__IIF
4247 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloat param) {
4248 glSamplerParameterf(
4249 (GLuint)sampler,
4250 (GLenum)pname,
4251 (GLfloat)param
4252 );
4253}
4254
4255/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */
4256static void
4257android_glSamplerParameterfv__II_3FI
4258 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray param_ref, jint offset) {
4259 jint _exception = 0;
4260 const char * _exceptionType = NULL;
4261 const char * _exceptionMessage = NULL;
4262 GLfloat *param_base = (GLfloat *) 0;
4263 jint _remaining;
4264 GLfloat *param = (GLfloat *) 0;
4265
4266 if (!param_ref) {
4267 _exception = 1;
4268 _exceptionType = "java/lang/IllegalArgumentException";
4269 _exceptionMessage = "param == null";
4270 goto exit;
4271 }
4272 if (offset < 0) {
4273 _exception = 1;
4274 _exceptionType = "java/lang/IllegalArgumentException";
4275 _exceptionMessage = "offset < 0";
4276 goto exit;
4277 }
4278 _remaining = _env->GetArrayLength(param_ref) - offset;
4279 param_base = (GLfloat *)
4280 _env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0);
4281 param = param_base + offset;
4282
4283 glSamplerParameterfv(
4284 (GLuint)sampler,
4285 (GLenum)pname,
4286 (GLfloat *)param
4287 );
4288
4289exit:
4290 if (param_base) {
4291 _env->ReleasePrimitiveArrayCritical(param_ref, param_base,
4292 JNI_ABORT);
4293 }
4294 if (_exception) {
4295 jniThrowException(_env, _exceptionType, _exceptionMessage);
4296 }
4297}
4298
4299/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */
4300static void
4301android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2
4302 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
4303 jarray _array = (jarray) 0;
4304 jint _bufferOffset = (jint) 0;
4305 jint _remaining;
4306 GLfloat *param = (GLfloat *) 0;
4307
4308 param = (GLfloat *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset);
4309 if (param == NULL) {
4310 char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4311 param = (GLfloat *) (_paramBase + _bufferOffset);
4312 }
4313 glSamplerParameterfv(
4314 (GLuint)sampler,
4315 (GLenum)pname,
4316 (GLfloat *)param
4317 );
4318 if (_array) {
4319 releasePointer(_env, _array, param, JNI_FALSE);
4320 }
4321}
4322
4323/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */
4324static void
4325android_glGetSamplerParameteriv__II_3II
4326 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) {
4327 jint _exception = 0;
4328 const char * _exceptionType = NULL;
4329 const char * _exceptionMessage = NULL;
4330 GLint *params_base = (GLint *) 0;
4331 jint _remaining;
4332 GLint *params = (GLint *) 0;
4333
4334 if (!params_ref) {
4335 _exception = 1;
4336 _exceptionType = "java/lang/IllegalArgumentException";
4337 _exceptionMessage = "params == null";
4338 goto exit;
4339 }
4340 if (offset < 0) {
4341 _exception = 1;
4342 _exceptionType = "java/lang/IllegalArgumentException";
4343 _exceptionMessage = "offset < 0";
4344 goto exit;
4345 }
4346 _remaining = _env->GetArrayLength(params_ref) - offset;
4347 params_base = (GLint *)
4348 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4349 params = params_base + offset;
4350
4351 glGetSamplerParameteriv(
4352 (GLuint)sampler,
4353 (GLenum)pname,
4354 (GLint *)params
4355 );
4356
4357exit:
4358 if (params_base) {
4359 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4360 _exception ? JNI_ABORT: 0);
4361 }
4362 if (_exception) {
4363 jniThrowException(_env, _exceptionType, _exceptionMessage);
4364 }
4365}
4366
4367/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */
4368static void
4369android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2
4370 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
4371 jarray _array = (jarray) 0;
4372 jint _bufferOffset = (jint) 0;
4373 jint _remaining;
4374 GLint *params = (GLint *) 0;
4375
4376 params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4377 if (params == NULL) {
4378 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4379 params = (GLint *) (_paramsBase + _bufferOffset);
4380 }
4381 glGetSamplerParameteriv(
4382 (GLuint)sampler,
4383 (GLenum)pname,
4384 (GLint *)params
4385 );
4386 if (_array) {
4387 releasePointer(_env, _array, params, JNI_TRUE);
4388 }
4389}
4390
4391/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */
4392static void
4393android_glGetSamplerParameterfv__II_3FI
4394 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray params_ref, jint offset) {
4395 jint _exception = 0;
4396 const char * _exceptionType = NULL;
4397 const char * _exceptionMessage = NULL;
4398 GLfloat *params_base = (GLfloat *) 0;
4399 jint _remaining;
4400 GLfloat *params = (GLfloat *) 0;
4401
4402 if (!params_ref) {
4403 _exception = 1;
4404 _exceptionType = "java/lang/IllegalArgumentException";
4405 _exceptionMessage = "params == null";
4406 goto exit;
4407 }
4408 if (offset < 0) {
4409 _exception = 1;
4410 _exceptionType = "java/lang/IllegalArgumentException";
4411 _exceptionMessage = "offset < 0";
4412 goto exit;
4413 }
4414 _remaining = _env->GetArrayLength(params_ref) - offset;
4415 params_base = (GLfloat *)
4416 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4417 params = params_base + offset;
4418
4419 glGetSamplerParameterfv(
4420 (GLuint)sampler,
4421 (GLenum)pname,
4422 (GLfloat *)params
4423 );
4424
4425exit:
4426 if (params_base) {
4427 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4428 _exception ? JNI_ABORT: 0);
4429 }
4430 if (_exception) {
4431 jniThrowException(_env, _exceptionType, _exceptionMessage);
4432 }
4433}
4434
4435/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */
4436static void
4437android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2
4438 (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
4439 jarray _array = (jarray) 0;
4440 jint _bufferOffset = (jint) 0;
4441 jint _remaining;
4442 GLfloat *params = (GLfloat *) 0;
4443
4444 params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4445 if (params == NULL) {
4446 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4447 params = (GLfloat *) (_paramsBase + _bufferOffset);
4448 }
4449 glGetSamplerParameterfv(
4450 (GLuint)sampler,
4451 (GLenum)pname,
4452 (GLfloat *)params
4453 );
4454 if (_array) {
4455 releasePointer(_env, _array, params, JNI_TRUE);
4456 }
4457}
4458
4459/* void glVertexAttribDivisor ( GLuint index, GLuint divisor ) */
4460static void
4461android_glVertexAttribDivisor__II
4462 (JNIEnv *_env, jobject _this, jint index, jint divisor) {
4463 glVertexAttribDivisor(
4464 (GLuint)index,
4465 (GLuint)divisor
4466 );
4467}
4468
4469/* void glBindTransformFeedback ( GLenum target, GLuint id ) */
4470static void
4471android_glBindTransformFeedback__II
4472 (JNIEnv *_env, jobject _this, jint target, jint id) {
4473 glBindTransformFeedback(
4474 (GLenum)target,
4475 (GLuint)id
4476 );
4477}
4478
4479/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */
4480static void
4481android_glDeleteTransformFeedbacks__I_3II
4482 (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
4483 jint _exception = 0;
4484 const char * _exceptionType = NULL;
4485 const char * _exceptionMessage = NULL;
4486 GLuint *ids_base = (GLuint *) 0;
4487 jint _remaining;
4488 GLuint *ids = (GLuint *) 0;
4489
4490 if (!ids_ref) {
4491 _exception = 1;
4492 _exceptionType = "java/lang/IllegalArgumentException";
4493 _exceptionMessage = "ids == null";
4494 goto exit;
4495 }
4496 if (offset < 0) {
4497 _exception = 1;
4498 _exceptionType = "java/lang/IllegalArgumentException";
4499 _exceptionMessage = "offset < 0";
4500 goto exit;
4501 }
4502 _remaining = _env->GetArrayLength(ids_ref) - offset;
4503 ids_base = (GLuint *)
4504 _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
4505 ids = ids_base + offset;
4506
4507 glDeleteTransformFeedbacks(
4508 (GLsizei)n,
4509 (GLuint *)ids
4510 );
4511
4512exit:
4513 if (ids_base) {
4514 _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
4515 JNI_ABORT);
4516 }
4517 if (_exception) {
4518 jniThrowException(_env, _exceptionType, _exceptionMessage);
4519 }
4520}
4521
4522/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */
4523static void
4524android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2
4525 (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
4526 jarray _array = (jarray) 0;
4527 jint _bufferOffset = (jint) 0;
4528 jint _remaining;
4529 GLuint *ids = (GLuint *) 0;
4530
4531 ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
4532 if (ids == NULL) {
4533 char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4534 ids = (GLuint *) (_idsBase + _bufferOffset);
4535 }
4536 glDeleteTransformFeedbacks(
4537 (GLsizei)n,
4538 (GLuint *)ids
4539 );
4540 if (_array) {
4541 releasePointer(_env, _array, ids, JNI_FALSE);
4542 }
4543}
4544
4545/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */
4546static void
4547android_glGenTransformFeedbacks__I_3II
4548 (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) {
4549 jint _exception = 0;
4550 const char * _exceptionType = NULL;
4551 const char * _exceptionMessage = NULL;
4552 GLuint *ids_base = (GLuint *) 0;
4553 jint _remaining;
4554 GLuint *ids = (GLuint *) 0;
4555
4556 if (!ids_ref) {
4557 _exception = 1;
4558 _exceptionType = "java/lang/IllegalArgumentException";
4559 _exceptionMessage = "ids == null";
4560 goto exit;
4561 }
4562 if (offset < 0) {
4563 _exception = 1;
4564 _exceptionType = "java/lang/IllegalArgumentException";
4565 _exceptionMessage = "offset < 0";
4566 goto exit;
4567 }
4568 _remaining = _env->GetArrayLength(ids_ref) - offset;
4569 ids_base = (GLuint *)
4570 _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
4571 ids = ids_base + offset;
4572
4573 glGenTransformFeedbacks(
4574 (GLsizei)n,
4575 (GLuint *)ids
4576 );
4577
4578exit:
4579 if (ids_base) {
4580 _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
4581 _exception ? JNI_ABORT: 0);
4582 }
4583 if (_exception) {
4584 jniThrowException(_env, _exceptionType, _exceptionMessage);
4585 }
4586}
4587
4588/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */
4589static void
4590android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2
4591 (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) {
4592 jarray _array = (jarray) 0;
4593 jint _bufferOffset = (jint) 0;
4594 jint _remaining;
4595 GLuint *ids = (GLuint *) 0;
4596
4597 ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
4598 if (ids == NULL) {
4599 char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4600 ids = (GLuint *) (_idsBase + _bufferOffset);
4601 }
4602 glGenTransformFeedbacks(
4603 (GLsizei)n,
4604 (GLuint *)ids
4605 );
4606 if (_array) {
4607 releasePointer(_env, _array, ids, JNI_TRUE);
4608 }
4609}
4610
4611/* GLboolean glIsTransformFeedback ( GLuint id ) */
4612static jboolean
4613android_glIsTransformFeedback__I
4614 (JNIEnv *_env, jobject _this, jint id) {
4615 GLboolean _returnValue;
4616 _returnValue = glIsTransformFeedback(
4617 (GLuint)id
4618 );
4619 return (jboolean)_returnValue;
4620}
4621
4622/* void glPauseTransformFeedback ( void ) */
4623static void
4624android_glPauseTransformFeedback__
4625 (JNIEnv *_env, jobject _this) {
4626 glPauseTransformFeedback();
4627}
4628
4629/* void glResumeTransformFeedback ( void ) */
4630static void
4631android_glResumeTransformFeedback__
4632 (JNIEnv *_env, jobject _this) {
4633 glResumeTransformFeedback();
4634}
4635
4636/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */
4637static void
4638android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2
4639 (JNIEnv *_env, jobject _this, jint program, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray binaryFormat_ref, jint binaryFormatOffset, jobject binary_buf) {
4640 jint _exception = 0;
4641 const char * _exceptionType = NULL;
4642 const char * _exceptionMessage = NULL;
4643 jarray _array = (jarray) 0;
4644 jint _bufferOffset = (jint) 0;
4645 GLsizei *length_base = (GLsizei *) 0;
4646 jint _lengthRemaining;
4647 GLsizei *length = (GLsizei *) 0;
4648 GLenum *binaryFormat_base = (GLenum *) 0;
4649 jint _binaryFormatRemaining;
4650 GLenum *binaryFormat = (GLenum *) 0;
4651 jint _binaryRemaining;
4652 GLvoid *binary = (GLvoid *) 0;
4653
4654 if (!length_ref) {
4655 _exception = 1;
4656 _exceptionType = "java/lang/IllegalArgumentException";
4657 _exceptionMessage = "length == null";
4658 goto exit;
4659 }
4660 if (lengthOffset < 0) {
4661 _exception = 1;
4662 _exceptionType = "java/lang/IllegalArgumentException";
4663 _exceptionMessage = "lengthOffset < 0";
4664 goto exit;
4665 }
4666 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
4667 length_base = (GLsizei *)
4668 _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
4669 length = length_base + lengthOffset;
4670
4671 if (!binaryFormat_ref) {
4672 _exception = 1;
4673 _exceptionType = "java/lang/IllegalArgumentException";
4674 _exceptionMessage = "binaryFormat == null";
4675 goto exit;
4676 }
4677 if (binaryFormatOffset < 0) {
4678 _exception = 1;
4679 _exceptionType = "java/lang/IllegalArgumentException";
4680 _exceptionMessage = "binaryFormatOffset < 0";
4681 goto exit;
4682 }
4683 _binaryFormatRemaining = _env->GetArrayLength(binaryFormat_ref) - binaryFormatOffset;
4684 binaryFormat_base = (GLenum *)
4685 _env->GetPrimitiveArrayCritical(binaryFormat_ref, (jboolean *)0);
4686 binaryFormat = binaryFormat_base + binaryFormatOffset;
4687
4688 binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset);
4689 if (binary == NULL) {
4690 char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4691 binary = (GLvoid *) (_binaryBase + _bufferOffset);
4692 }
4693 glGetProgramBinary(
4694 (GLuint)program,
4695 (GLsizei)bufSize,
4696 (GLsizei *)length,
4697 (GLenum *)binaryFormat,
4698 (GLvoid *)binary
4699 );
4700
4701exit:
4702 if (_array) {
4703 releasePointer(_env, _array, binary, _exception ? JNI_FALSE : JNI_TRUE);
4704 }
4705 if (binaryFormat_base) {
4706 _env->ReleasePrimitiveArrayCritical(binaryFormat_ref, binaryFormat_base,
4707 _exception ? JNI_ABORT: 0);
4708 }
4709 if (length_base) {
4710 _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
4711 _exception ? JNI_ABORT: 0);
4712 }
4713 if (_exception) {
4714 jniThrowException(_env, _exceptionType, _exceptionMessage);
4715 }
4716}
4717
4718/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */
4719static void
4720android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2
4721 (JNIEnv *_env, jobject _this, jint program, jint bufSize, jobject length_buf, jobject binaryFormat_buf, jobject binary_buf) {
4722 jarray _lengthArray = (jarray) 0;
4723 jint _lengthBufferOffset = (jint) 0;
4724 jarray _binaryFormatArray = (jarray) 0;
4725 jint _binaryFormatBufferOffset = (jint) 0;
4726 jarray _binaryArray = (jarray) 0;
4727 jint _binaryBufferOffset = (jint) 0;
4728 jint _lengthRemaining;
4729 GLsizei *length = (GLsizei *) 0;
4730 jint _binaryFormatRemaining;
4731 GLenum *binaryFormat = (GLenum *) 0;
4732 jint _binaryRemaining;
4733 GLvoid *binary = (GLvoid *) 0;
4734
4735 length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
4736 binaryFormat = (GLenum *)getPointer(_env, binaryFormat_buf, &_binaryFormatArray, &_binaryFormatRemaining, &_binaryFormatBufferOffset);
4737 binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset);
4738 if (length == NULL) {
4739 char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
4740 length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
4741 }
4742 if (binaryFormat == NULL) {
4743 char * _binaryFormatBase = (char *)_env->GetPrimitiveArrayCritical(_binaryFormatArray, (jboolean *) 0);
4744 binaryFormat = (GLenum *) (_binaryFormatBase + _binaryFormatBufferOffset);
4745 }
4746 if (binary == NULL) {
4747 char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0);
4748 binary = (GLvoid *) (_binaryBase + _binaryBufferOffset);
4749 }
4750 glGetProgramBinary(
4751 (GLuint)program,
4752 (GLsizei)bufSize,
4753 (GLsizei *)length,
4754 (GLenum *)binaryFormat,
4755 (GLvoid *)binary
4756 );
4757 if (_binaryArray) {
4758 releasePointer(_env, _binaryArray, binary, JNI_TRUE);
4759 }
4760 if (_binaryFormatArray) {
4761 releasePointer(_env, _binaryFormatArray, binaryFormat, JNI_TRUE);
4762 }
4763 if (_lengthArray) {
4764 releasePointer(_env, _lengthArray, length, JNI_TRUE);
4765 }
4766}
4767
4768/* void glProgramBinary ( GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length ) */
4769static void
4770android_glProgramBinary__IILjava_nio_Buffer_2I
4771 (JNIEnv *_env, jobject _this, jint program, jint binaryFormat, jobject binary_buf, jint length) {
4772 jarray _array = (jarray) 0;
4773 jint _bufferOffset = (jint) 0;
4774 jint _remaining;
4775 GLvoid *binary = (GLvoid *) 0;
4776
4777 binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_remaining, &_bufferOffset);
4778 if (binary == NULL) {
4779 char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4780 binary = (GLvoid *) (_binaryBase + _bufferOffset);
4781 }
4782 glProgramBinary(
4783 (GLuint)program,
4784 (GLenum)binaryFormat,
4785 (GLvoid *)binary,
4786 (GLsizei)length
4787 );
4788 if (_array) {
4789 releasePointer(_env, _array, binary, JNI_FALSE);
4790 }
4791}
4792
4793/* void glProgramParameteri ( GLuint program, GLenum pname, GLint value ) */
4794static void
4795android_glProgramParameteri__III
4796 (JNIEnv *_env, jobject _this, jint program, jint pname, jint value) {
4797 glProgramParameteri(
4798 (GLuint)program,
4799 (GLenum)pname,
4800 (GLint)value
4801 );
4802}
4803
4804/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */
4805static void
4806android_glInvalidateFramebuffer__II_3II
4807 (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset) {
4808 jint _exception = 0;
4809 const char * _exceptionType = NULL;
4810 const char * _exceptionMessage = NULL;
4811 GLenum *attachments_base = (GLenum *) 0;
4812 jint _remaining;
4813 GLenum *attachments = (GLenum *) 0;
4814
4815 if (!attachments_ref) {
4816 _exception = 1;
4817 _exceptionType = "java/lang/IllegalArgumentException";
4818 _exceptionMessage = "attachments == null";
4819 goto exit;
4820 }
4821 if (offset < 0) {
4822 _exception = 1;
4823 _exceptionType = "java/lang/IllegalArgumentException";
4824 _exceptionMessage = "offset < 0";
4825 goto exit;
4826 }
4827 _remaining = _env->GetArrayLength(attachments_ref) - offset;
4828 attachments_base = (GLenum *)
4829 _env->GetPrimitiveArrayCritical(attachments_ref, (jboolean *)0);
4830 attachments = attachments_base + offset;
4831
4832 glInvalidateFramebuffer(
4833 (GLenum)target,
4834 (GLsizei)numAttachments,
4835 (GLenum *)attachments
4836 );
4837
4838exit:
4839 if (attachments_base) {
4840 _env->ReleasePrimitiveArrayCritical(attachments_ref, attachments_base,
4841 JNI_ABORT);
4842 }
4843 if (_exception) {
4844 jniThrowException(_env, _exceptionType, _exceptionMessage);
4845 }
4846}
4847
4848/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */
4849static void
4850android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2
4851 (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf) {
4852 jarray _array = (jarray) 0;
4853 jint _bufferOffset = (jint) 0;
4854 jint _remaining;
4855 GLenum *attachments = (GLenum *) 0;
4856
4857 attachments = (GLenum *)getPointer(_env, attachments_buf, &_array, &_remaining, &_bufferOffset);
4858 if (attachments == NULL) {
4859 char * _attachmentsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4860 attachments = (GLenum *) (_attachmentsBase + _bufferOffset);
4861 }
4862 glInvalidateFramebuffer(
4863 (GLenum)target,
4864 (GLsizei)numAttachments,
4865 (GLenum *)attachments
4866 );
4867 if (_array) {
4868 releasePointer(_env, _array, attachments, JNI_FALSE);
4869 }
4870}
4871
4872/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */
4873static void
4874android_glInvalidateSubFramebuffer__II_3IIIIII
4875 (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset, jint x, jint y, jint width, jint height) {
4876 jint _exception = 0;
4877 const char * _exceptionType = NULL;
4878 const char * _exceptionMessage = NULL;
4879 GLenum *attachments_base = (GLenum *) 0;
4880 jint _remaining;
4881 GLenum *attachments = (GLenum *) 0;
4882
4883 if (!attachments_ref) {
4884 _exception = 1;
4885 _exceptionType = "java/lang/IllegalArgumentException";
4886 _exceptionMessage = "attachments == null";
4887 goto exit;
4888 }
4889 if (offset < 0) {
4890 _exception = 1;
4891 _exceptionType = "java/lang/IllegalArgumentException";
4892 _exceptionMessage = "offset < 0";
4893 goto exit;
4894 }
4895 _remaining = _env->GetArrayLength(attachments_ref) - offset;
4896 attachments_base = (GLenum *)
4897 _env->GetPrimitiveArrayCritical(attachments_ref, (jboolean *)0);
4898 attachments = attachments_base + offset;
4899
4900 glInvalidateSubFramebuffer(
4901 (GLenum)target,
4902 (GLsizei)numAttachments,
4903 (GLenum *)attachments,
4904 (GLint)x,
4905 (GLint)y,
4906 (GLsizei)width,
4907 (GLsizei)height
4908 );
4909
4910exit:
4911 if (attachments_base) {
4912 _env->ReleasePrimitiveArrayCritical(attachments_ref, attachments_base,
4913 JNI_ABORT);
4914 }
4915 if (_exception) {
4916 jniThrowException(_env, _exceptionType, _exceptionMessage);
4917 }
4918}
4919
4920/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */
4921static void
4922android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII
4923 (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf, jint x, jint y, jint width, jint height) {
4924 jarray _array = (jarray) 0;
4925 jint _bufferOffset = (jint) 0;
4926 jint _remaining;
4927 GLenum *attachments = (GLenum *) 0;
4928
4929 attachments = (GLenum *)getPointer(_env, attachments_buf, &_array, &_remaining, &_bufferOffset);
4930 if (attachments == NULL) {
4931 char * _attachmentsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
4932 attachments = (GLenum *) (_attachmentsBase + _bufferOffset);
4933 }
4934 glInvalidateSubFramebuffer(
4935 (GLenum)target,
4936 (GLsizei)numAttachments,
4937 (GLenum *)attachments,
4938 (GLint)x,
4939 (GLint)y,
4940 (GLsizei)width,
4941 (GLsizei)height
4942 );
4943 if (_array) {
4944 releasePointer(_env, _array, attachments, JNI_FALSE);
4945 }
4946}
4947
4948/* void glTexStorage2D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) */
4949static void
4950android_glTexStorage2D__IIIII
4951 (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height) {
4952 glTexStorage2D(
4953 (GLenum)target,
4954 (GLsizei)levels,
4955 (GLenum)internalformat,
4956 (GLsizei)width,
4957 (GLsizei)height
4958 );
4959}
4960
4961/* void glTexStorage3D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) */
4962static void
4963android_glTexStorage3D__IIIIII
4964 (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height, jint depth) {
4965 glTexStorage3D(
4966 (GLenum)target,
4967 (GLsizei)levels,
4968 (GLenum)internalformat,
4969 (GLsizei)width,
4970 (GLsizei)height,
4971 (GLsizei)depth
4972 );
4973}
4974
4975/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */
4976static void
4977android_glGetInternalformativ__IIII_3II
4978 (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jintArray params_ref, jint offset) {
4979 jint _exception = 0;
4980 const char * _exceptionType = NULL;
4981 const char * _exceptionMessage = NULL;
4982 GLint *params_base = (GLint *) 0;
4983 jint _remaining;
4984 GLint *params = (GLint *) 0;
4985
4986 if (!params_ref) {
4987 _exception = 1;
4988 _exceptionType = "java/lang/IllegalArgumentException";
4989 _exceptionMessage = "params == null";
4990 goto exit;
4991 }
4992 if (offset < 0) {
4993 _exception = 1;
4994 _exceptionType = "java/lang/IllegalArgumentException";
4995 _exceptionMessage = "offset < 0";
4996 goto exit;
4997 }
4998 _remaining = _env->GetArrayLength(params_ref) - offset;
4999 params_base = (GLint *)
5000 _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
5001 params = params_base + offset;
5002
5003 glGetInternalformativ(
5004 (GLenum)target,
5005 (GLenum)internalformat,
5006 (GLenum)pname,
5007 (GLsizei)bufSize,
5008 (GLint *)params
5009 );
5010
5011exit:
5012 if (params_base) {
5013 _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
5014 _exception ? JNI_ABORT: 0);
5015 }
5016 if (_exception) {
5017 jniThrowException(_env, _exceptionType, _exceptionMessage);
5018 }
5019}
5020
5021/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */
5022static void
5023android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2
5024 (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jobject params_buf) {
5025 jarray _array = (jarray) 0;
5026 jint _bufferOffset = (jint) 0;
5027 jint _remaining;
5028 GLint *params = (GLint *) 0;
5029
5030 params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
5031 if (params == NULL) {
5032 char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
5033 params = (GLint *) (_paramsBase + _bufferOffset);
5034 }
5035 glGetInternalformativ(
5036 (GLenum)target,
5037 (GLenum)internalformat,
5038 (GLenum)pname,
5039 (GLsizei)bufSize,
5040 (GLint *)params
5041 );
5042 if (_array) {
5043 releasePointer(_env, _array, params, JNI_TRUE);
5044 }
5045}
5046
5047static const char *classPathName = "android/opengl/GLES30";
5048
5049static JNINativeMethod methods[] = {
5050{"_nativeClassInit", "()V", (void*)nativeClassInit },
5051{"glReadBuffer", "(I)V", (void *) android_glReadBuffer__I },
5052{"glDrawRangeElements", "(IIIIILjava/nio/Buffer;)V", (void *) android_glDrawRangeElements__IIIIILjava_nio_Buffer_2 },
5053{"glDrawRangeElements", "(IIIIII)V", (void *) android_glDrawRangeElements__IIIIII },
5054{"glTexImage3D", "(IIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 },
5055{"glTexImage3D", "(IIIIIIIIII)V", (void *) android_glTexImage3D__IIIIIIIIII },
5056{"glTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 },
5057{"glTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glTexSubImage3D__IIIIIIIIIII },
5058{"glCopyTexSubImage3D", "(IIIIIIIII)V", (void *) android_glCopyTexSubImage3D__IIIIIIIII },
5059{"glCompressedTexImage3D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 },
5060{"glCompressedTexImage3D", "(IIIIIIIII)V", (void *) android_glCompressedTexImage3D__IIIIIIIII },
5061{"glCompressedTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 },
5062{"glCompressedTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIII },
5063{"glGenQueries", "(I[II)V", (void *) android_glGenQueries__I_3II },
5064{"glGenQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenQueries__ILjava_nio_IntBuffer_2 },
5065{"glDeleteQueries", "(I[II)V", (void *) android_glDeleteQueries__I_3II },
5066{"glDeleteQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteQueries__ILjava_nio_IntBuffer_2 },
5067{"glIsQuery", "(I)Z", (void *) android_glIsQuery__I },
5068{"glBeginQuery", "(II)V", (void *) android_glBeginQuery__II },
5069{"glEndQuery", "(I)V", (void *) android_glEndQuery__I },
5070{"glGetQueryiv", "(II[II)V", (void *) android_glGetQueryiv__II_3II },
5071{"glGetQueryiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryiv__IILjava_nio_IntBuffer_2 },
5072{"glGetQueryObjectuiv", "(II[II)V", (void *) android_glGetQueryObjectuiv__II_3II },
5073{"glGetQueryObjectuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 },
5074{"glUnmapBuffer", "(I)Z", (void *) android_glUnmapBuffer__I },
5075{"glGetBufferPointerv", "(II)Ljava/nio/Buffer;", (void *) android_glGetBufferPointerv__II },
5076{"glDrawBuffers", "(I[II)V", (void *) android_glDrawBuffers__I_3II },
5077{"glDrawBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDrawBuffers__ILjava_nio_IntBuffer_2 },
5078{"glUniformMatrix2x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x3fv__IIZ_3FI },
5079{"glUniformMatrix2x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 },
5080{"glUniformMatrix3x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x2fv__IIZ_3FI },
5081{"glUniformMatrix3x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 },
5082{"glUniformMatrix2x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x4fv__IIZ_3FI },
5083{"glUniformMatrix2x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 },
5084{"glUniformMatrix4x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x2fv__IIZ_3FI },
5085{"glUniformMatrix4x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 },
5086{"glUniformMatrix3x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x4fv__IIZ_3FI },
5087{"glUniformMatrix3x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 },
5088{"glUniformMatrix4x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x3fv__IIZ_3FI },
5089{"glUniformMatrix4x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 },
5090{"glBlitFramebuffer", "(IIIIIIIIII)V", (void *) android_glBlitFramebuffer__IIIIIIIIII },
5091{"glRenderbufferStorageMultisample", "(IIIII)V", (void *) android_glRenderbufferStorageMultisample__IIIII },
5092{"glFramebufferTextureLayer", "(IIIII)V", (void *) android_glFramebufferTextureLayer__IIIII },
5093{"glMapBufferRange", "(IIII)Ljava/nio/Buffer;", (void *) android_glMapBufferRange__IIII },
5094{"glFlushMappedBufferRange", "(III)V", (void *) android_glFlushMappedBufferRange__III },
5095{"glBindVertexArray", "(I)V", (void *) android_glBindVertexArray__I },
5096{"glDeleteVertexArrays", "(I[II)V", (void *) android_glDeleteVertexArrays__I_3II },
5097{"glDeleteVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 },
5098{"glGenVertexArrays", "(I[II)V", (void *) android_glGenVertexArrays__I_3II },
5099{"glGenVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenVertexArrays__ILjava_nio_IntBuffer_2 },
5100{"glIsVertexArray", "(I)Z", (void *) android_glIsVertexArray__I },
5101{"glGetIntegeri_v", "(II[II)V", (void *) android_glGetIntegeri_v__II_3II },
5102{"glGetIntegeri_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetIntegeri_v__IILjava_nio_IntBuffer_2 },
5103{"glBeginTransformFeedback", "(I)V", (void *) android_glBeginTransformFeedback__I },
5104{"glEndTransformFeedback", "()V", (void *) android_glEndTransformFeedback__ },
5105{"glBindBufferRange", "(IIIII)V", (void *) android_glBindBufferRange__IIIII },
5106{"glBindBufferBase", "(III)V", (void *) android_glBindBufferBase__III },
5107{"glTransformFeedbackVaryings", "(I[Ljava/lang/String;I)V", (void *) android_glTransformFeedbackVaryings },
5108{"glGetTransformFeedbackVarying", "(III[II[II[II[BI)V", (void *) android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI },
5109{"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 },
5110{"glGetTransformFeedbackVarying", "(II[II[II)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying1 },
5111{"glGetTransformFeedbackVarying", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying2 },
5112{"glVertexAttribIPointerBounds", "(IIIILjava/nio/Buffer;I)V", (void *) android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I },
5113{"glVertexAttribIPointer", "(IIIII)V", (void *) android_glVertexAttribIPointer__IIIII },
5114{"glGetVertexAttribIiv", "(II[II)V", (void *) android_glGetVertexAttribIiv__II_3II },
5115{"glGetVertexAttribIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 },
5116{"glGetVertexAttribIuiv", "(II[II)V", (void *) android_glGetVertexAttribIuiv__II_3II },
5117{"glGetVertexAttribIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 },
5118{"glVertexAttribI4i", "(IIIII)V", (void *) android_glVertexAttribI4i__IIIII },
5119{"glVertexAttribI4ui", "(IIIII)V", (void *) android_glVertexAttribI4ui__IIIII },
5120{"glVertexAttribI4iv", "(I[II)V", (void *) android_glVertexAttribI4iv__I_3II },
5121{"glVertexAttribI4iv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 },
5122{"glVertexAttribI4uiv", "(I[II)V", (void *) android_glVertexAttribI4uiv__I_3II },
5123{"glVertexAttribI4uiv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 },
5124{"glGetUniformuiv", "(II[II)V", (void *) android_glGetUniformuiv__II_3II },
5125{"glGetUniformuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformuiv__IILjava_nio_IntBuffer_2 },
5126{"glGetFragDataLocation", "(ILjava/lang/String;)I", (void *) android_glGetFragDataLocation__ILjava_lang_String_2 },
5127{"glUniform1ui", "(II)V", (void *) android_glUniform1ui__II },
5128{"glUniform2ui", "(III)V", (void *) android_glUniform2ui__III },
5129{"glUniform3ui", "(IIII)V", (void *) android_glUniform3ui__IIII },
5130{"glUniform4ui", "(IIIII)V", (void *) android_glUniform4ui__IIIII },
5131{"glUniform1uiv", "(II[II)V", (void *) android_glUniform1uiv__II_3II },
5132{"glUniform1uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1uiv__IILjava_nio_IntBuffer_2 },
5133{"glUniform2uiv", "(II[II)V", (void *) android_glUniform2uiv__II_3II },
5134{"glUniform2uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2uiv__IILjava_nio_IntBuffer_2 },
5135{"glUniform3uiv", "(II[II)V", (void *) android_glUniform3uiv__II_3II },
5136{"glUniform3uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3uiv__IILjava_nio_IntBuffer_2 },
5137{"glUniform4uiv", "(II[II)V", (void *) android_glUniform4uiv__II_3II },
5138{"glUniform4uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4uiv__IILjava_nio_IntBuffer_2 },
5139{"glClearBufferiv", "(II[II)V", (void *) android_glClearBufferiv__II_3II },
5140{"glClearBufferiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferiv__IILjava_nio_IntBuffer_2 },
5141{"glClearBufferuiv", "(II[II)V", (void *) android_glClearBufferuiv__II_3II },
5142{"glClearBufferuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferuiv__IILjava_nio_IntBuffer_2 },
5143{"glClearBufferfv", "(II[FI)V", (void *) android_glClearBufferfv__II_3FI },
5144{"glClearBufferfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glClearBufferfv__IILjava_nio_FloatBuffer_2 },
5145{"glClearBufferfi", "(IIFI)V", (void *) android_glClearBufferfi__IIFI },
5146{"glGetStringi", "(II)Ljava/lang/String;", (void *) android_glGetStringi__II },
5147{"glCopyBufferSubData", "(IIIII)V", (void *) android_glCopyBufferSubData__IIIII },
5148{"glGetUniformIndices", "(I[Ljava/lang/String;[II)V", (void *) android_glGetUniformIndices_array },
Jesse Halld877efe2013-04-29 15:59:35 -07005149{"glGetUniformIndices", "(I[Ljava/lang/String;Ljava/nio/IntBuffer;)V", (void *) android_glGetUniformIndices_buffer },
Jesse Halld830e742013-03-29 11:02:35 -07005150{"glGetActiveUniformsiv", "(II[III[II)V", (void *) android_glGetActiveUniformsiv__II_3III_3II },
5151{"glGetActiveUniformsiv", "(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 },
5152{"glGetUniformBlockIndex", "(ILjava/lang/String;)I", (void *) android_glGetUniformBlockIndex__ILjava_lang_String_2 },
5153{"glGetActiveUniformBlockiv", "(III[II)V", (void *) android_glGetActiveUniformBlockiv__III_3II },
5154{"glGetActiveUniformBlockiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 },
5155{"glGetActiveUniformBlockName", "(III[II[BI)V", (void *) android_glGetActiveUniformBlockName_III_3II_3BI },
5156{"glGetActiveUniformBlockName", "(IILjava/nio/Buffer;Ljava/nio/Buffer;)V", (void *) android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 },
5157{"glGetActiveUniformBlockName", "(II)Ljava/lang/String;", (void *) android_glGetActiveUniformBlockName_II },
5158{"glUniformBlockBinding", "(III)V", (void *) android_glUniformBlockBinding__III },
5159{"glDrawArraysInstanced", "(IIII)V", (void *) android_glDrawArraysInstanced__IIII },
5160{"glDrawElementsInstanced", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I },
5161{"glDrawElementsInstanced", "(IIIII)V", (void *) android_glDrawElementsInstanced__IIIII },
5162{"glFenceSync", "(II)J", (void *) android_glFenceSync__II },
5163{"glIsSync", "(J)Z", (void *) android_glIsSync__J },
5164{"glDeleteSync", "(J)V", (void *) android_glDeleteSync__J },
5165{"glClientWaitSync", "(JIJ)I", (void *) android_glClientWaitSync__JIJ },
5166{"glWaitSync", "(JIJ)V", (void *) android_glWaitSync__JIJ },
5167{"glGetInteger64v", "(I[JI)V", (void *) android_glGetInteger64v__I_3JI },
5168{"glGetInteger64v", "(ILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64v__ILjava_nio_LongBuffer_2 },
5169{"glGetSynciv", "(JII[II[II)V", (void *) android_glGetSynciv__JII_3II_3II },
5170{"glGetSynciv", "(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
5171{"glGetInteger64i_v", "(II[JI)V", (void *) android_glGetInteger64i_v__II_3JI },
5172{"glGetInteger64i_v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64i_v__IILjava_nio_LongBuffer_2 },
5173{"glGetBufferParameteri64v", "(II[JI)V", (void *) android_glGetBufferParameteri64v__II_3JI },
5174{"glGetBufferParameteri64v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 },
5175{"glGenSamplers", "(I[II)V", (void *) android_glGenSamplers__I_3II },
5176{"glGenSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenSamplers__ILjava_nio_IntBuffer_2 },
5177{"glDeleteSamplers", "(I[II)V", (void *) android_glDeleteSamplers__I_3II },
5178{"glDeleteSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteSamplers__ILjava_nio_IntBuffer_2 },
5179{"glIsSampler", "(I)Z", (void *) android_glIsSampler__I },
5180{"glBindSampler", "(II)V", (void *) android_glBindSampler__II },
5181{"glSamplerParameteri", "(III)V", (void *) android_glSamplerParameteri__III },
5182{"glSamplerParameteriv", "(II[II)V", (void *) android_glSamplerParameteriv__II_3II },
5183{"glSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameteriv__IILjava_nio_IntBuffer_2 },
5184{"glSamplerParameterf", "(IIF)V", (void *) android_glSamplerParameterf__IIF },
5185{"glSamplerParameterfv", "(II[FI)V", (void *) android_glSamplerParameterfv__II_3FI },
5186{"glSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 },
5187{"glGetSamplerParameteriv", "(II[II)V", (void *) android_glGetSamplerParameteriv__II_3II },
5188{"glGetSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 },
5189{"glGetSamplerParameterfv", "(II[FI)V", (void *) android_glGetSamplerParameterfv__II_3FI },
5190{"glGetSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 },
5191{"glVertexAttribDivisor", "(II)V", (void *) android_glVertexAttribDivisor__II },
5192{"glBindTransformFeedback", "(II)V", (void *) android_glBindTransformFeedback__II },
5193{"glDeleteTransformFeedbacks", "(I[II)V", (void *) android_glDeleteTransformFeedbacks__I_3II },
5194{"glDeleteTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 },
5195{"glGenTransformFeedbacks", "(I[II)V", (void *) android_glGenTransformFeedbacks__I_3II },
5196{"glGenTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 },
5197{"glIsTransformFeedback", "(I)Z", (void *) android_glIsTransformFeedback__I },
5198{"glPauseTransformFeedback", "()V", (void *) android_glPauseTransformFeedback__ },
5199{"glResumeTransformFeedback", "()V", (void *) android_glResumeTransformFeedback__ },
5200{"glGetProgramBinary", "(II[II[IILjava/nio/Buffer;)V", (void *) android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 },
5201{"glGetProgramBinary", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/Buffer;)V", (void *) android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 },
5202{"glProgramBinary", "(IILjava/nio/Buffer;I)V", (void *) android_glProgramBinary__IILjava_nio_Buffer_2I },
5203{"glProgramParameteri", "(III)V", (void *) android_glProgramParameteri__III },
5204{"glInvalidateFramebuffer", "(II[II)V", (void *) android_glInvalidateFramebuffer__II_3II },
5205{"glInvalidateFramebuffer", "(IILjava/nio/IntBuffer;)V", (void *) android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 },
5206{"glInvalidateSubFramebuffer", "(II[IIIIII)V", (void *) android_glInvalidateSubFramebuffer__II_3IIIIII },
5207{"glInvalidateSubFramebuffer", "(IILjava/nio/IntBuffer;IIII)V", (void *) android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII },
5208{"glTexStorage2D", "(IIIII)V", (void *) android_glTexStorage2D__IIIII },
5209{"glTexStorage3D", "(IIIIII)V", (void *) android_glTexStorage3D__IIIIII },
5210{"glGetInternalformativ", "(IIII[II)V", (void *) android_glGetInternalformativ__IIII_3II },
5211{"glGetInternalformativ", "(IIIILjava/nio/IntBuffer;)V", (void *) android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 },
5212};
5213
5214int register_android_opengl_jni_GLES30(JNIEnv *_env)
5215{
5216 int err;
5217 err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
5218 return err;
5219}