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