1 /* 2 * Copyright 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 // This source file is automatically generated 18 19 #pragma GCC diagnostic ignored "-Wunused-variable" 20 #pragma GCC diagnostic ignored "-Wunused-function" 21 22 #include <stdint.h> 23 #include <GLES3/gl31.h> 24 #include <jni.h> 25 #include <nativehelper/JNIHelp.h> 26 #include <android_runtime/AndroidRuntime.h> 27 #include <utils/misc.h> 28 #include <assert.h> 29 30 static int initialized = 0; 31 32 static jclass nioAccessClass; 33 static jclass bufferClass; 34 static jmethodID getBasePointerID; 35 static jmethodID getBaseArrayID; 36 static jmethodID getBaseArrayOffsetID; 37 static jfieldID positionID; 38 static jfieldID limitID; 39 static jfieldID elementSizeShiftID; 40 41 42 /* special calls implemented in Android's GLES wrapper used to more 43 * efficiently bound-check passed arrays */ 44 extern "C" { 45 #ifdef GL_VERSION_ES_CM_1_1 46 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 47 const GLvoid *ptr, GLsizei count); 48 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 49 const GLvoid *pointer, GLsizei count); 50 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 51 GLsizei stride, const GLvoid *pointer, GLsizei count); 52 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 53 GLsizei stride, const GLvoid *pointer, GLsizei count); 54 GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 55 GLsizei stride, const GLvoid *pointer, GLsizei count); 56 GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 57 GLsizei stride, const GLvoid *pointer, GLsizei count); 58 GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 59 GLsizei stride, const GLvoid *pointer, GLsizei count); 60 #endif 61 #ifdef GL_ES_VERSION_2_0 62 static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 63 GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 64 glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 65 } 66 #endif 67 #ifdef GL_ES_VERSION_3_0 68 static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 69 GLsizei stride, const GLvoid *pointer, GLsizei count) { 70 glVertexAttribIPointer(indx, size, type, stride, pointer); 71 } 72 #endif 73 } 74 75 /* Cache method IDs each time the class is loaded. */ 76 77 static void 78 nativeClassInit(JNIEnv *_env, jclass glImplClass) 79 { 80 jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 81 nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 82 83 jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 84 bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 85 86 getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 87 "getBasePointer", "(Ljava/nio/Buffer;)J"); 88 getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 89 "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 90 getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 91 "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 92 93 positionID = _env->GetFieldID(bufferClass, "position", "I"); 94 limitID = _env->GetFieldID(bufferClass, "limit", "I"); 95 elementSizeShiftID = 96 _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 97 } 98 99 static void * 100 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 101 { 102 jint position; 103 jint limit; 104 jint elementSizeShift; 105 jlong pointer; 106 107 position = _env->GetIntField(buffer, positionID); 108 limit = _env->GetIntField(buffer, limitID); 109 elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 110 *remaining = (limit - position) << elementSizeShift; 111 pointer = _env->CallStaticLongMethod(nioAccessClass, 112 getBasePointerID, buffer); 113 if (pointer != 0L) { 114 *array = NULL; 115 return reinterpret_cast<void*>(pointer); 116 } 117 118 *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 119 getBaseArrayID, buffer); 120 *offset = _env->CallStaticIntMethod(nioAccessClass, 121 getBaseArrayOffsetID, buffer); 122 123 return NULL; 124 } 125 126 class ByteArrayGetter { 127 public: 128 static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 129 return _env->GetByteArrayElements(array, is_copy); 130 } 131 }; 132 class BooleanArrayGetter { 133 public: 134 static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 135 return _env->GetBooleanArrayElements(array, is_copy); 136 } 137 }; 138 class CharArrayGetter { 139 public: 140 static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 141 return _env->GetCharArrayElements(array, is_copy); 142 } 143 }; 144 class ShortArrayGetter { 145 public: 146 static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 147 return _env->GetShortArrayElements(array, is_copy); 148 } 149 }; 150 class IntArrayGetter { 151 public: 152 static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 153 return _env->GetIntArrayElements(array, is_copy); 154 } 155 }; 156 class LongArrayGetter { 157 public: 158 static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 159 return _env->GetLongArrayElements(array, is_copy); 160 } 161 }; 162 class FloatArrayGetter { 163 public: 164 static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 165 return _env->GetFloatArrayElements(array, is_copy); 166 } 167 }; 168 class DoubleArrayGetter { 169 public: 170 static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 171 return _env->GetDoubleArrayElements(array, is_copy); 172 } 173 }; 174 175 template<typename JTYPEARRAY, typename ARRAYGETTER> 176 static void* 177 getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 178 return ARRAYGETTER::Get(_env, array, is_copy); 179 } 180 181 class ByteArrayReleaser { 182 public: 183 static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 184 _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 185 } 186 }; 187 class BooleanArrayReleaser { 188 public: 189 static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 190 _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 191 } 192 }; 193 class CharArrayReleaser { 194 public: 195 static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 196 _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 197 } 198 }; 199 class ShortArrayReleaser { 200 public: 201 static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 202 _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 203 } 204 }; 205 class IntArrayReleaser { 206 public: 207 static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 208 _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 209 } 210 }; 211 class LongArrayReleaser { 212 public: 213 static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 214 _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 215 } 216 }; 217 class FloatArrayReleaser { 218 public: 219 static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 220 _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 221 } 222 }; 223 class DoubleArrayReleaser { 224 public: 225 static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 226 _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 227 } 228 }; 229 230 template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 231 static void 232 releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 233 ARRAYRELEASER::Release(_env, array, data, commit); 234 } 235 236 static void 237 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 238 { 239 _env->ReleasePrimitiveArrayCritical(array, data, 240 commit ? 0 : JNI_ABORT); 241 } 242 243 static void * 244 getDirectBufferPointer(JNIEnv *_env, jobject buffer) { 245 char* buf = (char*) _env->GetDirectBufferAddress(buffer); 246 if (buf) { 247 jint position = _env->GetIntField(buffer, positionID); 248 jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 249 buf += position << elementSizeShift; 250 } else { 251 jniThrowException(_env, "java/lang/IllegalArgumentException", 252 "Must use a native order direct Buffer"); 253 } 254 return (void*) buf; 255 } 256 257 // -------------------------------------------------------------------------- 258 259 /* 260 * returns the number of values glGet returns for a given pname. 261 * 262 * The code below is written such that pnames requiring only one values 263 * are the default (and are not explicitely tested for). This makes the 264 * checking code much shorter/readable/efficient. 265 * 266 * This means that unknown pnames (e.g.: extensions) will default to 1. If 267 * that unknown pname needs more than 1 value, then the validation check 268 * is incomplete and the app may crash if it passed the wrong number params. 269 */ 270 static int getNeededCount(GLint pname) { 271 int needed = 1; 272 #ifdef GL_ES_VERSION_3_0 273 // GLES 3.x pnames 274 switch (pname) { 275 case GL_MAX_VIEWPORT_DIMS: 276 needed = 2; 277 break; 278 279 case GL_PROGRAM_BINARY_FORMATS: 280 glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed); 281 break; 282 } 283 #endif 284 285 #ifdef GL_ES_VERSION_2_0 286 // GLES 2.x pnames 287 switch (pname) { 288 case GL_ALIASED_LINE_WIDTH_RANGE: 289 case GL_ALIASED_POINT_SIZE_RANGE: 290 needed = 2; 291 break; 292 293 case GL_BLEND_COLOR: 294 case GL_COLOR_CLEAR_VALUE: 295 case GL_COLOR_WRITEMASK: 296 case GL_SCISSOR_BOX: 297 case GL_VIEWPORT: 298 needed = 4; 299 break; 300 301 case GL_COMPRESSED_TEXTURE_FORMATS: 302 glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 303 break; 304 305 case GL_SHADER_BINARY_FORMATS: 306 glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 307 break; 308 } 309 #endif 310 311 #ifdef GL_VERSION_ES_CM_1_1 312 // GLES 1.x pnames 313 switch (pname) { 314 case GL_ALIASED_LINE_WIDTH_RANGE: 315 case GL_ALIASED_POINT_SIZE_RANGE: 316 case GL_DEPTH_RANGE: 317 case GL_SMOOTH_LINE_WIDTH_RANGE: 318 case GL_SMOOTH_POINT_SIZE_RANGE: 319 needed = 2; 320 break; 321 322 case GL_CURRENT_NORMAL: 323 case GL_POINT_DISTANCE_ATTENUATION: 324 needed = 3; 325 break; 326 327 case GL_COLOR_CLEAR_VALUE: 328 case GL_COLOR_WRITEMASK: 329 case GL_CURRENT_COLOR: 330 case GL_CURRENT_TEXTURE_COORDS: 331 case GL_FOG_COLOR: 332 case GL_LIGHT_MODEL_AMBIENT: 333 case GL_SCISSOR_BOX: 334 case GL_VIEWPORT: 335 needed = 4; 336 break; 337 338 case GL_MODELVIEW_MATRIX: 339 case GL_PROJECTION_MATRIX: 340 case GL_TEXTURE_MATRIX: 341 needed = 16; 342 break; 343 344 case GL_COMPRESSED_TEXTURE_FORMATS: 345 glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 346 break; 347 } 348 #endif 349 return needed; 350 } 351 352 template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 353 typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 354 static void 355 get 356 (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 357 jint _exception = 0; 358 const char * _exceptionType; 359 const char * _exceptionMessage; 360 CTYPE *params_base = (CTYPE *) 0; 361 jint _remaining; 362 CTYPE *params = (CTYPE *) 0; 363 int _needed = 0; 364 365 if (!params_ref) { 366 _exception = 1; 367 _exceptionType = "java/lang/IllegalArgumentException"; 368 _exceptionMessage = "params == null"; 369 goto exit; 370 } 371 if (offset < 0) { 372 _exception = 1; 373 _exceptionType = "java/lang/IllegalArgumentException"; 374 _exceptionMessage = "offset < 0"; 375 goto exit; 376 } 377 _remaining = _env->GetArrayLength(params_ref) - offset; 378 _needed = getNeededCount(pname); 379 // if we didn't find this pname, we just assume the user passed 380 // an array of the right size -- this might happen with extensions 381 // or if we forget an enum here. 382 if (_remaining < _needed) { 383 _exception = 1; 384 _exceptionType = "java/lang/IllegalArgumentException"; 385 _exceptionMessage = "length - offset < needed"; 386 goto exit; 387 } 388 params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 389 _env, params_ref, (jboolean *)0); 390 params = params_base + offset; 391 392 GET( 393 (GLenum)pname, 394 (CTYPE *)params 395 ); 396 397 exit: 398 if (params_base) { 399 releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 400 _env, params_ref, params_base, !_exception); 401 } 402 if (_exception) { 403 jniThrowException(_env, _exceptionType, _exceptionMessage); 404 } 405 } 406 407 408 template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 409 typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 410 static void 411 getarray 412 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 413 jint _exception = 0; 414 const char * _exceptionType; 415 const char * _exceptionMessage; 416 JTYPEARRAY _array = (JTYPEARRAY) 0; 417 jint _bufferOffset = (jint) 0; 418 jint _remaining; 419 CTYPE *params = (CTYPE *) 0; 420 int _needed = 0; 421 422 params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 423 _remaining /= sizeof(CTYPE); // convert from bytes to item count 424 _needed = getNeededCount(pname); 425 // if we didn't find this pname, we just assume the user passed 426 // an array of the right size -- this might happen with extensions 427 // or if we forget an enum here. 428 if (_needed>0 && _remaining < _needed) { 429 _exception = 1; 430 _exceptionType = "java/lang/IllegalArgumentException"; 431 _exceptionMessage = "remaining() < needed"; 432 goto exit; 433 } 434 if (params == NULL) { 435 char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 436 _env, _array, (jboolean *) 0); 437 params = (CTYPE *) (_paramsBase + _bufferOffset); 438 } 439 GET( 440 (GLenum)pname, 441 (CTYPE *)params 442 ); 443 444 exit: 445 if (_array) { 446 releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 447 _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 448 } 449 if (_exception) { 450 jniThrowException(_env, _exceptionType, _exceptionMessage); 451 } 452 } 453 454 // -------------------------------------------------------------------------- 455 /* void glDispatchCompute ( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z ) */ 456 static void 457 android_glDispatchCompute__III 458 (JNIEnv *_env, jobject _this, jint num_groups_x, jint num_groups_y, jint num_groups_z) { 459 glDispatchCompute( 460 (GLuint)num_groups_x, 461 (GLuint)num_groups_y, 462 (GLuint)num_groups_z 463 ); 464 } 465 466 /* void glDispatchComputeIndirect ( GLintptr indirect ) */ 467 static void android_glDispatchComputeIndirect(JNIEnv *_env, jobject, jlong indirect) { 468 // 'indirect' is a byte offset, not a pointer. GL checks for negative and too-large values. 469 // Here we only need to check for successful 64-bit to 32-bit conversion. 470 // - jlong is a int64_t (jni.h) 471 // - GLintptr is a long (khrplatform.h) 472 if (sizeof(GLintptr) != sizeof(jlong) && (indirect < LONG_MIN || indirect > LONG_MAX)) { 473 jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 474 return; 475 } 476 glDispatchComputeIndirect((GLintptr)indirect); 477 } 478 479 /* void glDrawArraysIndirect ( GLenum mode, const void *indirect ) */ 480 static void android_glDrawArraysIndirect(JNIEnv *_env, jobject, int mode, jlong indirect) { 481 // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 482 // GL checks for too-large values. Here we only need to check for successful signed 64-bit 483 // to unsigned 32-bit conversion. 484 if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 485 jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 486 return; 487 } 488 glDrawArraysIndirect(mode, (const void*)indirect); 489 } 490 491 /* void glDrawElementsIndirect ( GLenum mode, GLenum type, const void *indirect ) */ 492 static void android_glDrawElementsIndirect(JNIEnv *_env, jobject, jint mode, jint type, jlong indirect) { 493 // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 494 // GL checks for too-large values. Here we only need to check for successful signed 64-bit 495 // to unsigned 32-bit conversion. 496 if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 497 jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 498 return; 499 } 500 glDrawElementsIndirect(mode, type, (const void*)indirect); 501 } 502 503 /* void glFramebufferParameteri ( GLenum target, GLenum pname, GLint param ) */ 504 static void 505 android_glFramebufferParameteri__III 506 (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 507 glFramebufferParameteri( 508 (GLenum)target, 509 (GLenum)pname, 510 (GLint)param 511 ); 512 } 513 514 /* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 515 static void 516 android_glGetFramebufferParameteriv__II_3II 517 (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 518 jint _exception = 0; 519 const char * _exceptionType = NULL; 520 const char * _exceptionMessage = NULL; 521 GLint *params_base = (GLint *) 0; 522 jint _remaining; 523 GLint *params = (GLint *) 0; 524 525 if (!params_ref) { 526 _exception = 1; 527 _exceptionType = "java/lang/IllegalArgumentException"; 528 _exceptionMessage = "params == null"; 529 goto exit; 530 } 531 if (offset < 0) { 532 _exception = 1; 533 _exceptionType = "java/lang/IllegalArgumentException"; 534 _exceptionMessage = "offset < 0"; 535 goto exit; 536 } 537 _remaining = _env->GetArrayLength(params_ref) - offset; 538 params_base = (GLint *) 539 _env->GetIntArrayElements(params_ref, (jboolean *)0); 540 params = params_base + offset; 541 542 glGetFramebufferParameteriv( 543 (GLenum)target, 544 (GLenum)pname, 545 (GLint *)params 546 ); 547 548 exit: 549 if (params_base) { 550 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 551 _exception ? JNI_ABORT: 0); 552 } 553 if (_exception) { 554 jniThrowException(_env, _exceptionType, _exceptionMessage); 555 } 556 } 557 558 /* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 559 static void 560 android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 561 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 562 jint _exception = 0; 563 const char * _exceptionType = NULL; 564 const char * _exceptionMessage = NULL; 565 jintArray _array = (jintArray) 0; 566 jint _bufferOffset = (jint) 0; 567 jint _remaining; 568 GLint *params = (GLint *) 0; 569 570 if (!params_buf) { 571 _exception = 1; 572 _exceptionType = "java/lang/IllegalArgumentException"; 573 _exceptionMessage = "params == null"; 574 goto exit; 575 } 576 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 577 if (params == NULL) { 578 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 579 params = (GLint *) (_paramsBase + _bufferOffset); 580 } 581 glGetFramebufferParameteriv( 582 (GLenum)target, 583 (GLenum)pname, 584 (GLint *)params 585 ); 586 587 exit: 588 if (_array) { 589 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 590 } 591 if (_exception) { 592 jniThrowException(_env, _exceptionType, _exceptionMessage); 593 } 594 } 595 596 /* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 597 static void 598 android_glGetProgramInterfaceiv__III_3II 599 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jintArray params_ref, jint offset) { 600 jint _exception = 0; 601 const char * _exceptionType = NULL; 602 const char * _exceptionMessage = NULL; 603 GLint *params_base = (GLint *) 0; 604 jint _remaining; 605 GLint *params = (GLint *) 0; 606 607 if (!params_ref) { 608 _exception = 1; 609 _exceptionType = "java/lang/IllegalArgumentException"; 610 _exceptionMessage = "params == null"; 611 goto exit; 612 } 613 if (offset < 0) { 614 _exception = 1; 615 _exceptionType = "java/lang/IllegalArgumentException"; 616 _exceptionMessage = "offset < 0"; 617 goto exit; 618 } 619 _remaining = _env->GetArrayLength(params_ref) - offset; 620 params_base = (GLint *) 621 _env->GetIntArrayElements(params_ref, (jboolean *)0); 622 params = params_base + offset; 623 624 glGetProgramInterfaceiv( 625 (GLuint)program, 626 (GLenum)programInterface, 627 (GLenum)pname, 628 (GLint *)params 629 ); 630 631 exit: 632 if (params_base) { 633 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 634 _exception ? JNI_ABORT: 0); 635 } 636 if (_exception) { 637 jniThrowException(_env, _exceptionType, _exceptionMessage); 638 } 639 } 640 641 /* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 642 static void 643 android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 644 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jobject params_buf) { 645 jint _exception = 0; 646 const char * _exceptionType = NULL; 647 const char * _exceptionMessage = NULL; 648 jintArray _array = (jintArray) 0; 649 jint _bufferOffset = (jint) 0; 650 jint _remaining; 651 GLint *params = (GLint *) 0; 652 653 if (!params_buf) { 654 _exception = 1; 655 _exceptionType = "java/lang/IllegalArgumentException"; 656 _exceptionMessage = "params == null"; 657 goto exit; 658 } 659 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 660 if (params == NULL) { 661 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 662 params = (GLint *) (_paramsBase + _bufferOffset); 663 } 664 glGetProgramInterfaceiv( 665 (GLuint)program, 666 (GLenum)programInterface, 667 (GLenum)pname, 668 (GLint *)params 669 ); 670 671 exit: 672 if (_array) { 673 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 674 } 675 if (_exception) { 676 jniThrowException(_env, _exceptionType, _exceptionMessage); 677 } 678 } 679 680 /* GLuint glGetProgramResourceIndex ( GLuint program, GLenum programInterface, const GLchar *name ) */ 681 static jint 682 android_glGetProgramResourceIndex__IILjava_lang_String_2 683 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 684 jint _exception = 0; 685 const char * _exceptionType = NULL; 686 const char * _exceptionMessage = NULL; 687 GLuint _returnValue = 0; 688 const char* _nativename = 0; 689 690 if (!name) { 691 _exception = 1; 692 _exceptionType = "java/lang/IllegalArgumentException"; 693 _exceptionMessage = "name == null"; 694 goto exit; 695 } 696 _nativename = _env->GetStringUTFChars(name, 0); 697 698 _returnValue = glGetProgramResourceIndex( 699 (GLuint)program, 700 (GLenum)programInterface, 701 (GLchar *)_nativename 702 ); 703 704 exit: 705 if (_nativename) { 706 _env->ReleaseStringUTFChars(name, _nativename); 707 } 708 709 if (_exception) { 710 jniThrowException(_env, _exceptionType, _exceptionMessage); 711 } 712 return (jint)_returnValue; 713 } 714 715 /* void glGetProgramResourceName ( GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name ) */ 716 static jstring 717 android_glGetProgramResourceName 718 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index) { 719 jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 720 return NULL; 721 } 722 723 /* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 724 static void 725 android_glGetProgramResourceiv__IIII_3III_3II_3II 726 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jintArray props_ref, jint propsOffset, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray params_ref, jint paramsOffset) { 727 jint _exception = 0; 728 const char * _exceptionType = NULL; 729 const char * _exceptionMessage = NULL; 730 GLenum *props_base = (GLenum *) 0; 731 jint _propsRemaining; 732 GLenum *props = (GLenum *) 0; 733 GLsizei *length_base = (GLsizei *) 0; 734 jint _lengthRemaining; 735 GLsizei *length = (GLsizei *) 0; 736 GLint *params_base = (GLint *) 0; 737 jint _paramsRemaining; 738 GLint *params = (GLint *) 0; 739 740 if (!props_ref) { 741 _exception = 1; 742 _exceptionType = "java/lang/IllegalArgumentException"; 743 _exceptionMessage = "props == null"; 744 goto exit; 745 } 746 if (propsOffset < 0) { 747 _exception = 1; 748 _exceptionType = "java/lang/IllegalArgumentException"; 749 _exceptionMessage = "propsOffset < 0"; 750 goto exit; 751 } 752 _propsRemaining = _env->GetArrayLength(props_ref) - propsOffset; 753 props_base = (GLenum *) 754 _env->GetIntArrayElements(props_ref, (jboolean *)0); 755 props = props_base + propsOffset; 756 757 if (length_ref) { 758 if (lengthOffset < 0) { 759 _exception = 1; 760 _exceptionType = "java/lang/IllegalArgumentException"; 761 _exceptionMessage = "lengthOffset < 0"; 762 goto exit; 763 } 764 _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 765 length_base = (GLsizei *) 766 _env->GetIntArrayElements(length_ref, (jboolean *)0); 767 length = length_base + lengthOffset; 768 } 769 770 if (!params_ref) { 771 _exception = 1; 772 _exceptionType = "java/lang/IllegalArgumentException"; 773 _exceptionMessage = "params == null"; 774 goto exit; 775 } 776 if (paramsOffset < 0) { 777 _exception = 1; 778 _exceptionType = "java/lang/IllegalArgumentException"; 779 _exceptionMessage = "paramsOffset < 0"; 780 goto exit; 781 } 782 _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 783 params_base = (GLint *) 784 _env->GetIntArrayElements(params_ref, (jboolean *)0); 785 params = params_base + paramsOffset; 786 787 glGetProgramResourceiv( 788 (GLuint)program, 789 (GLenum)programInterface, 790 (GLuint)index, 791 (GLsizei)propCount, 792 (GLenum *)props, 793 (GLsizei)bufSize, 794 (GLsizei *)length, 795 (GLint *)params 796 ); 797 798 exit: 799 if (params_base) { 800 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 801 _exception ? JNI_ABORT: 0); 802 } 803 if (length_base) { 804 _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 805 _exception ? JNI_ABORT: 0); 806 } 807 if (props_base) { 808 _env->ReleaseIntArrayElements(props_ref, (jint*)props_base, 809 JNI_ABORT); 810 } 811 if (_exception) { 812 jniThrowException(_env, _exceptionType, _exceptionMessage); 813 } 814 } 815 816 /* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 817 static void 818 android_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 819 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jobject props_buf, jint bufSize, jobject length_buf, jobject params_buf) { 820 jint _exception = 0; 821 const char * _exceptionType = NULL; 822 const char * _exceptionMessage = NULL; 823 jintArray _propsArray = (jintArray) 0; 824 jint _propsBufferOffset = (jint) 0; 825 jintArray _lengthArray = (jintArray) 0; 826 jint _lengthBufferOffset = (jint) 0; 827 jintArray _paramsArray = (jintArray) 0; 828 jint _paramsBufferOffset = (jint) 0; 829 jint _propsRemaining; 830 GLenum *props = (GLenum *) 0; 831 jint _lengthRemaining; 832 GLsizei *length = (GLsizei *) 0; 833 jint _paramsRemaining; 834 GLint *params = (GLint *) 0; 835 836 if (!props_buf) { 837 _exception = 1; 838 _exceptionType = "java/lang/IllegalArgumentException"; 839 _exceptionMessage = "props == null"; 840 goto exit; 841 } 842 props = (GLenum *)getPointer(_env, props_buf, (jarray*)&_propsArray, &_propsRemaining, &_propsBufferOffset); 843 if (length_buf) { 844 length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 845 } 846 if (!params_buf) { 847 _exception = 1; 848 _exceptionType = "java/lang/IllegalArgumentException"; 849 _exceptionMessage = "params == null"; 850 goto exit; 851 } 852 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 853 if (props == NULL) { 854 char * _propsBase = (char *)_env->GetIntArrayElements(_propsArray, (jboolean *) 0); 855 props = (GLenum *) (_propsBase + _propsBufferOffset); 856 } 857 if (length_buf && length == NULL) { 858 char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 859 length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 860 } 861 if (params == NULL) { 862 char * _paramsBase = (char *)_env->GetIntArrayElements(_paramsArray, (jboolean *) 0); 863 params = (GLint *) (_paramsBase + _paramsBufferOffset); 864 } 865 glGetProgramResourceiv( 866 (GLuint)program, 867 (GLenum)programInterface, 868 (GLuint)index, 869 (GLsizei)propCount, 870 (GLenum *)props, 871 (GLsizei)bufSize, 872 (GLsizei *)length, 873 (GLint *)params 874 ); 875 876 exit: 877 if (_paramsArray) { 878 _env->ReleaseIntArrayElements(_paramsArray, (jint*)params, _exception ? JNI_ABORT : 0); 879 } 880 if (_lengthArray) { 881 _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, _exception ? JNI_ABORT : 0); 882 } 883 if (_propsArray) { 884 _env->ReleaseIntArrayElements(_propsArray, (jint*)props, JNI_ABORT); 885 } 886 if (_exception) { 887 jniThrowException(_env, _exceptionType, _exceptionMessage); 888 } 889 } 890 891 /* GLint glGetProgramResourceLocation ( GLuint program, GLenum programInterface, const GLchar *name ) */ 892 static jint 893 android_glGetProgramResourceLocation__IILjava_lang_String_2 894 (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 895 jint _exception = 0; 896 const char * _exceptionType = NULL; 897 const char * _exceptionMessage = NULL; 898 GLint _returnValue = 0; 899 const char* _nativename = 0; 900 901 if (!name) { 902 _exception = 1; 903 _exceptionType = "java/lang/IllegalArgumentException"; 904 _exceptionMessage = "name == null"; 905 goto exit; 906 } 907 _nativename = _env->GetStringUTFChars(name, 0); 908 909 _returnValue = glGetProgramResourceLocation( 910 (GLuint)program, 911 (GLenum)programInterface, 912 (GLchar *)_nativename 913 ); 914 915 exit: 916 if (_nativename) { 917 _env->ReleaseStringUTFChars(name, _nativename); 918 } 919 920 if (_exception) { 921 jniThrowException(_env, _exceptionType, _exceptionMessage); 922 } 923 return (jint)_returnValue; 924 } 925 926 /* void glUseProgramStages ( GLuint pipeline, GLbitfield stages, GLuint program ) */ 927 static void 928 android_glUseProgramStages__III 929 (JNIEnv *_env, jobject _this, jint pipeline, jint stages, jint program) { 930 glUseProgramStages( 931 (GLuint)pipeline, 932 (GLbitfield)stages, 933 (GLuint)program 934 ); 935 } 936 937 /* void glActiveShaderProgram ( GLuint pipeline, GLuint program ) */ 938 static void 939 android_glActiveShaderProgram__II 940 (JNIEnv *_env, jobject _this, jint pipeline, jint program) { 941 glActiveShaderProgram( 942 (GLuint)pipeline, 943 (GLuint)program 944 ); 945 } 946 947 /* GLuint glCreateShaderProgramv ( GLenum type, GLsizei count, const GLchar *const *strings ) */ 948 static jint 949 android_glCreateShaderProgramv 950 (JNIEnv *_env, jobject _this, jint type, jobjectArray strings) { 951 jint _exception = 0; 952 const char * _exceptionType = NULL; 953 const char * _exceptionMessage = NULL; 954 GLsizei _count; 955 const GLchar** _strings = NULL; 956 jstring* _jstrings = NULL; 957 GLuint _returnValue = 0; 958 959 if (!strings) { 960 _exception = 1; 961 _exceptionType = "java/lang/IllegalArgumentException"; 962 _exceptionMessage = "strings == null"; 963 goto exit; 964 } 965 966 _count = _env->GetArrayLength(strings); 967 968 _strings = (const GLchar**) calloc(_count, sizeof(const GLchar*)); 969 if (!_strings) { 970 _exception = 1; 971 _exceptionType = "java/lang/OutOfMemoryError"; 972 _exceptionMessage = "out of memory"; 973 goto exit; 974 } 975 976 _jstrings = (jstring*) calloc(_count, sizeof(jstring)); 977 if (!_jstrings) { 978 _exception = 1; 979 _exceptionType = "java/lang/OutOfMemoryError"; 980 _exceptionMessage = "out of memory"; 981 goto exit; 982 } 983 984 for(int i = 0; i < _count; i++) { 985 _jstrings[i] = (jstring) _env->GetObjectArrayElement(strings, i); 986 if (!_jstrings[i]) { 987 _exception = 1; 988 _exceptionType = "java/lang/IllegalArgumentException"; 989 _exceptionMessage = "strings == null"; 990 goto exit; 991 } 992 _strings[i] = _env->GetStringUTFChars(_jstrings[i], 0); 993 } 994 995 _returnValue = glCreateShaderProgramv((GLenum)type, _count, _strings); 996 exit: 997 if (_strings && _jstrings) { 998 for(int i = 0; i < _count; i++) { 999 if (_strings[i] && _jstrings[i]) { 1000 _env->ReleaseStringUTFChars(_jstrings[i], _strings[i]); 1001 } 1002 } 1003 } 1004 if (_strings) { 1005 free(_strings); 1006 } 1007 if (_jstrings) { 1008 free(_jstrings); 1009 } 1010 if (_exception) { 1011 jniThrowException(_env, _exceptionType, _exceptionMessage); 1012 } 1013 return (jint)_returnValue; 1014 } 1015 /* void glBindProgramPipeline ( GLuint pipeline ) */ 1016 static void 1017 android_glBindProgramPipeline__I 1018 (JNIEnv *_env, jobject _this, jint pipeline) { 1019 glBindProgramPipeline( 1020 (GLuint)pipeline 1021 ); 1022 } 1023 1024 /* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 1025 static void 1026 android_glDeleteProgramPipelines__I_3II 1027 (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 1028 jint _exception = 0; 1029 const char * _exceptionType = NULL; 1030 const char * _exceptionMessage = NULL; 1031 GLuint *pipelines_base = (GLuint *) 0; 1032 jint _remaining; 1033 GLuint *pipelines = (GLuint *) 0; 1034 1035 if (!pipelines_ref) { 1036 _exception = 1; 1037 _exceptionType = "java/lang/IllegalArgumentException"; 1038 _exceptionMessage = "pipelines == null"; 1039 goto exit; 1040 } 1041 if (offset < 0) { 1042 _exception = 1; 1043 _exceptionType = "java/lang/IllegalArgumentException"; 1044 _exceptionMessage = "offset < 0"; 1045 goto exit; 1046 } 1047 _remaining = _env->GetArrayLength(pipelines_ref) - offset; 1048 pipelines_base = (GLuint *) 1049 _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 1050 pipelines = pipelines_base + offset; 1051 1052 glDeleteProgramPipelines( 1053 (GLsizei)n, 1054 (GLuint *)pipelines 1055 ); 1056 1057 exit: 1058 if (pipelines_base) { 1059 _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 1060 JNI_ABORT); 1061 } 1062 if (_exception) { 1063 jniThrowException(_env, _exceptionType, _exceptionMessage); 1064 } 1065 } 1066 1067 /* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 1068 static void 1069 android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 1070 (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 1071 jint _exception = 0; 1072 const char * _exceptionType = NULL; 1073 const char * _exceptionMessage = NULL; 1074 jintArray _array = (jintArray) 0; 1075 jint _bufferOffset = (jint) 0; 1076 jint _remaining; 1077 GLuint *pipelines = (GLuint *) 0; 1078 1079 if (!pipelines_buf) { 1080 _exception = 1; 1081 _exceptionType = "java/lang/IllegalArgumentException"; 1082 _exceptionMessage = "pipelines == null"; 1083 goto exit; 1084 } 1085 pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1086 if (pipelines == NULL) { 1087 char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1088 pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 1089 } 1090 glDeleteProgramPipelines( 1091 (GLsizei)n, 1092 (GLuint *)pipelines 1093 ); 1094 1095 exit: 1096 if (_array) { 1097 _env->ReleaseIntArrayElements(_array, (jint*)pipelines, JNI_ABORT); 1098 } 1099 if (_exception) { 1100 jniThrowException(_env, _exceptionType, _exceptionMessage); 1101 } 1102 } 1103 1104 /* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 1105 static void 1106 android_glGenProgramPipelines__I_3II 1107 (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 1108 jint _exception = 0; 1109 const char * _exceptionType = NULL; 1110 const char * _exceptionMessage = NULL; 1111 GLuint *pipelines_base = (GLuint *) 0; 1112 jint _remaining; 1113 GLuint *pipelines = (GLuint *) 0; 1114 1115 if (!pipelines_ref) { 1116 _exception = 1; 1117 _exceptionType = "java/lang/IllegalArgumentException"; 1118 _exceptionMessage = "pipelines == null"; 1119 goto exit; 1120 } 1121 if (offset < 0) { 1122 _exception = 1; 1123 _exceptionType = "java/lang/IllegalArgumentException"; 1124 _exceptionMessage = "offset < 0"; 1125 goto exit; 1126 } 1127 _remaining = _env->GetArrayLength(pipelines_ref) - offset; 1128 pipelines_base = (GLuint *) 1129 _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 1130 pipelines = pipelines_base + offset; 1131 1132 glGenProgramPipelines( 1133 (GLsizei)n, 1134 (GLuint *)pipelines 1135 ); 1136 1137 exit: 1138 if (pipelines_base) { 1139 _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 1140 _exception ? JNI_ABORT: 0); 1141 } 1142 if (_exception) { 1143 jniThrowException(_env, _exceptionType, _exceptionMessage); 1144 } 1145 } 1146 1147 /* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 1148 static void 1149 android_glGenProgramPipelines__ILjava_nio_IntBuffer_2 1150 (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 1151 jint _exception = 0; 1152 const char * _exceptionType = NULL; 1153 const char * _exceptionMessage = NULL; 1154 jintArray _array = (jintArray) 0; 1155 jint _bufferOffset = (jint) 0; 1156 jint _remaining; 1157 GLuint *pipelines = (GLuint *) 0; 1158 1159 if (!pipelines_buf) { 1160 _exception = 1; 1161 _exceptionType = "java/lang/IllegalArgumentException"; 1162 _exceptionMessage = "pipelines == null"; 1163 goto exit; 1164 } 1165 pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1166 if (pipelines == NULL) { 1167 char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1168 pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 1169 } 1170 glGenProgramPipelines( 1171 (GLsizei)n, 1172 (GLuint *)pipelines 1173 ); 1174 1175 exit: 1176 if (_array) { 1177 _env->ReleaseIntArrayElements(_array, (jint*)pipelines, _exception ? JNI_ABORT : 0); 1178 } 1179 if (_exception) { 1180 jniThrowException(_env, _exceptionType, _exceptionMessage); 1181 } 1182 } 1183 1184 /* GLboolean glIsProgramPipeline ( GLuint pipeline ) */ 1185 static jboolean 1186 android_glIsProgramPipeline__I 1187 (JNIEnv *_env, jobject _this, jint pipeline) { 1188 GLboolean _returnValue; 1189 _returnValue = glIsProgramPipeline( 1190 (GLuint)pipeline 1191 ); 1192 return (jboolean)_returnValue; 1193 } 1194 1195 /* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 1196 static void 1197 android_glGetProgramPipelineiv__II_3II 1198 (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jintArray params_ref, jint offset) { 1199 jint _exception = 0; 1200 const char * _exceptionType = NULL; 1201 const char * _exceptionMessage = NULL; 1202 GLint *params_base = (GLint *) 0; 1203 jint _remaining; 1204 GLint *params = (GLint *) 0; 1205 1206 if (!params_ref) { 1207 _exception = 1; 1208 _exceptionType = "java/lang/IllegalArgumentException"; 1209 _exceptionMessage = "params == null"; 1210 goto exit; 1211 } 1212 if (offset < 0) { 1213 _exception = 1; 1214 _exceptionType = "java/lang/IllegalArgumentException"; 1215 _exceptionMessage = "offset < 0"; 1216 goto exit; 1217 } 1218 _remaining = _env->GetArrayLength(params_ref) - offset; 1219 params_base = (GLint *) 1220 _env->GetIntArrayElements(params_ref, (jboolean *)0); 1221 params = params_base + offset; 1222 1223 glGetProgramPipelineiv( 1224 (GLuint)pipeline, 1225 (GLenum)pname, 1226 (GLint *)params 1227 ); 1228 1229 exit: 1230 if (params_base) { 1231 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 1232 _exception ? JNI_ABORT: 0); 1233 } 1234 if (_exception) { 1235 jniThrowException(_env, _exceptionType, _exceptionMessage); 1236 } 1237 } 1238 1239 /* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 1240 static void 1241 android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 1242 (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jobject params_buf) { 1243 jint _exception = 0; 1244 const char * _exceptionType = NULL; 1245 const char * _exceptionMessage = NULL; 1246 jintArray _array = (jintArray) 0; 1247 jint _bufferOffset = (jint) 0; 1248 jint _remaining; 1249 GLint *params = (GLint *) 0; 1250 1251 if (!params_buf) { 1252 _exception = 1; 1253 _exceptionType = "java/lang/IllegalArgumentException"; 1254 _exceptionMessage = "params == null"; 1255 goto exit; 1256 } 1257 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1258 if (params == NULL) { 1259 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1260 params = (GLint *) (_paramsBase + _bufferOffset); 1261 } 1262 glGetProgramPipelineiv( 1263 (GLuint)pipeline, 1264 (GLenum)pname, 1265 (GLint *)params 1266 ); 1267 1268 exit: 1269 if (_array) { 1270 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 1271 } 1272 if (_exception) { 1273 jniThrowException(_env, _exceptionType, _exceptionMessage); 1274 } 1275 } 1276 1277 /* void glProgramUniform1i ( GLuint program, GLint location, GLint v0 ) */ 1278 static void 1279 android_glProgramUniform1i__III 1280 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 1281 glProgramUniform1i( 1282 (GLuint)program, 1283 (GLint)location, 1284 (GLint)v0 1285 ); 1286 } 1287 1288 /* void glProgramUniform2i ( GLuint program, GLint location, GLint v0, GLint v1 ) */ 1289 static void 1290 android_glProgramUniform2i__IIII 1291 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 1292 glProgramUniform2i( 1293 (GLuint)program, 1294 (GLint)location, 1295 (GLint)v0, 1296 (GLint)v1 1297 ); 1298 } 1299 1300 /* void glProgramUniform3i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2 ) */ 1301 static void 1302 android_glProgramUniform3i__IIIII 1303 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 1304 glProgramUniform3i( 1305 (GLuint)program, 1306 (GLint)location, 1307 (GLint)v0, 1308 (GLint)v1, 1309 (GLint)v2 1310 ); 1311 } 1312 1313 /* void glProgramUniform4i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3 ) */ 1314 static void 1315 android_glProgramUniform4i__IIIIII 1316 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 1317 glProgramUniform4i( 1318 (GLuint)program, 1319 (GLint)location, 1320 (GLint)v0, 1321 (GLint)v1, 1322 (GLint)v2, 1323 (GLint)v3 1324 ); 1325 } 1326 1327 /* void glProgramUniform1ui ( GLuint program, GLint location, GLuint v0 ) */ 1328 static void 1329 android_glProgramUniform1ui__III 1330 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 1331 glProgramUniform1ui( 1332 (GLuint)program, 1333 (GLint)location, 1334 (GLuint)v0 1335 ); 1336 } 1337 1338 /* void glProgramUniform2ui ( GLuint program, GLint location, GLuint v0, GLuint v1 ) */ 1339 static void 1340 android_glProgramUniform2ui__IIII 1341 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 1342 glProgramUniform2ui( 1343 (GLuint)program, 1344 (GLint)location, 1345 (GLuint)v0, 1346 (GLuint)v1 1347 ); 1348 } 1349 1350 /* void glProgramUniform3ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 1351 static void 1352 android_glProgramUniform3ui__IIIII 1353 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 1354 glProgramUniform3ui( 1355 (GLuint)program, 1356 (GLint)location, 1357 (GLuint)v0, 1358 (GLuint)v1, 1359 (GLuint)v2 1360 ); 1361 } 1362 1363 /* void glProgramUniform4ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 1364 static void 1365 android_glProgramUniform4ui__IIIIII 1366 (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 1367 glProgramUniform4ui( 1368 (GLuint)program, 1369 (GLint)location, 1370 (GLuint)v0, 1371 (GLuint)v1, 1372 (GLuint)v2, 1373 (GLuint)v3 1374 ); 1375 } 1376 1377 /* void glProgramUniform1f ( GLuint program, GLint location, GLfloat v0 ) */ 1378 static void 1379 android_glProgramUniform1f__IIF 1380 (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0) { 1381 glProgramUniform1f( 1382 (GLuint)program, 1383 (GLint)location, 1384 (GLfloat)v0 1385 ); 1386 } 1387 1388 /* void glProgramUniform2f ( GLuint program, GLint location, GLfloat v0, GLfloat v1 ) */ 1389 static void 1390 android_glProgramUniform2f__IIFF 1391 (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1) { 1392 glProgramUniform2f( 1393 (GLuint)program, 1394 (GLint)location, 1395 (GLfloat)v0, 1396 (GLfloat)v1 1397 ); 1398 } 1399 1400 /* void glProgramUniform3f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2 ) */ 1401 static void 1402 android_glProgramUniform3f__IIFFF 1403 (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2) { 1404 glProgramUniform3f( 1405 (GLuint)program, 1406 (GLint)location, 1407 (GLfloat)v0, 1408 (GLfloat)v1, 1409 (GLfloat)v2 1410 ); 1411 } 1412 1413 /* void glProgramUniform4f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3 ) */ 1414 static void 1415 android_glProgramUniform4f__IIFFFF 1416 (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2, jfloat v3) { 1417 glProgramUniform4f( 1418 (GLuint)program, 1419 (GLint)location, 1420 (GLfloat)v0, 1421 (GLfloat)v1, 1422 (GLfloat)v2, 1423 (GLfloat)v3 1424 ); 1425 } 1426 1427 /* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1428 static void 1429 android_glProgramUniform1iv__III_3II 1430 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1431 jint _exception = 0; 1432 const char * _exceptionType = NULL; 1433 const char * _exceptionMessage = NULL; 1434 GLint *value_base = (GLint *) 0; 1435 jint _remaining; 1436 GLint *value = (GLint *) 0; 1437 1438 if (!value_ref) { 1439 _exception = 1; 1440 _exceptionType = "java/lang/IllegalArgumentException"; 1441 _exceptionMessage = "value == null"; 1442 goto exit; 1443 } 1444 if (offset < 0) { 1445 _exception = 1; 1446 _exceptionType = "java/lang/IllegalArgumentException"; 1447 _exceptionMessage = "offset < 0"; 1448 goto exit; 1449 } 1450 _remaining = _env->GetArrayLength(value_ref) - offset; 1451 value_base = (GLint *) 1452 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1453 value = value_base + offset; 1454 1455 glProgramUniform1iv( 1456 (GLuint)program, 1457 (GLint)location, 1458 (GLsizei)count, 1459 (GLint *)value 1460 ); 1461 1462 exit: 1463 if (value_base) { 1464 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1465 JNI_ABORT); 1466 } 1467 if (_exception) { 1468 jniThrowException(_env, _exceptionType, _exceptionMessage); 1469 } 1470 } 1471 1472 /* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1473 static void 1474 android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 1475 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1476 jint _exception = 0; 1477 const char * _exceptionType = NULL; 1478 const char * _exceptionMessage = NULL; 1479 jintArray _array = (jintArray) 0; 1480 jint _bufferOffset = (jint) 0; 1481 jint _remaining; 1482 GLint *value = (GLint *) 0; 1483 1484 if (!value_buf) { 1485 _exception = 1; 1486 _exceptionType = "java/lang/IllegalArgumentException"; 1487 _exceptionMessage = "value == null"; 1488 goto exit; 1489 } 1490 value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1491 if (value == NULL) { 1492 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1493 value = (GLint *) (_valueBase + _bufferOffset); 1494 } 1495 glProgramUniform1iv( 1496 (GLuint)program, 1497 (GLint)location, 1498 (GLsizei)count, 1499 (GLint *)value 1500 ); 1501 1502 exit: 1503 if (_array) { 1504 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 1505 } 1506 if (_exception) { 1507 jniThrowException(_env, _exceptionType, _exceptionMessage); 1508 } 1509 } 1510 1511 /* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1512 static void 1513 android_glProgramUniform2iv__III_3II 1514 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1515 jint _exception = 0; 1516 const char * _exceptionType = NULL; 1517 const char * _exceptionMessage = NULL; 1518 GLint *value_base = (GLint *) 0; 1519 jint _remaining; 1520 GLint *value = (GLint *) 0; 1521 1522 if (!value_ref) { 1523 _exception = 1; 1524 _exceptionType = "java/lang/IllegalArgumentException"; 1525 _exceptionMessage = "value == null"; 1526 goto exit; 1527 } 1528 if (offset < 0) { 1529 _exception = 1; 1530 _exceptionType = "java/lang/IllegalArgumentException"; 1531 _exceptionMessage = "offset < 0"; 1532 goto exit; 1533 } 1534 _remaining = _env->GetArrayLength(value_ref) - offset; 1535 value_base = (GLint *) 1536 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1537 value = value_base + offset; 1538 1539 glProgramUniform2iv( 1540 (GLuint)program, 1541 (GLint)location, 1542 (GLsizei)count, 1543 (GLint *)value 1544 ); 1545 1546 exit: 1547 if (value_base) { 1548 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1549 JNI_ABORT); 1550 } 1551 if (_exception) { 1552 jniThrowException(_env, _exceptionType, _exceptionMessage); 1553 } 1554 } 1555 1556 /* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1557 static void 1558 android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 1559 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1560 jint _exception = 0; 1561 const char * _exceptionType = NULL; 1562 const char * _exceptionMessage = NULL; 1563 jintArray _array = (jintArray) 0; 1564 jint _bufferOffset = (jint) 0; 1565 jint _remaining; 1566 GLint *value = (GLint *) 0; 1567 1568 if (!value_buf) { 1569 _exception = 1; 1570 _exceptionType = "java/lang/IllegalArgumentException"; 1571 _exceptionMessage = "value == null"; 1572 goto exit; 1573 } 1574 value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1575 if (value == NULL) { 1576 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1577 value = (GLint *) (_valueBase + _bufferOffset); 1578 } 1579 glProgramUniform2iv( 1580 (GLuint)program, 1581 (GLint)location, 1582 (GLsizei)count, 1583 (GLint *)value 1584 ); 1585 1586 exit: 1587 if (_array) { 1588 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 1589 } 1590 if (_exception) { 1591 jniThrowException(_env, _exceptionType, _exceptionMessage); 1592 } 1593 } 1594 1595 /* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1596 static void 1597 android_glProgramUniform3iv__III_3II 1598 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1599 jint _exception = 0; 1600 const char * _exceptionType = NULL; 1601 const char * _exceptionMessage = NULL; 1602 GLint *value_base = (GLint *) 0; 1603 jint _remaining; 1604 GLint *value = (GLint *) 0; 1605 1606 if (!value_ref) { 1607 _exception = 1; 1608 _exceptionType = "java/lang/IllegalArgumentException"; 1609 _exceptionMessage = "value == null"; 1610 goto exit; 1611 } 1612 if (offset < 0) { 1613 _exception = 1; 1614 _exceptionType = "java/lang/IllegalArgumentException"; 1615 _exceptionMessage = "offset < 0"; 1616 goto exit; 1617 } 1618 _remaining = _env->GetArrayLength(value_ref) - offset; 1619 value_base = (GLint *) 1620 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1621 value = value_base + offset; 1622 1623 glProgramUniform3iv( 1624 (GLuint)program, 1625 (GLint)location, 1626 (GLsizei)count, 1627 (GLint *)value 1628 ); 1629 1630 exit: 1631 if (value_base) { 1632 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1633 JNI_ABORT); 1634 } 1635 if (_exception) { 1636 jniThrowException(_env, _exceptionType, _exceptionMessage); 1637 } 1638 } 1639 1640 /* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1641 static void 1642 android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 1643 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1644 jint _exception = 0; 1645 const char * _exceptionType = NULL; 1646 const char * _exceptionMessage = NULL; 1647 jintArray _array = (jintArray) 0; 1648 jint _bufferOffset = (jint) 0; 1649 jint _remaining; 1650 GLint *value = (GLint *) 0; 1651 1652 if (!value_buf) { 1653 _exception = 1; 1654 _exceptionType = "java/lang/IllegalArgumentException"; 1655 _exceptionMessage = "value == null"; 1656 goto exit; 1657 } 1658 value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1659 if (value == NULL) { 1660 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1661 value = (GLint *) (_valueBase + _bufferOffset); 1662 } 1663 glProgramUniform3iv( 1664 (GLuint)program, 1665 (GLint)location, 1666 (GLsizei)count, 1667 (GLint *)value 1668 ); 1669 1670 exit: 1671 if (_array) { 1672 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 1673 } 1674 if (_exception) { 1675 jniThrowException(_env, _exceptionType, _exceptionMessage); 1676 } 1677 } 1678 1679 /* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1680 static void 1681 android_glProgramUniform4iv__III_3II 1682 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1683 jint _exception = 0; 1684 const char * _exceptionType = NULL; 1685 const char * _exceptionMessage = NULL; 1686 GLint *value_base = (GLint *) 0; 1687 jint _remaining; 1688 GLint *value = (GLint *) 0; 1689 1690 if (!value_ref) { 1691 _exception = 1; 1692 _exceptionType = "java/lang/IllegalArgumentException"; 1693 _exceptionMessage = "value == null"; 1694 goto exit; 1695 } 1696 if (offset < 0) { 1697 _exception = 1; 1698 _exceptionType = "java/lang/IllegalArgumentException"; 1699 _exceptionMessage = "offset < 0"; 1700 goto exit; 1701 } 1702 _remaining = _env->GetArrayLength(value_ref) - offset; 1703 value_base = (GLint *) 1704 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1705 value = value_base + offset; 1706 1707 glProgramUniform4iv( 1708 (GLuint)program, 1709 (GLint)location, 1710 (GLsizei)count, 1711 (GLint *)value 1712 ); 1713 1714 exit: 1715 if (value_base) { 1716 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1717 JNI_ABORT); 1718 } 1719 if (_exception) { 1720 jniThrowException(_env, _exceptionType, _exceptionMessage); 1721 } 1722 } 1723 1724 /* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 1725 static void 1726 android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 1727 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1728 jint _exception = 0; 1729 const char * _exceptionType = NULL; 1730 const char * _exceptionMessage = NULL; 1731 jintArray _array = (jintArray) 0; 1732 jint _bufferOffset = (jint) 0; 1733 jint _remaining; 1734 GLint *value = (GLint *) 0; 1735 1736 if (!value_buf) { 1737 _exception = 1; 1738 _exceptionType = "java/lang/IllegalArgumentException"; 1739 _exceptionMessage = "value == null"; 1740 goto exit; 1741 } 1742 value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1743 if (value == NULL) { 1744 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1745 value = (GLint *) (_valueBase + _bufferOffset); 1746 } 1747 glProgramUniform4iv( 1748 (GLuint)program, 1749 (GLint)location, 1750 (GLsizei)count, 1751 (GLint *)value 1752 ); 1753 1754 exit: 1755 if (_array) { 1756 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 1757 } 1758 if (_exception) { 1759 jniThrowException(_env, _exceptionType, _exceptionMessage); 1760 } 1761 } 1762 1763 /* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 1764 static void 1765 android_glProgramUniform1uiv__III_3II 1766 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1767 jint _exception = 0; 1768 const char * _exceptionType = NULL; 1769 const char * _exceptionMessage = NULL; 1770 GLuint *value_base = (GLuint *) 0; 1771 jint _remaining; 1772 GLuint *value = (GLuint *) 0; 1773 1774 if (!value_ref) { 1775 _exception = 1; 1776 _exceptionType = "java/lang/IllegalArgumentException"; 1777 _exceptionMessage = "value == null"; 1778 goto exit; 1779 } 1780 if (offset < 0) { 1781 _exception = 1; 1782 _exceptionType = "java/lang/IllegalArgumentException"; 1783 _exceptionMessage = "offset < 0"; 1784 goto exit; 1785 } 1786 _remaining = _env->GetArrayLength(value_ref) - offset; 1787 value_base = (GLuint *) 1788 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1789 value = value_base + offset; 1790 1791 glProgramUniform1uiv( 1792 (GLuint)program, 1793 (GLint)location, 1794 (GLsizei)count, 1795 (GLuint *)value 1796 ); 1797 1798 exit: 1799 if (value_base) { 1800 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1801 JNI_ABORT); 1802 } 1803 if (_exception) { 1804 jniThrowException(_env, _exceptionType, _exceptionMessage); 1805 } 1806 } 1807 1808 /* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 1809 static void 1810 android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 1811 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1812 jint _exception = 0; 1813 const char * _exceptionType = NULL; 1814 const char * _exceptionMessage = NULL; 1815 jintArray _array = (jintArray) 0; 1816 jint _bufferOffset = (jint) 0; 1817 jint _remaining; 1818 GLuint *value = (GLuint *) 0; 1819 1820 if (!value_buf) { 1821 _exception = 1; 1822 _exceptionType = "java/lang/IllegalArgumentException"; 1823 _exceptionMessage = "value == null"; 1824 goto exit; 1825 } 1826 value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1827 if (value == NULL) { 1828 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1829 value = (GLuint *) (_valueBase + _bufferOffset); 1830 } 1831 glProgramUniform1uiv( 1832 (GLuint)program, 1833 (GLint)location, 1834 (GLsizei)count, 1835 (GLuint *)value 1836 ); 1837 1838 exit: 1839 if (_array) { 1840 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 1841 } 1842 if (_exception) { 1843 jniThrowException(_env, _exceptionType, _exceptionMessage); 1844 } 1845 } 1846 1847 /* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 1848 static void 1849 android_glProgramUniform2uiv__III_3II 1850 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1851 jint _exception = 0; 1852 const char * _exceptionType = NULL; 1853 const char * _exceptionMessage = NULL; 1854 GLuint *value_base = (GLuint *) 0; 1855 jint _remaining; 1856 GLuint *value = (GLuint *) 0; 1857 1858 if (!value_ref) { 1859 _exception = 1; 1860 _exceptionType = "java/lang/IllegalArgumentException"; 1861 _exceptionMessage = "value == null"; 1862 goto exit; 1863 } 1864 if (offset < 0) { 1865 _exception = 1; 1866 _exceptionType = "java/lang/IllegalArgumentException"; 1867 _exceptionMessage = "offset < 0"; 1868 goto exit; 1869 } 1870 _remaining = _env->GetArrayLength(value_ref) - offset; 1871 value_base = (GLuint *) 1872 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1873 value = value_base + offset; 1874 1875 glProgramUniform2uiv( 1876 (GLuint)program, 1877 (GLint)location, 1878 (GLsizei)count, 1879 (GLuint *)value 1880 ); 1881 1882 exit: 1883 if (value_base) { 1884 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1885 JNI_ABORT); 1886 } 1887 if (_exception) { 1888 jniThrowException(_env, _exceptionType, _exceptionMessage); 1889 } 1890 } 1891 1892 /* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 1893 static void 1894 android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 1895 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1896 jint _exception = 0; 1897 const char * _exceptionType = NULL; 1898 const char * _exceptionMessage = NULL; 1899 jintArray _array = (jintArray) 0; 1900 jint _bufferOffset = (jint) 0; 1901 jint _remaining; 1902 GLuint *value = (GLuint *) 0; 1903 1904 if (!value_buf) { 1905 _exception = 1; 1906 _exceptionType = "java/lang/IllegalArgumentException"; 1907 _exceptionMessage = "value == null"; 1908 goto exit; 1909 } 1910 value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1911 if (value == NULL) { 1912 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1913 value = (GLuint *) (_valueBase + _bufferOffset); 1914 } 1915 glProgramUniform2uiv( 1916 (GLuint)program, 1917 (GLint)location, 1918 (GLsizei)count, 1919 (GLuint *)value 1920 ); 1921 1922 exit: 1923 if (_array) { 1924 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 1925 } 1926 if (_exception) { 1927 jniThrowException(_env, _exceptionType, _exceptionMessage); 1928 } 1929 } 1930 1931 /* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 1932 static void 1933 android_glProgramUniform3uiv__III_3II 1934 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 1935 jint _exception = 0; 1936 const char * _exceptionType = NULL; 1937 const char * _exceptionMessage = NULL; 1938 GLuint *value_base = (GLuint *) 0; 1939 jint _remaining; 1940 GLuint *value = (GLuint *) 0; 1941 1942 if (!value_ref) { 1943 _exception = 1; 1944 _exceptionType = "java/lang/IllegalArgumentException"; 1945 _exceptionMessage = "value == null"; 1946 goto exit; 1947 } 1948 if (offset < 0) { 1949 _exception = 1; 1950 _exceptionType = "java/lang/IllegalArgumentException"; 1951 _exceptionMessage = "offset < 0"; 1952 goto exit; 1953 } 1954 _remaining = _env->GetArrayLength(value_ref) - offset; 1955 value_base = (GLuint *) 1956 _env->GetIntArrayElements(value_ref, (jboolean *)0); 1957 value = value_base + offset; 1958 1959 glProgramUniform3uiv( 1960 (GLuint)program, 1961 (GLint)location, 1962 (GLsizei)count, 1963 (GLuint *)value 1964 ); 1965 1966 exit: 1967 if (value_base) { 1968 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 1969 JNI_ABORT); 1970 } 1971 if (_exception) { 1972 jniThrowException(_env, _exceptionType, _exceptionMessage); 1973 } 1974 } 1975 1976 /* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 1977 static void 1978 android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 1979 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 1980 jint _exception = 0; 1981 const char * _exceptionType = NULL; 1982 const char * _exceptionMessage = NULL; 1983 jintArray _array = (jintArray) 0; 1984 jint _bufferOffset = (jint) 0; 1985 jint _remaining; 1986 GLuint *value = (GLuint *) 0; 1987 1988 if (!value_buf) { 1989 _exception = 1; 1990 _exceptionType = "java/lang/IllegalArgumentException"; 1991 _exceptionMessage = "value == null"; 1992 goto exit; 1993 } 1994 value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1995 if (value == NULL) { 1996 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1997 value = (GLuint *) (_valueBase + _bufferOffset); 1998 } 1999 glProgramUniform3uiv( 2000 (GLuint)program, 2001 (GLint)location, 2002 (GLsizei)count, 2003 (GLuint *)value 2004 ); 2005 2006 exit: 2007 if (_array) { 2008 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 2009 } 2010 if (_exception) { 2011 jniThrowException(_env, _exceptionType, _exceptionMessage); 2012 } 2013 } 2014 2015 /* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 2016 static void 2017 android_glProgramUniform4uiv__III_3II 2018 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 2019 jint _exception = 0; 2020 const char * _exceptionType = NULL; 2021 const char * _exceptionMessage = NULL; 2022 GLuint *value_base = (GLuint *) 0; 2023 jint _remaining; 2024 GLuint *value = (GLuint *) 0; 2025 2026 if (!value_ref) { 2027 _exception = 1; 2028 _exceptionType = "java/lang/IllegalArgumentException"; 2029 _exceptionMessage = "value == null"; 2030 goto exit; 2031 } 2032 if (offset < 0) { 2033 _exception = 1; 2034 _exceptionType = "java/lang/IllegalArgumentException"; 2035 _exceptionMessage = "offset < 0"; 2036 goto exit; 2037 } 2038 _remaining = _env->GetArrayLength(value_ref) - offset; 2039 value_base = (GLuint *) 2040 _env->GetIntArrayElements(value_ref, (jboolean *)0); 2041 value = value_base + offset; 2042 2043 glProgramUniform4uiv( 2044 (GLuint)program, 2045 (GLint)location, 2046 (GLsizei)count, 2047 (GLuint *)value 2048 ); 2049 2050 exit: 2051 if (value_base) { 2052 _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 2053 JNI_ABORT); 2054 } 2055 if (_exception) { 2056 jniThrowException(_env, _exceptionType, _exceptionMessage); 2057 } 2058 } 2059 2060 /* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 2061 static void 2062 android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 2063 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 2064 jint _exception = 0; 2065 const char * _exceptionType = NULL; 2066 const char * _exceptionMessage = NULL; 2067 jintArray _array = (jintArray) 0; 2068 jint _bufferOffset = (jint) 0; 2069 jint _remaining; 2070 GLuint *value = (GLuint *) 0; 2071 2072 if (!value_buf) { 2073 _exception = 1; 2074 _exceptionType = "java/lang/IllegalArgumentException"; 2075 _exceptionMessage = "value == null"; 2076 goto exit; 2077 } 2078 value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2079 if (value == NULL) { 2080 char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2081 value = (GLuint *) (_valueBase + _bufferOffset); 2082 } 2083 glProgramUniform4uiv( 2084 (GLuint)program, 2085 (GLint)location, 2086 (GLsizei)count, 2087 (GLuint *)value 2088 ); 2089 2090 exit: 2091 if (_array) { 2092 _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 2093 } 2094 if (_exception) { 2095 jniThrowException(_env, _exceptionType, _exceptionMessage); 2096 } 2097 } 2098 2099 /* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2100 static void 2101 android_glProgramUniform1fv__III_3FI 2102 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 2103 jint _exception = 0; 2104 const char * _exceptionType = NULL; 2105 const char * _exceptionMessage = NULL; 2106 GLfloat *value_base = (GLfloat *) 0; 2107 jint _remaining; 2108 GLfloat *value = (GLfloat *) 0; 2109 2110 if (!value_ref) { 2111 _exception = 1; 2112 _exceptionType = "java/lang/IllegalArgumentException"; 2113 _exceptionMessage = "value == null"; 2114 goto exit; 2115 } 2116 if (offset < 0) { 2117 _exception = 1; 2118 _exceptionType = "java/lang/IllegalArgumentException"; 2119 _exceptionMessage = "offset < 0"; 2120 goto exit; 2121 } 2122 _remaining = _env->GetArrayLength(value_ref) - offset; 2123 value_base = (GLfloat *) 2124 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2125 value = value_base + offset; 2126 2127 glProgramUniform1fv( 2128 (GLuint)program, 2129 (GLint)location, 2130 (GLsizei)count, 2131 (GLfloat *)value 2132 ); 2133 2134 exit: 2135 if (value_base) { 2136 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2137 JNI_ABORT); 2138 } 2139 if (_exception) { 2140 jniThrowException(_env, _exceptionType, _exceptionMessage); 2141 } 2142 } 2143 2144 /* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2145 static void 2146 android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 2147 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 2148 jint _exception = 0; 2149 const char * _exceptionType = NULL; 2150 const char * _exceptionMessage = NULL; 2151 jfloatArray _array = (jfloatArray) 0; 2152 jint _bufferOffset = (jint) 0; 2153 jint _remaining; 2154 GLfloat *value = (GLfloat *) 0; 2155 2156 if (!value_buf) { 2157 _exception = 1; 2158 _exceptionType = "java/lang/IllegalArgumentException"; 2159 _exceptionMessage = "value == null"; 2160 goto exit; 2161 } 2162 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2163 if (value == NULL) { 2164 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2165 value = (GLfloat *) (_valueBase + _bufferOffset); 2166 } 2167 glProgramUniform1fv( 2168 (GLuint)program, 2169 (GLint)location, 2170 (GLsizei)count, 2171 (GLfloat *)value 2172 ); 2173 2174 exit: 2175 if (_array) { 2176 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2177 } 2178 if (_exception) { 2179 jniThrowException(_env, _exceptionType, _exceptionMessage); 2180 } 2181 } 2182 2183 /* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2184 static void 2185 android_glProgramUniform2fv__III_3FI 2186 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 2187 jint _exception = 0; 2188 const char * _exceptionType = NULL; 2189 const char * _exceptionMessage = NULL; 2190 GLfloat *value_base = (GLfloat *) 0; 2191 jint _remaining; 2192 GLfloat *value = (GLfloat *) 0; 2193 2194 if (!value_ref) { 2195 _exception = 1; 2196 _exceptionType = "java/lang/IllegalArgumentException"; 2197 _exceptionMessage = "value == null"; 2198 goto exit; 2199 } 2200 if (offset < 0) { 2201 _exception = 1; 2202 _exceptionType = "java/lang/IllegalArgumentException"; 2203 _exceptionMessage = "offset < 0"; 2204 goto exit; 2205 } 2206 _remaining = _env->GetArrayLength(value_ref) - offset; 2207 value_base = (GLfloat *) 2208 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2209 value = value_base + offset; 2210 2211 glProgramUniform2fv( 2212 (GLuint)program, 2213 (GLint)location, 2214 (GLsizei)count, 2215 (GLfloat *)value 2216 ); 2217 2218 exit: 2219 if (value_base) { 2220 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2221 JNI_ABORT); 2222 } 2223 if (_exception) { 2224 jniThrowException(_env, _exceptionType, _exceptionMessage); 2225 } 2226 } 2227 2228 /* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2229 static void 2230 android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 2231 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 2232 jint _exception = 0; 2233 const char * _exceptionType = NULL; 2234 const char * _exceptionMessage = NULL; 2235 jfloatArray _array = (jfloatArray) 0; 2236 jint _bufferOffset = (jint) 0; 2237 jint _remaining; 2238 GLfloat *value = (GLfloat *) 0; 2239 2240 if (!value_buf) { 2241 _exception = 1; 2242 _exceptionType = "java/lang/IllegalArgumentException"; 2243 _exceptionMessage = "value == null"; 2244 goto exit; 2245 } 2246 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2247 if (value == NULL) { 2248 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2249 value = (GLfloat *) (_valueBase + _bufferOffset); 2250 } 2251 glProgramUniform2fv( 2252 (GLuint)program, 2253 (GLint)location, 2254 (GLsizei)count, 2255 (GLfloat *)value 2256 ); 2257 2258 exit: 2259 if (_array) { 2260 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2261 } 2262 if (_exception) { 2263 jniThrowException(_env, _exceptionType, _exceptionMessage); 2264 } 2265 } 2266 2267 /* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2268 static void 2269 android_glProgramUniform3fv__III_3FI 2270 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 2271 jint _exception = 0; 2272 const char * _exceptionType = NULL; 2273 const char * _exceptionMessage = NULL; 2274 GLfloat *value_base = (GLfloat *) 0; 2275 jint _remaining; 2276 GLfloat *value = (GLfloat *) 0; 2277 2278 if (!value_ref) { 2279 _exception = 1; 2280 _exceptionType = "java/lang/IllegalArgumentException"; 2281 _exceptionMessage = "value == null"; 2282 goto exit; 2283 } 2284 if (offset < 0) { 2285 _exception = 1; 2286 _exceptionType = "java/lang/IllegalArgumentException"; 2287 _exceptionMessage = "offset < 0"; 2288 goto exit; 2289 } 2290 _remaining = _env->GetArrayLength(value_ref) - offset; 2291 value_base = (GLfloat *) 2292 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2293 value = value_base + offset; 2294 2295 glProgramUniform3fv( 2296 (GLuint)program, 2297 (GLint)location, 2298 (GLsizei)count, 2299 (GLfloat *)value 2300 ); 2301 2302 exit: 2303 if (value_base) { 2304 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2305 JNI_ABORT); 2306 } 2307 if (_exception) { 2308 jniThrowException(_env, _exceptionType, _exceptionMessage); 2309 } 2310 } 2311 2312 /* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2313 static void 2314 android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 2315 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 2316 jint _exception = 0; 2317 const char * _exceptionType = NULL; 2318 const char * _exceptionMessage = NULL; 2319 jfloatArray _array = (jfloatArray) 0; 2320 jint _bufferOffset = (jint) 0; 2321 jint _remaining; 2322 GLfloat *value = (GLfloat *) 0; 2323 2324 if (!value_buf) { 2325 _exception = 1; 2326 _exceptionType = "java/lang/IllegalArgumentException"; 2327 _exceptionMessage = "value == null"; 2328 goto exit; 2329 } 2330 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2331 if (value == NULL) { 2332 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2333 value = (GLfloat *) (_valueBase + _bufferOffset); 2334 } 2335 glProgramUniform3fv( 2336 (GLuint)program, 2337 (GLint)location, 2338 (GLsizei)count, 2339 (GLfloat *)value 2340 ); 2341 2342 exit: 2343 if (_array) { 2344 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2345 } 2346 if (_exception) { 2347 jniThrowException(_env, _exceptionType, _exceptionMessage); 2348 } 2349 } 2350 2351 /* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2352 static void 2353 android_glProgramUniform4fv__III_3FI 2354 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 2355 jint _exception = 0; 2356 const char * _exceptionType = NULL; 2357 const char * _exceptionMessage = NULL; 2358 GLfloat *value_base = (GLfloat *) 0; 2359 jint _remaining; 2360 GLfloat *value = (GLfloat *) 0; 2361 2362 if (!value_ref) { 2363 _exception = 1; 2364 _exceptionType = "java/lang/IllegalArgumentException"; 2365 _exceptionMessage = "value == null"; 2366 goto exit; 2367 } 2368 if (offset < 0) { 2369 _exception = 1; 2370 _exceptionType = "java/lang/IllegalArgumentException"; 2371 _exceptionMessage = "offset < 0"; 2372 goto exit; 2373 } 2374 _remaining = _env->GetArrayLength(value_ref) - offset; 2375 value_base = (GLfloat *) 2376 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2377 value = value_base + offset; 2378 2379 glProgramUniform4fv( 2380 (GLuint)program, 2381 (GLint)location, 2382 (GLsizei)count, 2383 (GLfloat *)value 2384 ); 2385 2386 exit: 2387 if (value_base) { 2388 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2389 JNI_ABORT); 2390 } 2391 if (_exception) { 2392 jniThrowException(_env, _exceptionType, _exceptionMessage); 2393 } 2394 } 2395 2396 /* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 2397 static void 2398 android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 2399 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 2400 jint _exception = 0; 2401 const char * _exceptionType = NULL; 2402 const char * _exceptionMessage = NULL; 2403 jfloatArray _array = (jfloatArray) 0; 2404 jint _bufferOffset = (jint) 0; 2405 jint _remaining; 2406 GLfloat *value = (GLfloat *) 0; 2407 2408 if (!value_buf) { 2409 _exception = 1; 2410 _exceptionType = "java/lang/IllegalArgumentException"; 2411 _exceptionMessage = "value == null"; 2412 goto exit; 2413 } 2414 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2415 if (value == NULL) { 2416 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2417 value = (GLfloat *) (_valueBase + _bufferOffset); 2418 } 2419 glProgramUniform4fv( 2420 (GLuint)program, 2421 (GLint)location, 2422 (GLsizei)count, 2423 (GLfloat *)value 2424 ); 2425 2426 exit: 2427 if (_array) { 2428 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2429 } 2430 if (_exception) { 2431 jniThrowException(_env, _exceptionType, _exceptionMessage); 2432 } 2433 } 2434 2435 /* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2436 static void 2437 android_glProgramUniformMatrix2fv__IIIZ_3FI 2438 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2439 jint _exception = 0; 2440 const char * _exceptionType = NULL; 2441 const char * _exceptionMessage = NULL; 2442 GLfloat *value_base = (GLfloat *) 0; 2443 jint _remaining; 2444 GLfloat *value = (GLfloat *) 0; 2445 2446 if (!value_ref) { 2447 _exception = 1; 2448 _exceptionType = "java/lang/IllegalArgumentException"; 2449 _exceptionMessage = "value == null"; 2450 goto exit; 2451 } 2452 if (offset < 0) { 2453 _exception = 1; 2454 _exceptionType = "java/lang/IllegalArgumentException"; 2455 _exceptionMessage = "offset < 0"; 2456 goto exit; 2457 } 2458 _remaining = _env->GetArrayLength(value_ref) - offset; 2459 value_base = (GLfloat *) 2460 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2461 value = value_base + offset; 2462 2463 glProgramUniformMatrix2fv( 2464 (GLuint)program, 2465 (GLint)location, 2466 (GLsizei)count, 2467 (GLboolean)transpose, 2468 (GLfloat *)value 2469 ); 2470 2471 exit: 2472 if (value_base) { 2473 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2474 JNI_ABORT); 2475 } 2476 if (_exception) { 2477 jniThrowException(_env, _exceptionType, _exceptionMessage); 2478 } 2479 } 2480 2481 /* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2482 static void 2483 android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 2484 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 2485 jint _exception = 0; 2486 const char * _exceptionType = NULL; 2487 const char * _exceptionMessage = NULL; 2488 jfloatArray _array = (jfloatArray) 0; 2489 jint _bufferOffset = (jint) 0; 2490 jint _remaining; 2491 GLfloat *value = (GLfloat *) 0; 2492 2493 if (!value_buf) { 2494 _exception = 1; 2495 _exceptionType = "java/lang/IllegalArgumentException"; 2496 _exceptionMessage = "value == null"; 2497 goto exit; 2498 } 2499 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2500 if (value == NULL) { 2501 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2502 value = (GLfloat *) (_valueBase + _bufferOffset); 2503 } 2504 glProgramUniformMatrix2fv( 2505 (GLuint)program, 2506 (GLint)location, 2507 (GLsizei)count, 2508 (GLboolean)transpose, 2509 (GLfloat *)value 2510 ); 2511 2512 exit: 2513 if (_array) { 2514 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2515 } 2516 if (_exception) { 2517 jniThrowException(_env, _exceptionType, _exceptionMessage); 2518 } 2519 } 2520 2521 /* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2522 static void 2523 android_glProgramUniformMatrix3fv__IIIZ_3FI 2524 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2525 jint _exception = 0; 2526 const char * _exceptionType = NULL; 2527 const char * _exceptionMessage = NULL; 2528 GLfloat *value_base = (GLfloat *) 0; 2529 jint _remaining; 2530 GLfloat *value = (GLfloat *) 0; 2531 2532 if (!value_ref) { 2533 _exception = 1; 2534 _exceptionType = "java/lang/IllegalArgumentException"; 2535 _exceptionMessage = "value == null"; 2536 goto exit; 2537 } 2538 if (offset < 0) { 2539 _exception = 1; 2540 _exceptionType = "java/lang/IllegalArgumentException"; 2541 _exceptionMessage = "offset < 0"; 2542 goto exit; 2543 } 2544 _remaining = _env->GetArrayLength(value_ref) - offset; 2545 value_base = (GLfloat *) 2546 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2547 value = value_base + offset; 2548 2549 glProgramUniformMatrix3fv( 2550 (GLuint)program, 2551 (GLint)location, 2552 (GLsizei)count, 2553 (GLboolean)transpose, 2554 (GLfloat *)value 2555 ); 2556 2557 exit: 2558 if (value_base) { 2559 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2560 JNI_ABORT); 2561 } 2562 if (_exception) { 2563 jniThrowException(_env, _exceptionType, _exceptionMessage); 2564 } 2565 } 2566 2567 /* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2568 static void 2569 android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 2570 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 2571 jint _exception = 0; 2572 const char * _exceptionType = NULL; 2573 const char * _exceptionMessage = NULL; 2574 jfloatArray _array = (jfloatArray) 0; 2575 jint _bufferOffset = (jint) 0; 2576 jint _remaining; 2577 GLfloat *value = (GLfloat *) 0; 2578 2579 if (!value_buf) { 2580 _exception = 1; 2581 _exceptionType = "java/lang/IllegalArgumentException"; 2582 _exceptionMessage = "value == null"; 2583 goto exit; 2584 } 2585 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2586 if (value == NULL) { 2587 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2588 value = (GLfloat *) (_valueBase + _bufferOffset); 2589 } 2590 glProgramUniformMatrix3fv( 2591 (GLuint)program, 2592 (GLint)location, 2593 (GLsizei)count, 2594 (GLboolean)transpose, 2595 (GLfloat *)value 2596 ); 2597 2598 exit: 2599 if (_array) { 2600 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2601 } 2602 if (_exception) { 2603 jniThrowException(_env, _exceptionType, _exceptionMessage); 2604 } 2605 } 2606 2607 /* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2608 static void 2609 android_glProgramUniformMatrix4fv__IIIZ_3FI 2610 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2611 jint _exception = 0; 2612 const char * _exceptionType = NULL; 2613 const char * _exceptionMessage = NULL; 2614 GLfloat *value_base = (GLfloat *) 0; 2615 jint _remaining; 2616 GLfloat *value = (GLfloat *) 0; 2617 2618 if (!value_ref) { 2619 _exception = 1; 2620 _exceptionType = "java/lang/IllegalArgumentException"; 2621 _exceptionMessage = "value == null"; 2622 goto exit; 2623 } 2624 if (offset < 0) { 2625 _exception = 1; 2626 _exceptionType = "java/lang/IllegalArgumentException"; 2627 _exceptionMessage = "offset < 0"; 2628 goto exit; 2629 } 2630 _remaining = _env->GetArrayLength(value_ref) - offset; 2631 value_base = (GLfloat *) 2632 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2633 value = value_base + offset; 2634 2635 glProgramUniformMatrix4fv( 2636 (GLuint)program, 2637 (GLint)location, 2638 (GLsizei)count, 2639 (GLboolean)transpose, 2640 (GLfloat *)value 2641 ); 2642 2643 exit: 2644 if (value_base) { 2645 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2646 JNI_ABORT); 2647 } 2648 if (_exception) { 2649 jniThrowException(_env, _exceptionType, _exceptionMessage); 2650 } 2651 } 2652 2653 /* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2654 static void 2655 android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 2656 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 2657 jint _exception = 0; 2658 const char * _exceptionType = NULL; 2659 const char * _exceptionMessage = NULL; 2660 jfloatArray _array = (jfloatArray) 0; 2661 jint _bufferOffset = (jint) 0; 2662 jint _remaining; 2663 GLfloat *value = (GLfloat *) 0; 2664 2665 if (!value_buf) { 2666 _exception = 1; 2667 _exceptionType = "java/lang/IllegalArgumentException"; 2668 _exceptionMessage = "value == null"; 2669 goto exit; 2670 } 2671 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2672 if (value == NULL) { 2673 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2674 value = (GLfloat *) (_valueBase + _bufferOffset); 2675 } 2676 glProgramUniformMatrix4fv( 2677 (GLuint)program, 2678 (GLint)location, 2679 (GLsizei)count, 2680 (GLboolean)transpose, 2681 (GLfloat *)value 2682 ); 2683 2684 exit: 2685 if (_array) { 2686 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2687 } 2688 if (_exception) { 2689 jniThrowException(_env, _exceptionType, _exceptionMessage); 2690 } 2691 } 2692 2693 /* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2694 static void 2695 android_glProgramUniformMatrix2x3fv__IIIZ_3FI 2696 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2697 jint _exception = 0; 2698 const char * _exceptionType = NULL; 2699 const char * _exceptionMessage = NULL; 2700 GLfloat *value_base = (GLfloat *) 0; 2701 jint _remaining; 2702 GLfloat *value = (GLfloat *) 0; 2703 2704 if (!value_ref) { 2705 _exception = 1; 2706 _exceptionType = "java/lang/IllegalArgumentException"; 2707 _exceptionMessage = "value == null"; 2708 goto exit; 2709 } 2710 if (offset < 0) { 2711 _exception = 1; 2712 _exceptionType = "java/lang/IllegalArgumentException"; 2713 _exceptionMessage = "offset < 0"; 2714 goto exit; 2715 } 2716 _remaining = _env->GetArrayLength(value_ref) - offset; 2717 value_base = (GLfloat *) 2718 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2719 value = value_base + offset; 2720 2721 glProgramUniformMatrix2x3fv( 2722 (GLuint)program, 2723 (GLint)location, 2724 (GLsizei)count, 2725 (GLboolean)transpose, 2726 (GLfloat *)value 2727 ); 2728 2729 exit: 2730 if (value_base) { 2731 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2732 JNI_ABORT); 2733 } 2734 if (_exception) { 2735 jniThrowException(_env, _exceptionType, _exceptionMessage); 2736 } 2737 } 2738 2739 /* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2740 static void 2741 android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 2742 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 2743 jint _exception = 0; 2744 const char * _exceptionType = NULL; 2745 const char * _exceptionMessage = NULL; 2746 jfloatArray _array = (jfloatArray) 0; 2747 jint _bufferOffset = (jint) 0; 2748 jint _remaining; 2749 GLfloat *value = (GLfloat *) 0; 2750 2751 if (!value_buf) { 2752 _exception = 1; 2753 _exceptionType = "java/lang/IllegalArgumentException"; 2754 _exceptionMessage = "value == null"; 2755 goto exit; 2756 } 2757 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2758 if (value == NULL) { 2759 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2760 value = (GLfloat *) (_valueBase + _bufferOffset); 2761 } 2762 glProgramUniformMatrix2x3fv( 2763 (GLuint)program, 2764 (GLint)location, 2765 (GLsizei)count, 2766 (GLboolean)transpose, 2767 (GLfloat *)value 2768 ); 2769 2770 exit: 2771 if (_array) { 2772 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2773 } 2774 if (_exception) { 2775 jniThrowException(_env, _exceptionType, _exceptionMessage); 2776 } 2777 } 2778 2779 /* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2780 static void 2781 android_glProgramUniformMatrix3x2fv__IIIZ_3FI 2782 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2783 jint _exception = 0; 2784 const char * _exceptionType = NULL; 2785 const char * _exceptionMessage = NULL; 2786 GLfloat *value_base = (GLfloat *) 0; 2787 jint _remaining; 2788 GLfloat *value = (GLfloat *) 0; 2789 2790 if (!value_ref) { 2791 _exception = 1; 2792 _exceptionType = "java/lang/IllegalArgumentException"; 2793 _exceptionMessage = "value == null"; 2794 goto exit; 2795 } 2796 if (offset < 0) { 2797 _exception = 1; 2798 _exceptionType = "java/lang/IllegalArgumentException"; 2799 _exceptionMessage = "offset < 0"; 2800 goto exit; 2801 } 2802 _remaining = _env->GetArrayLength(value_ref) - offset; 2803 value_base = (GLfloat *) 2804 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2805 value = value_base + offset; 2806 2807 glProgramUniformMatrix3x2fv( 2808 (GLuint)program, 2809 (GLint)location, 2810 (GLsizei)count, 2811 (GLboolean)transpose, 2812 (GLfloat *)value 2813 ); 2814 2815 exit: 2816 if (value_base) { 2817 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2818 JNI_ABORT); 2819 } 2820 if (_exception) { 2821 jniThrowException(_env, _exceptionType, _exceptionMessage); 2822 } 2823 } 2824 2825 /* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2826 static void 2827 android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 2828 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 2829 jint _exception = 0; 2830 const char * _exceptionType = NULL; 2831 const char * _exceptionMessage = NULL; 2832 jfloatArray _array = (jfloatArray) 0; 2833 jint _bufferOffset = (jint) 0; 2834 jint _remaining; 2835 GLfloat *value = (GLfloat *) 0; 2836 2837 if (!value_buf) { 2838 _exception = 1; 2839 _exceptionType = "java/lang/IllegalArgumentException"; 2840 _exceptionMessage = "value == null"; 2841 goto exit; 2842 } 2843 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2844 if (value == NULL) { 2845 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2846 value = (GLfloat *) (_valueBase + _bufferOffset); 2847 } 2848 glProgramUniformMatrix3x2fv( 2849 (GLuint)program, 2850 (GLint)location, 2851 (GLsizei)count, 2852 (GLboolean)transpose, 2853 (GLfloat *)value 2854 ); 2855 2856 exit: 2857 if (_array) { 2858 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2859 } 2860 if (_exception) { 2861 jniThrowException(_env, _exceptionType, _exceptionMessage); 2862 } 2863 } 2864 2865 /* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2866 static void 2867 android_glProgramUniformMatrix2x4fv__IIIZ_3FI 2868 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2869 jint _exception = 0; 2870 const char * _exceptionType = NULL; 2871 const char * _exceptionMessage = NULL; 2872 GLfloat *value_base = (GLfloat *) 0; 2873 jint _remaining; 2874 GLfloat *value = (GLfloat *) 0; 2875 2876 if (!value_ref) { 2877 _exception = 1; 2878 _exceptionType = "java/lang/IllegalArgumentException"; 2879 _exceptionMessage = "value == null"; 2880 goto exit; 2881 } 2882 if (offset < 0) { 2883 _exception = 1; 2884 _exceptionType = "java/lang/IllegalArgumentException"; 2885 _exceptionMessage = "offset < 0"; 2886 goto exit; 2887 } 2888 _remaining = _env->GetArrayLength(value_ref) - offset; 2889 value_base = (GLfloat *) 2890 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2891 value = value_base + offset; 2892 2893 glProgramUniformMatrix2x4fv( 2894 (GLuint)program, 2895 (GLint)location, 2896 (GLsizei)count, 2897 (GLboolean)transpose, 2898 (GLfloat *)value 2899 ); 2900 2901 exit: 2902 if (value_base) { 2903 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2904 JNI_ABORT); 2905 } 2906 if (_exception) { 2907 jniThrowException(_env, _exceptionType, _exceptionMessage); 2908 } 2909 } 2910 2911 /* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2912 static void 2913 android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 2914 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 2915 jint _exception = 0; 2916 const char * _exceptionType = NULL; 2917 const char * _exceptionMessage = NULL; 2918 jfloatArray _array = (jfloatArray) 0; 2919 jint _bufferOffset = (jint) 0; 2920 jint _remaining; 2921 GLfloat *value = (GLfloat *) 0; 2922 2923 if (!value_buf) { 2924 _exception = 1; 2925 _exceptionType = "java/lang/IllegalArgumentException"; 2926 _exceptionMessage = "value == null"; 2927 goto exit; 2928 } 2929 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2930 if (value == NULL) { 2931 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 2932 value = (GLfloat *) (_valueBase + _bufferOffset); 2933 } 2934 glProgramUniformMatrix2x4fv( 2935 (GLuint)program, 2936 (GLint)location, 2937 (GLsizei)count, 2938 (GLboolean)transpose, 2939 (GLfloat *)value 2940 ); 2941 2942 exit: 2943 if (_array) { 2944 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 2945 } 2946 if (_exception) { 2947 jniThrowException(_env, _exceptionType, _exceptionMessage); 2948 } 2949 } 2950 2951 /* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2952 static void 2953 android_glProgramUniformMatrix4x2fv__IIIZ_3FI 2954 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 2955 jint _exception = 0; 2956 const char * _exceptionType = NULL; 2957 const char * _exceptionMessage = NULL; 2958 GLfloat *value_base = (GLfloat *) 0; 2959 jint _remaining; 2960 GLfloat *value = (GLfloat *) 0; 2961 2962 if (!value_ref) { 2963 _exception = 1; 2964 _exceptionType = "java/lang/IllegalArgumentException"; 2965 _exceptionMessage = "value == null"; 2966 goto exit; 2967 } 2968 if (offset < 0) { 2969 _exception = 1; 2970 _exceptionType = "java/lang/IllegalArgumentException"; 2971 _exceptionMessage = "offset < 0"; 2972 goto exit; 2973 } 2974 _remaining = _env->GetArrayLength(value_ref) - offset; 2975 value_base = (GLfloat *) 2976 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 2977 value = value_base + offset; 2978 2979 glProgramUniformMatrix4x2fv( 2980 (GLuint)program, 2981 (GLint)location, 2982 (GLsizei)count, 2983 (GLboolean)transpose, 2984 (GLfloat *)value 2985 ); 2986 2987 exit: 2988 if (value_base) { 2989 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 2990 JNI_ABORT); 2991 } 2992 if (_exception) { 2993 jniThrowException(_env, _exceptionType, _exceptionMessage); 2994 } 2995 } 2996 2997 /* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 2998 static void 2999 android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 3000 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 3001 jint _exception = 0; 3002 const char * _exceptionType = NULL; 3003 const char * _exceptionMessage = NULL; 3004 jfloatArray _array = (jfloatArray) 0; 3005 jint _bufferOffset = (jint) 0; 3006 jint _remaining; 3007 GLfloat *value = (GLfloat *) 0; 3008 3009 if (!value_buf) { 3010 _exception = 1; 3011 _exceptionType = "java/lang/IllegalArgumentException"; 3012 _exceptionMessage = "value == null"; 3013 goto exit; 3014 } 3015 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3016 if (value == NULL) { 3017 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3018 value = (GLfloat *) (_valueBase + _bufferOffset); 3019 } 3020 glProgramUniformMatrix4x2fv( 3021 (GLuint)program, 3022 (GLint)location, 3023 (GLsizei)count, 3024 (GLboolean)transpose, 3025 (GLfloat *)value 3026 ); 3027 3028 exit: 3029 if (_array) { 3030 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 3031 } 3032 if (_exception) { 3033 jniThrowException(_env, _exceptionType, _exceptionMessage); 3034 } 3035 } 3036 3037 /* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 3038 static void 3039 android_glProgramUniformMatrix3x4fv__IIIZ_3FI 3040 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 3041 jint _exception = 0; 3042 const char * _exceptionType = NULL; 3043 const char * _exceptionMessage = NULL; 3044 GLfloat *value_base = (GLfloat *) 0; 3045 jint _remaining; 3046 GLfloat *value = (GLfloat *) 0; 3047 3048 if (!value_ref) { 3049 _exception = 1; 3050 _exceptionType = "java/lang/IllegalArgumentException"; 3051 _exceptionMessage = "value == null"; 3052 goto exit; 3053 } 3054 if (offset < 0) { 3055 _exception = 1; 3056 _exceptionType = "java/lang/IllegalArgumentException"; 3057 _exceptionMessage = "offset < 0"; 3058 goto exit; 3059 } 3060 _remaining = _env->GetArrayLength(value_ref) - offset; 3061 value_base = (GLfloat *) 3062 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 3063 value = value_base + offset; 3064 3065 glProgramUniformMatrix3x4fv( 3066 (GLuint)program, 3067 (GLint)location, 3068 (GLsizei)count, 3069 (GLboolean)transpose, 3070 (GLfloat *)value 3071 ); 3072 3073 exit: 3074 if (value_base) { 3075 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 3076 JNI_ABORT); 3077 } 3078 if (_exception) { 3079 jniThrowException(_env, _exceptionType, _exceptionMessage); 3080 } 3081 } 3082 3083 /* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 3084 static void 3085 android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 3086 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 3087 jint _exception = 0; 3088 const char * _exceptionType = NULL; 3089 const char * _exceptionMessage = NULL; 3090 jfloatArray _array = (jfloatArray) 0; 3091 jint _bufferOffset = (jint) 0; 3092 jint _remaining; 3093 GLfloat *value = (GLfloat *) 0; 3094 3095 if (!value_buf) { 3096 _exception = 1; 3097 _exceptionType = "java/lang/IllegalArgumentException"; 3098 _exceptionMessage = "value == null"; 3099 goto exit; 3100 } 3101 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3102 if (value == NULL) { 3103 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3104 value = (GLfloat *) (_valueBase + _bufferOffset); 3105 } 3106 glProgramUniformMatrix3x4fv( 3107 (GLuint)program, 3108 (GLint)location, 3109 (GLsizei)count, 3110 (GLboolean)transpose, 3111 (GLfloat *)value 3112 ); 3113 3114 exit: 3115 if (_array) { 3116 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 3117 } 3118 if (_exception) { 3119 jniThrowException(_env, _exceptionType, _exceptionMessage); 3120 } 3121 } 3122 3123 /* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 3124 static void 3125 android_glProgramUniformMatrix4x3fv__IIIZ_3FI 3126 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 3127 jint _exception = 0; 3128 const char * _exceptionType = NULL; 3129 const char * _exceptionMessage = NULL; 3130 GLfloat *value_base = (GLfloat *) 0; 3131 jint _remaining; 3132 GLfloat *value = (GLfloat *) 0; 3133 3134 if (!value_ref) { 3135 _exception = 1; 3136 _exceptionType = "java/lang/IllegalArgumentException"; 3137 _exceptionMessage = "value == null"; 3138 goto exit; 3139 } 3140 if (offset < 0) { 3141 _exception = 1; 3142 _exceptionType = "java/lang/IllegalArgumentException"; 3143 _exceptionMessage = "offset < 0"; 3144 goto exit; 3145 } 3146 _remaining = _env->GetArrayLength(value_ref) - offset; 3147 value_base = (GLfloat *) 3148 _env->GetFloatArrayElements(value_ref, (jboolean *)0); 3149 value = value_base + offset; 3150 3151 glProgramUniformMatrix4x3fv( 3152 (GLuint)program, 3153 (GLint)location, 3154 (GLsizei)count, 3155 (GLboolean)transpose, 3156 (GLfloat *)value 3157 ); 3158 3159 exit: 3160 if (value_base) { 3161 _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 3162 JNI_ABORT); 3163 } 3164 if (_exception) { 3165 jniThrowException(_env, _exceptionType, _exceptionMessage); 3166 } 3167 } 3168 3169 /* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 3170 static void 3171 android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 3172 (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 3173 jint _exception = 0; 3174 const char * _exceptionType = NULL; 3175 const char * _exceptionMessage = NULL; 3176 jfloatArray _array = (jfloatArray) 0; 3177 jint _bufferOffset = (jint) 0; 3178 jint _remaining; 3179 GLfloat *value = (GLfloat *) 0; 3180 3181 if (!value_buf) { 3182 _exception = 1; 3183 _exceptionType = "java/lang/IllegalArgumentException"; 3184 _exceptionMessage = "value == null"; 3185 goto exit; 3186 } 3187 value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3188 if (value == NULL) { 3189 char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3190 value = (GLfloat *) (_valueBase + _bufferOffset); 3191 } 3192 glProgramUniformMatrix4x3fv( 3193 (GLuint)program, 3194 (GLint)location, 3195 (GLsizei)count, 3196 (GLboolean)transpose, 3197 (GLfloat *)value 3198 ); 3199 3200 exit: 3201 if (_array) { 3202 _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 3203 } 3204 if (_exception) { 3205 jniThrowException(_env, _exceptionType, _exceptionMessage); 3206 } 3207 } 3208 3209 /* void glValidateProgramPipeline ( GLuint pipeline ) */ 3210 static void 3211 android_glValidateProgramPipeline__I 3212 (JNIEnv *_env, jobject _this, jint pipeline) { 3213 glValidateProgramPipeline( 3214 (GLuint)pipeline 3215 ); 3216 } 3217 3218 #include <stdlib.h> 3219 3220 /* void glGetProgramPipelineInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 3221 static jstring android_glGetProgramPipelineInfoLog(JNIEnv *_env, jobject, jint shader) { 3222 GLint infoLen = 0; 3223 glGetProgramPipelineiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 3224 if (!infoLen) { 3225 return _env->NewStringUTF(""); 3226 } 3227 char* buf = (char*) malloc(infoLen); 3228 if (buf == NULL) { 3229 jniThrowException(_env, "java/lang/OutOfMemoryError", "out of memory"); 3230 return NULL; 3231 } 3232 glGetProgramPipelineInfoLog(shader, infoLen, NULL, buf); 3233 jstring result = _env->NewStringUTF(buf); 3234 free(buf); 3235 return result; 3236 } 3237 /* void glBindImageTexture ( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format ) */ 3238 static void 3239 android_glBindImageTexture__IIIZIII 3240 (JNIEnv *_env, jobject _this, jint unit, jint texture, jint level, jboolean layered, jint layer, jint access, jint format) { 3241 glBindImageTexture( 3242 (GLuint)unit, 3243 (GLuint)texture, 3244 (GLint)level, 3245 (GLboolean)layered, 3246 (GLint)layer, 3247 (GLenum)access, 3248 (GLenum)format 3249 ); 3250 } 3251 3252 /* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 3253 static void 3254 android_glGetBooleani_v__II_3ZI 3255 (JNIEnv *_env, jobject _this, jint target, jint index, jbooleanArray data_ref, jint offset) { 3256 jint _exception = 0; 3257 const char * _exceptionType = NULL; 3258 const char * _exceptionMessage = NULL; 3259 GLboolean *data_base = (GLboolean *) 0; 3260 jint _remaining; 3261 GLboolean *data = (GLboolean *) 0; 3262 3263 if (!data_ref) { 3264 _exception = 1; 3265 _exceptionType = "java/lang/IllegalArgumentException"; 3266 _exceptionMessage = "data == null"; 3267 goto exit; 3268 } 3269 if (offset < 0) { 3270 _exception = 1; 3271 _exceptionType = "java/lang/IllegalArgumentException"; 3272 _exceptionMessage = "offset < 0"; 3273 goto exit; 3274 } 3275 _remaining = _env->GetArrayLength(data_ref) - offset; 3276 data_base = (GLboolean *) 3277 _env->GetBooleanArrayElements(data_ref, (jboolean *)0); 3278 data = data_base + offset; 3279 3280 glGetBooleani_v( 3281 (GLenum)target, 3282 (GLuint)index, 3283 (GLboolean *)data 3284 ); 3285 3286 exit: 3287 if (data_base) { 3288 _env->ReleaseBooleanArrayElements(data_ref, (jboolean*)data_base, 3289 _exception ? JNI_ABORT: 0); 3290 } 3291 if (_exception) { 3292 jniThrowException(_env, _exceptionType, _exceptionMessage); 3293 } 3294 } 3295 3296 /* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 3297 static void 3298 android_glGetBooleani_v__IILjava_nio_IntBuffer_2 3299 (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 3300 jint _exception = 0; 3301 const char * _exceptionType = NULL; 3302 const char * _exceptionMessage = NULL; 3303 jintArray _array = (jintArray) 0; 3304 jint _bufferOffset = (jint) 0; 3305 jint _remaining; 3306 GLboolean *data = (GLboolean *) 0; 3307 3308 if (!data_buf) { 3309 _exception = 1; 3310 _exceptionType = "java/lang/IllegalArgumentException"; 3311 _exceptionMessage = "data == null"; 3312 goto exit; 3313 } 3314 data = (GLboolean *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3315 if (data == NULL) { 3316 char * _dataBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3317 data = (GLboolean *) (_dataBase + _bufferOffset); 3318 } 3319 glGetBooleani_v( 3320 (GLenum)target, 3321 (GLuint)index, 3322 (GLboolean *)data 3323 ); 3324 3325 exit: 3326 if (_array) { 3327 _env->ReleaseIntArrayElements(_array, (jint*)data, _exception ? JNI_ABORT : 0); 3328 } 3329 if (_exception) { 3330 jniThrowException(_env, _exceptionType, _exceptionMessage); 3331 } 3332 } 3333 3334 /* void glMemoryBarrier ( GLbitfield barriers ) */ 3335 static void 3336 android_glMemoryBarrier__I 3337 (JNIEnv *_env, jobject _this, jint barriers) { 3338 glMemoryBarrier( 3339 (GLbitfield)barriers 3340 ); 3341 } 3342 3343 /* void glMemoryBarrierByRegion ( GLbitfield barriers ) */ 3344 static void 3345 android_glMemoryBarrierByRegion__I 3346 (JNIEnv *_env, jobject _this, jint barriers) { 3347 glMemoryBarrierByRegion( 3348 (GLbitfield)barriers 3349 ); 3350 } 3351 3352 /* void glTexStorage2DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations ) */ 3353 static void 3354 android_glTexStorage2DMultisample__IIIIIZ 3355 (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jboolean fixedsamplelocations) { 3356 glTexStorage2DMultisample( 3357 (GLenum)target, 3358 (GLsizei)samples, 3359 (GLenum)internalformat, 3360 (GLsizei)width, 3361 (GLsizei)height, 3362 (GLboolean)fixedsamplelocations 3363 ); 3364 } 3365 3366 /* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 3367 static void 3368 android_glGetMultisamplefv__II_3FI 3369 (JNIEnv *_env, jobject _this, jint pname, jint index, jfloatArray val_ref, jint offset) { 3370 jint _exception = 0; 3371 const char * _exceptionType = NULL; 3372 const char * _exceptionMessage = NULL; 3373 GLfloat *val_base = (GLfloat *) 0; 3374 jint _remaining; 3375 GLfloat *val = (GLfloat *) 0; 3376 3377 if (!val_ref) { 3378 _exception = 1; 3379 _exceptionType = "java/lang/IllegalArgumentException"; 3380 _exceptionMessage = "val == null"; 3381 goto exit; 3382 } 3383 if (offset < 0) { 3384 _exception = 1; 3385 _exceptionType = "java/lang/IllegalArgumentException"; 3386 _exceptionMessage = "offset < 0"; 3387 goto exit; 3388 } 3389 _remaining = _env->GetArrayLength(val_ref) - offset; 3390 val_base = (GLfloat *) 3391 _env->GetFloatArrayElements(val_ref, (jboolean *)0); 3392 val = val_base + offset; 3393 3394 glGetMultisamplefv( 3395 (GLenum)pname, 3396 (GLuint)index, 3397 (GLfloat *)val 3398 ); 3399 3400 exit: 3401 if (val_base) { 3402 _env->ReleaseFloatArrayElements(val_ref, (jfloat*)val_base, 3403 _exception ? JNI_ABORT: 0); 3404 } 3405 if (_exception) { 3406 jniThrowException(_env, _exceptionType, _exceptionMessage); 3407 } 3408 } 3409 3410 /* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 3411 static void 3412 android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 3413 (JNIEnv *_env, jobject _this, jint pname, jint index, jobject val_buf) { 3414 jint _exception = 0; 3415 const char * _exceptionType = NULL; 3416 const char * _exceptionMessage = NULL; 3417 jfloatArray _array = (jfloatArray) 0; 3418 jint _bufferOffset = (jint) 0; 3419 jint _remaining; 3420 GLfloat *val = (GLfloat *) 0; 3421 3422 if (!val_buf) { 3423 _exception = 1; 3424 _exceptionType = "java/lang/IllegalArgumentException"; 3425 _exceptionMessage = "val == null"; 3426 goto exit; 3427 } 3428 val = (GLfloat *)getPointer(_env, val_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3429 if (val == NULL) { 3430 char * _valBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3431 val = (GLfloat *) (_valBase + _bufferOffset); 3432 } 3433 glGetMultisamplefv( 3434 (GLenum)pname, 3435 (GLuint)index, 3436 (GLfloat *)val 3437 ); 3438 3439 exit: 3440 if (_array) { 3441 _env->ReleaseFloatArrayElements(_array, (jfloat*)val, _exception ? JNI_ABORT : 0); 3442 } 3443 if (_exception) { 3444 jniThrowException(_env, _exceptionType, _exceptionMessage); 3445 } 3446 } 3447 3448 /* void glSampleMaski ( GLuint maskNumber, GLbitfield mask ) */ 3449 static void 3450 android_glSampleMaski__II 3451 (JNIEnv *_env, jobject _this, jint maskNumber, jint mask) { 3452 glSampleMaski( 3453 (GLuint)maskNumber, 3454 (GLbitfield)mask 3455 ); 3456 } 3457 3458 /* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 3459 static void 3460 android_glGetTexLevelParameteriv__III_3II 3461 (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jintArray params_ref, jint offset) { 3462 jint _exception = 0; 3463 const char * _exceptionType = NULL; 3464 const char * _exceptionMessage = NULL; 3465 GLint *params_base = (GLint *) 0; 3466 jint _remaining; 3467 GLint *params = (GLint *) 0; 3468 3469 if (!params_ref) { 3470 _exception = 1; 3471 _exceptionType = "java/lang/IllegalArgumentException"; 3472 _exceptionMessage = "params == null"; 3473 goto exit; 3474 } 3475 if (offset < 0) { 3476 _exception = 1; 3477 _exceptionType = "java/lang/IllegalArgumentException"; 3478 _exceptionMessage = "offset < 0"; 3479 goto exit; 3480 } 3481 _remaining = _env->GetArrayLength(params_ref) - offset; 3482 params_base = (GLint *) 3483 _env->GetIntArrayElements(params_ref, (jboolean *)0); 3484 params = params_base + offset; 3485 3486 glGetTexLevelParameteriv( 3487 (GLenum)target, 3488 (GLint)level, 3489 (GLenum)pname, 3490 (GLint *)params 3491 ); 3492 3493 exit: 3494 if (params_base) { 3495 _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 3496 _exception ? JNI_ABORT: 0); 3497 } 3498 if (_exception) { 3499 jniThrowException(_env, _exceptionType, _exceptionMessage); 3500 } 3501 } 3502 3503 /* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 3504 static void 3505 android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 3506 (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 3507 jint _exception = 0; 3508 const char * _exceptionType = NULL; 3509 const char * _exceptionMessage = NULL; 3510 jintArray _array = (jintArray) 0; 3511 jint _bufferOffset = (jint) 0; 3512 jint _remaining; 3513 GLint *params = (GLint *) 0; 3514 3515 if (!params_buf) { 3516 _exception = 1; 3517 _exceptionType = "java/lang/IllegalArgumentException"; 3518 _exceptionMessage = "params == null"; 3519 goto exit; 3520 } 3521 params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3522 if (params == NULL) { 3523 char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3524 params = (GLint *) (_paramsBase + _bufferOffset); 3525 } 3526 glGetTexLevelParameteriv( 3527 (GLenum)target, 3528 (GLint)level, 3529 (GLenum)pname, 3530 (GLint *)params 3531 ); 3532 3533 exit: 3534 if (_array) { 3535 _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 3536 } 3537 if (_exception) { 3538 jniThrowException(_env, _exceptionType, _exceptionMessage); 3539 } 3540 } 3541 3542 /* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 3543 static void 3544 android_glGetTexLevelParameterfv__III_3FI 3545 (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jfloatArray params_ref, jint offset) { 3546 jint _exception = 0; 3547 const char * _exceptionType = NULL; 3548 const char * _exceptionMessage = NULL; 3549 GLfloat *params_base = (GLfloat *) 0; 3550 jint _remaining; 3551 GLfloat *params = (GLfloat *) 0; 3552 3553 if (!params_ref) { 3554 _exception = 1; 3555 _exceptionType = "java/lang/IllegalArgumentException"; 3556 _exceptionMessage = "params == null"; 3557 goto exit; 3558 } 3559 if (offset < 0) { 3560 _exception = 1; 3561 _exceptionType = "java/lang/IllegalArgumentException"; 3562 _exceptionMessage = "offset < 0"; 3563 goto exit; 3564 } 3565 _remaining = _env->GetArrayLength(params_ref) - offset; 3566 params_base = (GLfloat *) 3567 _env->GetFloatArrayElements(params_ref, (jboolean *)0); 3568 params = params_base + offset; 3569 3570 glGetTexLevelParameterfv( 3571 (GLenum)target, 3572 (GLint)level, 3573 (GLenum)pname, 3574 (GLfloat *)params 3575 ); 3576 3577 exit: 3578 if (params_base) { 3579 _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 3580 _exception ? JNI_ABORT: 0); 3581 } 3582 if (_exception) { 3583 jniThrowException(_env, _exceptionType, _exceptionMessage); 3584 } 3585 } 3586 3587 /* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 3588 static void 3589 android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 3590 (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 3591 jint _exception = 0; 3592 const char * _exceptionType = NULL; 3593 const char * _exceptionMessage = NULL; 3594 jfloatArray _array = (jfloatArray) 0; 3595 jint _bufferOffset = (jint) 0; 3596 jint _remaining; 3597 GLfloat *params = (GLfloat *) 0; 3598 3599 if (!params_buf) { 3600 _exception = 1; 3601 _exceptionType = "java/lang/IllegalArgumentException"; 3602 _exceptionMessage = "params == null"; 3603 goto exit; 3604 } 3605 params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3606 if (params == NULL) { 3607 char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3608 params = (GLfloat *) (_paramsBase + _bufferOffset); 3609 } 3610 glGetTexLevelParameterfv( 3611 (GLenum)target, 3612 (GLint)level, 3613 (GLenum)pname, 3614 (GLfloat *)params 3615 ); 3616 3617 exit: 3618 if (_array) { 3619 _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0); 3620 } 3621 if (_exception) { 3622 jniThrowException(_env, _exceptionType, _exceptionMessage); 3623 } 3624 } 3625 3626 /* void glBindVertexBuffer ( GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride ) */ 3627 static void 3628 android_glBindVertexBuffer__IIJI 3629 (JNIEnv *_env, jobject _this, jint bindingindex, jint buffer, jlong offset, jint stride) { 3630 if (sizeof(GLintptr) != sizeof(jlong) && (offset < LONG_MIN || offset > LONG_MAX)) { 3631 jniThrowException(_env, "java/lang/IllegalArgumentException", "offset too large"); 3632 return; 3633 } 3634 glBindVertexBuffer( 3635 (GLuint)bindingindex, 3636 (GLuint)buffer, 3637 (GLintptr)offset, 3638 (GLsizei)stride 3639 ); 3640 } 3641 /* void glVertexAttribFormat ( GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset ) */ 3642 static void 3643 android_glVertexAttribFormat__IIIZI 3644 (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jboolean normalized, jint relativeoffset) { 3645 glVertexAttribFormat( 3646 (GLuint)attribindex, 3647 (GLint)size, 3648 (GLenum)type, 3649 (GLboolean)normalized, 3650 (GLuint)relativeoffset 3651 ); 3652 } 3653 3654 /* void glVertexAttribIFormat ( GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset ) */ 3655 static void 3656 android_glVertexAttribIFormat__IIII 3657 (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jint relativeoffset) { 3658 glVertexAttribIFormat( 3659 (GLuint)attribindex, 3660 (GLint)size, 3661 (GLenum)type, 3662 (GLuint)relativeoffset 3663 ); 3664 } 3665 3666 /* void glVertexAttribBinding ( GLuint attribindex, GLuint bindingindex ) */ 3667 static void 3668 android_glVertexAttribBinding__II 3669 (JNIEnv *_env, jobject _this, jint attribindex, jint bindingindex) { 3670 glVertexAttribBinding( 3671 (GLuint)attribindex, 3672 (GLuint)bindingindex 3673 ); 3674 } 3675 3676 /* void glVertexBindingDivisor ( GLuint bindingindex, GLuint divisor ) */ 3677 static void 3678 android_glVertexBindingDivisor__II 3679 (JNIEnv *_env, jobject _this, jint bindingindex, jint divisor) { 3680 glVertexBindingDivisor( 3681 (GLuint)bindingindex, 3682 (GLuint)divisor 3683 ); 3684 } 3685 3686 static const char *classPathName = "android/opengl/GLES31"; 3687 3688 static const JNINativeMethod methods[] = { 3689 {"_nativeClassInit", "()V", (void*)nativeClassInit }, 3690 {"glDispatchCompute", "(III)V", (void *) android_glDispatchCompute__III }, 3691 {"glDispatchComputeIndirect", "(J)V", (void *) android_glDispatchComputeIndirect }, 3692 {"glDrawArraysIndirect", "(IJ)V", (void *) android_glDrawArraysIndirect }, 3693 {"glDrawElementsIndirect", "(IIJ)V", (void *) android_glDrawElementsIndirect }, 3694 {"glFramebufferParameteri", "(III)V", (void *) android_glFramebufferParameteri__III }, 3695 {"glGetFramebufferParameteriv", "(II[II)V", (void *) android_glGetFramebufferParameteriv__II_3II }, 3696 {"glGetFramebufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 }, 3697 {"glGetProgramInterfaceiv", "(III[II)V", (void *) android_glGetProgramInterfaceiv__III_3II }, 3698 {"glGetProgramInterfaceiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 }, 3699 {"glGetProgramResourceIndex", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceIndex__IILjava_lang_String_2 }, 3700 {"glGetProgramResourceName", "(III)Ljava/lang/String;", (void *) android_glGetProgramResourceName }, 3701 {"glGetProgramResourceiv", "(IIII[III[II[II)V", (void *) android_glGetProgramResourceiv__IIII_3III_3II_3II }, 3702 {"glGetProgramResourceiv", "(IIIILjava/nio/IntBuffer;ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 3703 {"glGetProgramResourceLocation", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceLocation__IILjava_lang_String_2 }, 3704 {"glUseProgramStages", "(III)V", (void *) android_glUseProgramStages__III }, 3705 {"glActiveShaderProgram", "(II)V", (void *) android_glActiveShaderProgram__II }, 3706 {"glCreateShaderProgramv", "(I[Ljava/lang/String;)I", (void *) android_glCreateShaderProgramv }, 3707 {"glBindProgramPipeline", "(I)V", (void *) android_glBindProgramPipeline__I }, 3708 {"glDeleteProgramPipelines", "(I[II)V", (void *) android_glDeleteProgramPipelines__I_3II }, 3709 {"glDeleteProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 }, 3710 {"glGenProgramPipelines", "(I[II)V", (void *) android_glGenProgramPipelines__I_3II }, 3711 {"glGenProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenProgramPipelines__ILjava_nio_IntBuffer_2 }, 3712 {"glIsProgramPipeline", "(I)Z", (void *) android_glIsProgramPipeline__I }, 3713 {"glGetProgramPipelineiv", "(II[II)V", (void *) android_glGetProgramPipelineiv__II_3II }, 3714 {"glGetProgramPipelineiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 }, 3715 {"glProgramUniform1i", "(III)V", (void *) android_glProgramUniform1i__III }, 3716 {"glProgramUniform2i", "(IIII)V", (void *) android_glProgramUniform2i__IIII }, 3717 {"glProgramUniform3i", "(IIIII)V", (void *) android_glProgramUniform3i__IIIII }, 3718 {"glProgramUniform4i", "(IIIIII)V", (void *) android_glProgramUniform4i__IIIIII }, 3719 {"glProgramUniform1ui", "(III)V", (void *) android_glProgramUniform1ui__III }, 3720 {"glProgramUniform2ui", "(IIII)V", (void *) android_glProgramUniform2ui__IIII }, 3721 {"glProgramUniform3ui", "(IIIII)V", (void *) android_glProgramUniform3ui__IIIII }, 3722 {"glProgramUniform4ui", "(IIIIII)V", (void *) android_glProgramUniform4ui__IIIIII }, 3723 {"glProgramUniform1f", "(IIF)V", (void *) android_glProgramUniform1f__IIF }, 3724 {"glProgramUniform2f", "(IIFF)V", (void *) android_glProgramUniform2f__IIFF }, 3725 {"glProgramUniform3f", "(IIFFF)V", (void *) android_glProgramUniform3f__IIFFF }, 3726 {"glProgramUniform4f", "(IIFFFF)V", (void *) android_glProgramUniform4f__IIFFFF }, 3727 {"glProgramUniform1iv", "(III[II)V", (void *) android_glProgramUniform1iv__III_3II }, 3728 {"glProgramUniform1iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 }, 3729 {"glProgramUniform2iv", "(III[II)V", (void *) android_glProgramUniform2iv__III_3II }, 3730 {"glProgramUniform2iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 }, 3731 {"glProgramUniform3iv", "(III[II)V", (void *) android_glProgramUniform3iv__III_3II }, 3732 {"glProgramUniform3iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 }, 3733 {"glProgramUniform4iv", "(III[II)V", (void *) android_glProgramUniform4iv__III_3II }, 3734 {"glProgramUniform4iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 }, 3735 {"glProgramUniform1uiv", "(III[II)V", (void *) android_glProgramUniform1uiv__III_3II }, 3736 {"glProgramUniform1uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 }, 3737 {"glProgramUniform2uiv", "(III[II)V", (void *) android_glProgramUniform2uiv__III_3II }, 3738 {"glProgramUniform2uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 }, 3739 {"glProgramUniform3uiv", "(III[II)V", (void *) android_glProgramUniform3uiv__III_3II }, 3740 {"glProgramUniform3uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 }, 3741 {"glProgramUniform4uiv", "(III[II)V", (void *) android_glProgramUniform4uiv__III_3II }, 3742 {"glProgramUniform4uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 }, 3743 {"glProgramUniform1fv", "(III[FI)V", (void *) android_glProgramUniform1fv__III_3FI }, 3744 {"glProgramUniform1fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 }, 3745 {"glProgramUniform2fv", "(III[FI)V", (void *) android_glProgramUniform2fv__III_3FI }, 3746 {"glProgramUniform2fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 }, 3747 {"glProgramUniform3fv", "(III[FI)V", (void *) android_glProgramUniform3fv__III_3FI }, 3748 {"glProgramUniform3fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 }, 3749 {"glProgramUniform4fv", "(III[FI)V", (void *) android_glProgramUniform4fv__III_3FI }, 3750 {"glProgramUniform4fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 }, 3751 {"glProgramUniformMatrix2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2fv__IIIZ_3FI }, 3752 {"glProgramUniformMatrix2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 }, 3753 {"glProgramUniformMatrix3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3fv__IIIZ_3FI }, 3754 {"glProgramUniformMatrix3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 }, 3755 {"glProgramUniformMatrix4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4fv__IIIZ_3FI }, 3756 {"glProgramUniformMatrix4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 }, 3757 {"glProgramUniformMatrix2x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZ_3FI }, 3758 {"glProgramUniformMatrix2x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 }, 3759 {"glProgramUniformMatrix3x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZ_3FI }, 3760 {"glProgramUniformMatrix3x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 }, 3761 {"glProgramUniformMatrix2x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZ_3FI }, 3762 {"glProgramUniformMatrix2x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 }, 3763 {"glProgramUniformMatrix4x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZ_3FI }, 3764 {"glProgramUniformMatrix4x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 }, 3765 {"glProgramUniformMatrix3x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZ_3FI }, 3766 {"glProgramUniformMatrix3x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 }, 3767 {"glProgramUniformMatrix4x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZ_3FI }, 3768 {"glProgramUniformMatrix4x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 }, 3769 {"glValidateProgramPipeline", "(I)V", (void *) android_glValidateProgramPipeline__I }, 3770 {"glGetProgramPipelineInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramPipelineInfoLog }, 3771 {"glBindImageTexture", "(IIIZIII)V", (void *) android_glBindImageTexture__IIIZIII }, 3772 {"glGetBooleani_v", "(II[ZI)V", (void *) android_glGetBooleani_v__II_3ZI }, 3773 {"glGetBooleani_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBooleani_v__IILjava_nio_IntBuffer_2 }, 3774 {"glMemoryBarrier", "(I)V", (void *) android_glMemoryBarrier__I }, 3775 {"glMemoryBarrierByRegion", "(I)V", (void *) android_glMemoryBarrierByRegion__I }, 3776 {"glTexStorage2DMultisample", "(IIIIIZ)V", (void *) android_glTexStorage2DMultisample__IIIIIZ }, 3777 {"glGetMultisamplefv", "(II[FI)V", (void *) android_glGetMultisamplefv__II_3FI }, 3778 {"glGetMultisamplefv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 }, 3779 {"glSampleMaski", "(II)V", (void *) android_glSampleMaski__II }, 3780 {"glGetTexLevelParameteriv", "(III[II)V", (void *) android_glGetTexLevelParameteriv__III_3II }, 3781 {"glGetTexLevelParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 }, 3782 {"glGetTexLevelParameterfv", "(III[FI)V", (void *) android_glGetTexLevelParameterfv__III_3FI }, 3783 {"glGetTexLevelParameterfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 }, 3784 {"glBindVertexBuffer", "(IIJI)V", (void *) android_glBindVertexBuffer__IIJI }, 3785 {"glVertexAttribFormat", "(IIIZI)V", (void *) android_glVertexAttribFormat__IIIZI }, 3786 {"glVertexAttribIFormat", "(IIII)V", (void *) android_glVertexAttribIFormat__IIII }, 3787 {"glVertexAttribBinding", "(II)V", (void *) android_glVertexAttribBinding__II }, 3788 {"glVertexBindingDivisor", "(II)V", (void *) android_glVertexBindingDivisor__II }, 3789 }; 3790 3791 int register_android_opengl_jni_GLES31(JNIEnv *_env) 3792 { 3793 int err; 3794 err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 3795 return err; 3796 } 3797