17ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* 27ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * Copyright 2014 The Android Open Source Project 37ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 47ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * Licensed under the Apache License, Version 2.0 (the "License"); 57ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * you may not use this file except in compliance with the License. 67ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * You may obtain a copy of the License at 77ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 87ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * http://www.apache.org/licenses/LICENSE-2.0 97ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * Unless required by applicable law or agreed to in writing, software 117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * distributed under the License is distributed on an "AS IS" BASIS, 127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * See the License for the specific language governing permissions and 147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * limitations under the License. 157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall */ 167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// This source file is automatically generated 187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-variable" 20bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 21bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-function" 22bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe 237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <stdint.h> 247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <GLES3/gl31.h> 259626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 269626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h> 277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <android_runtime/AndroidRuntime.h> 287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <utils/misc.h> 297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <assert.h> 307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic int initialized = 0; 327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jclass nioAccessClass; 347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jclass bufferClass; 357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBasePointerID; 367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBaseArrayID; 377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBaseArrayOffsetID; 387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID positionID; 397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID limitID; 407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID elementSizeShiftID; 417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* special calls implemented in Android's GLES wrapper used to more 447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * efficiently bound-check passed arrays */ 457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallextern "C" { 467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_VERSION_ES_CM_1_1 477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const GLvoid *ptr, GLsizei count); 497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const GLvoid *pointer, GLsizei count); 517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_2_0 637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_3_0 697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count) { 717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribIPointer(indx, size, type, stride, pointer); 727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* Cache method IDs each time the class is loaded. */ 777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallnativeClassInit(JNIEnv *_env, jclass glImplClass) 807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBasePointer", "(Ljava/nio/Buffer;)J"); 897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall positionID = _env->GetFieldID(bufferClass, "position", "I"); 957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall limitID = _env->GetFieldID(bufferClass, "limit", "I"); 967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall elementSizeShiftID = 977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void * 1017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 1027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 1037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint position; 1047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint limit; 1057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint elementSizeShift; 1067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jlong pointer; 1077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall position = _env->GetIntField(buffer, positionID); 1097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall limit = _env->GetIntField(buffer, limitID); 1107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 1117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *remaining = (limit - position) << elementSizeShift; 1127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pointer = _env->CallStaticLongMethod(nioAccessClass, 1137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBasePointerID, buffer); 1147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pointer != 0L) { 1157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *array = NULL; 1167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return reinterpret_cast<void*>(pointer); 1177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 1187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 1207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayID, buffer); 1217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *offset = _env->CallStaticIntMethod(nioAccessClass, 1227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayOffsetID, buffer); 1237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 1257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 1267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayGetter { 1283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 1303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetByteArrayElements(array, is_copy); 1313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayGetter { 1343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 1363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetBooleanArrayElements(array, is_copy); 1373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayGetter { 1403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 1423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetCharArrayElements(array, is_copy); 1433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayGetter { 1463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 1483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetShortArrayElements(array, is_copy); 1493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayGetter { 1523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 1543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetIntArrayElements(array, is_copy); 1553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayGetter { 1583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 1603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetLongArrayElements(array, is_copy); 1613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayGetter { 1643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 1663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetFloatArrayElements(array, is_copy); 1673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayGetter { 1703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 1723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetDoubleArrayElements(array, is_copy); 1733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER> 1773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void* 1783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 1793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return ARRAYGETTER::Get(_env, array, is_copy); 1803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 1813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayReleaser { 1833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 1853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 1863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayReleaser { 1893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 1913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 1923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayReleaser { 1953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 1973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 1983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayReleaser { 2013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 2033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 2043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayReleaser { 2073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 2093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 2103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayReleaser { 2133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 2153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 2163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayReleaser { 2193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 2213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 2223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayReleaser { 2253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 2273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 2283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 2323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void 2333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 2343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ARRAYRELEASER::Release(_env, array, data, commit); 2353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 2363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 2387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 2397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 2407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleasePrimitiveArrayCritical(array, data, 2417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall commit ? 0 : JNI_ABORT); 2427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 2437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void * 2457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 2467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall char* buf = (char*) _env->GetDirectBufferAddress(buffer); 2477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (buf) { 2487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint position = _env->GetIntField(buffer, positionID); 2497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 2507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall buf += position << elementSizeShift; 2517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } else { 2527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", 2537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "Must use a native order direct Buffer"); 2547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 2557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (void*) buf; 2567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 2577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// -------------------------------------------------------------------------- 2597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* 2617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * returns the number of values glGet returns for a given pname. 2627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 2637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * The code below is written such that pnames requiring only one values 2647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * are the default (and are not explicitely tested for). This makes the 2657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * checking code much shorter/readable/efficient. 2667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 2677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * This means that unknown pnames (e.g.: extensions) will default to 1. If 2687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * that unknown pname needs more than 1 value, then the validation check 2697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * is incomplete and the app may crash if it passed the wrong number params. 2707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall */ 2717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic int getNeededCount(GLint pname) { 2727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int needed = 1; 2737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_2_0 2747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GLES 2.x pnames 2757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall switch (pname) { 2767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 2777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 2787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 2; 2797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 2807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_BLEND_COLOR: 2827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_CLEAR_VALUE: 2837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_WRITEMASK: 2847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SCISSOR_BOX: 2857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_VIEWPORT: 2867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 4; 2877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 2887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 2907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 2917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 2927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SHADER_BINARY_FORMATS: 2947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 2957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 2967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 2977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 2987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_VERSION_ES_CM_1_1 3007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GLES 1.x pnames 3017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall switch (pname) { 3027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 3037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 3047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_DEPTH_RANGE: 3057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SMOOTH_LINE_WIDTH_RANGE: 3067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SMOOTH_POINT_SIZE_RANGE: 3077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 2; 3087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_NORMAL: 3117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_POINT_DISTANCE_ATTENUATION: 3127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 3; 3137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_CLEAR_VALUE: 3167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_WRITEMASK: 3177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_COLOR: 3187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_TEXTURE_COORDS: 3197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_FOG_COLOR: 3207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_LIGHT_MODEL_AMBIENT: 3217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SCISSOR_BOX: 3227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_VIEWPORT: 3237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 4; 3247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_MODELVIEW_MATRIX: 3277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_PROJECTION_MATRIX: 3287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_TEXTURE_MATRIX: 3297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 16; 3307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 3337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 3347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 3377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return needed; 3387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 3427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 3437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallget 3447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 3457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 3467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType; 3477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage; 3487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params_base = (CTYPE *) 0; 3497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 3507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params = (CTYPE *) 0; 3517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int _needed = 0; 3527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 3547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 3577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 3607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 3637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _needed = getNeededCount(pname); 3677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // if we didn't find this pname, we just assume the user passed 3687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // an array of the right size -- this might happen with extensions 3697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // or if we forget an enum here. 3707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_remaining < _needed) { 3717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "length - offset < needed"; 3747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 3773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, (jboolean *)0); 3787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 3797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GET( 3817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 3827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (CTYPE *)params 3837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 3847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 3867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 3873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 3883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, params_base, !_exception); 3897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 3917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 3987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 3997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallgetarray 4007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 4017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 4027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType; 4037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage; 4043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi JTYPEARRAY _array = (JTYPEARRAY) 0; 4057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 4067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 4077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params = (CTYPE *) 0; 4087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int _needed = 0; 4097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining /= sizeof(CTYPE); // convert from bytes to item count 4127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _needed = getNeededCount(pname); 4137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // if we didn't find this pname, we just assume the user passed 4147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // an array of the right size -- this might happen with extensions 4157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // or if we forget an enum here. 4167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_needed>0 && _remaining < _needed) { 4177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 4187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "remaining() < needed"; 4207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 4217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 4233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 4243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (jboolean *) 0); 4257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (CTYPE *) (_paramsBase + _bufferOffset); 4267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GET( 4287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 4297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (CTYPE *)params 4307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 4317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 4337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 4343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 4367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 4387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// -------------------------------------------------------------------------- 4437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDispatchCompute ( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z ) */ 4447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 4457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDispatchCompute__III 4467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint num_groups_x, jint num_groups_y, jint num_groups_z) { 4477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDispatchCompute( 4487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_x, 4497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_y, 4507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_z 4517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 4527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDispatchComputeIndirect ( GLintptr indirect ) */ 4557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDispatchComputeIndirect(JNIEnv *_env, jobject, jlong indirect) { 4567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // 'indirect' is a byte offset, not a pointer. GL checks for negative and too-large values. 4577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // Here we only need to check for successful 64-bit to 32-bit conversion. 4587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // - jlong is a int64_t (jni.h) 4597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // - GLintptr is a long (khrplatform.h) 4607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (sizeof(GLintptr) != sizeof(jlong) && (indirect < LONG_MIN || indirect > LONG_MAX)) { 4617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDispatchComputeIndirect((GLintptr)indirect); 4657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDrawArraysIndirect ( GLenum mode, const void *indirect ) */ 4687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDrawArraysIndirect(JNIEnv *_env, jobject, int mode, jlong indirect) { 4697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 4707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GL checks for too-large values. Here we only need to check for successful signed 64-bit 4717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // to unsigned 32-bit conversion. 472bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 4737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDrawArraysIndirect(mode, (const void*)indirect); 4777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDrawElementsIndirect ( GLenum mode, GLenum type, const void *indirect ) */ 4807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDrawElementsIndirect(JNIEnv *_env, jobject, jint mode, jint type, jlong indirect) { 4817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 4827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GL checks for too-large values. Here we only need to check for successful signed 64-bit 4837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // to unsigned 32-bit conversion. 484bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 4857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDrawElementsIndirect(mode, type, (const void*)indirect); 4897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glFramebufferParameteri ( GLenum target, GLenum pname, GLint param ) */ 4927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 4937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glFramebufferParameteri__III 4947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 4957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glFramebufferParameteri( 4967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 4977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 4987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)param 4997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 5037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetFramebufferParameteriv__II_3II 5057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 5067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 5077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 5087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 5097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 5107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 5147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 5177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 5207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 5237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 5273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 5297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetFramebufferParameteriv( 5317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 5347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 5377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 5383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 5397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 5407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 5427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 5477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 5497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 5503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 5527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 5573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetFramebufferParameteriv( 5617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 5647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 5663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 5677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 5717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramInterfaceiv__III_3II 5737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jintArray params_ref, jint offset) { 5747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 5757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 5767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 5777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 5787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 5827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 5857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 5887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 5917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 5953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 5977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramInterfaceiv( 5997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 6027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 6037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 6047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 6067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 6073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 6087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 6097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 6117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 6127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 6167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 6177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 6187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jobject params_buf) { 6193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 6207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 6217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 6227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 6237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 6257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 6263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 6277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 6287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramInterfaceiv( 6307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 6337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 6347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 6357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 6363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 6377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLuint glGetProgramResourceIndex ( GLuint program, GLenum programInterface, const GLchar *name ) */ 6417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 6427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceIndex__IILjava_lang_String_2 6437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 6447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 6457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 6467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 6477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint _returnValue = 0; 6487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char* _nativename = 0; 6497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!name) { 6517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "name == null"; 6547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 6577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glGetProgramResourceIndex( 6597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLchar *)_nativename 6627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 6637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 6657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_nativename) { 6667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 6677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 6707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 6717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jint)_returnValue; 6737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceName ( GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name ) */ 6767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jstring 6777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceName 6787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index) { 6797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 6807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 6817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 6847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 6857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceiv__IIII_3III_3II_3II 6867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (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) { 6877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 6887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 6897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 6907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props_base = (GLenum *) 0; 6917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsRemaining; 6927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props = (GLenum *) 0; 6937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length_base = (GLsizei *) 0; 6947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthRemaining; 6957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length = (GLsizei *) 0; 6967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 6977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsRemaining; 6987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 6997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!props_ref) { 7017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "props == null"; 7047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (propsOffset < 0) { 7077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "propsOffset < 0"; 7107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _propsRemaining = _env->GetArrayLength(props_ref) - propsOffset; 7137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props_base = (GLenum *) 7143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(props_ref, (jboolean *)0); 7157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props = props_base + propsOffset; 7167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7176aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 7186aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 7196aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 7206aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 7216aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 7226aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 7236aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 7246aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 7256aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 7266aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 7276aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 7287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 7317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 7347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (paramsOffset < 0) { 7377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "paramsOffset < 0"; 7407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 7437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 7443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 7457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + paramsOffset; 7467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramResourceiv( 7487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 7497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 7507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 7517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)propCount, 7527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum *)props, 7537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)bufSize, 7547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei *)length, 7557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 7567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 7577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 7597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 7603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 7617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 7627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (length_base) { 7643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 7657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 7667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (props_base) { 7683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(props_ref, (jint*)props_base, 7697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 7707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 7727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 7737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 7757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 7777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 7787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 7797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jobject props_buf, jint bufSize, jobject length_buf, jobject params_buf) { 7803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _propsArray = (jintArray) 0; 7817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsBufferOffset = (jint) 0; 7823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 7837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthBufferOffset = (jint) 0; 7843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _paramsArray = (jintArray) 0; 7857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsBufferOffset = (jint) 0; 7867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsRemaining; 7877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props = (GLenum *) 0; 7887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthRemaining; 7897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length = (GLsizei *) 0; 7907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsRemaining; 7917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 7927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi props = (GLenum *)getPointer(_env, props_buf, (jarray*)&_propsArray, &_propsRemaining, &_propsBufferOffset); 7946aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 7956aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 7966aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 7973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 7987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (props == NULL) { 7993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _propsBase = (char *)_env->GetIntArrayElements(_propsArray, (jboolean *) 0); 8007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props = (GLenum *) (_propsBase + _propsBufferOffset); 8017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8026aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 8033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 8047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 8057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 8073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_paramsArray, (jboolean *) 0); 8087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _paramsBufferOffset); 8097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramResourceiv( 8117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 8127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 8137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 8147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)propCount, 8157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum *)props, 8167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)bufSize, 8177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei *)length, 8187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 8197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 8207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_paramsArray) { 8213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_paramsArray, (jint*)params, 0); 8227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_lengthArray) { 8243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, 0); 8257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_propsArray) { 8273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_propsArray, (jint*)props, JNI_ABORT); 8287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLint glGetProgramResourceLocation ( GLuint program, GLenum programInterface, const GLchar *name ) */ 8327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 8337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceLocation__IILjava_lang_String_2 8347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 8357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 8367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 8377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 8387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint _returnValue = 0; 8397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char* _nativename = 0; 8407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!name) { 8427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 8437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 8447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "name == null"; 8457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 8467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 8487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glGetProgramResourceLocation( 8507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 8517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 8527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLchar *)_nativename 8537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 8547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 8567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_nativename) { 8577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 8587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 8617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 8627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jint)_returnValue; 8647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glUseProgramStages ( GLuint pipeline, GLbitfield stages, GLuint program ) */ 8677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 8687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glUseProgramStages__III 8697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint stages, jint program) { 8707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glUseProgramStages( 8717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 8727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)stages, 8737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program 8747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 8757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glActiveShaderProgram ( GLuint pipeline, GLuint program ) */ 8787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 8797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glActiveShaderProgram__II 8807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint program) { 8817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glActiveShaderProgram( 8827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 8837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program 8847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 8857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLuint glCreateShaderProgramv ( GLenum type, GLsizei count, const GLchar *const *strings ) */ 8887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 8897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glCreateShaderProgramv 8907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint type, jobjectArray strings) { 8917f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jint _exception = 0; 8927f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const char * _exceptionType = NULL; 8937f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const char * _exceptionMessage = NULL; 8947f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos GLsizei _count; 8957f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const GLchar** _strings = NULL; 8967f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jstring* _jstrings = NULL; 8977f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos GLuint _returnValue = 0; 8987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8997f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!strings) { 9007f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9017f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 9027f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "strings == null"; 9037f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9047f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9057f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9067f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _count = _env->GetArrayLength(strings); 9077f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9087f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _strings = (const GLchar**) calloc(_count, sizeof(const GLchar*)); 9097f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_strings) { 9107f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9117f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/OutOfMemoryError"; 9127f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "out of memory"; 9137f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9147f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9157f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9167f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _jstrings = (jstring*) calloc(_count, sizeof(jstring)); 9177f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_jstrings) { 9187f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9197f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/OutOfMemoryError"; 9207f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "out of memory"; 9217f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9227f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9237f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9247f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos for(int i = 0; i < _count; i++) { 9257f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _jstrings[i] = (jstring) _env->GetObjectArrayElement(strings, i); 9267f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_jstrings[i]) { 9277f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9287f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 9297f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "strings == null"; 9307f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9317f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9327f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _strings[i] = _env->GetStringUTFChars(_jstrings[i], 0); 9337f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9347f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9357f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _returnValue = glCreateShaderProgramv((GLenum)type, _count, _strings); 9367f16ec21711fdb97930166175c29d8235f75202ePablo Ceballosexit: 9377f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings && _jstrings) { 9387f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos for(int i = 0; i < _count; i++) { 9397f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings[i] && _jstrings[i]) { 9407f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _env->ReleaseStringUTFChars(_jstrings[i], _strings[i]); 9417f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9427f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9437f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9447f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings) { 9457f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos free(_strings); 9467f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9477f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_jstrings) { 9487f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos free(_jstrings); 9497f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9507f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_exception) { 9517f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 9527f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9537f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos return (jint)_returnValue; 9547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindProgramPipeline ( GLuint pipeline ) */ 9567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 9577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindProgramPipeline__I 9587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 9597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindProgramPipeline( 9607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 9617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 9657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 9667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDeleteProgramPipelines__I_3II 9677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 9687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 9697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 9707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 9717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines_base = (GLuint *) 0; 9727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 9737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 9747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!pipelines_ref) { 9767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 9777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 9787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "pipelines == null"; 9797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 9807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 9827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 9837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 9847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 9857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 9867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(pipelines_ref) - offset; 9887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines_base = (GLuint *) 9893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 9907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = pipelines_base + offset; 9917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDeleteProgramPipelines( 9937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 9947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 9957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 9987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines_base) { 9993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 10007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 10017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 10037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 10047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 10087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 10107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 10113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 10127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 10137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 10177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines == NULL) { 10183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 10197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 10207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDeleteProgramPipelines( 10227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 10263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)pipelines, JNI_ABORT); 10277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 10317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGenProgramPipelines__I_3II 10337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 10347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 10357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 10367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 10377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines_base = (GLuint *) 0; 10387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!pipelines_ref) { 10427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 10437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 10447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "pipelines == null"; 10457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 10467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 10487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 10497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 10507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 10517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 10527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(pipelines_ref) - offset; 10547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines_base = (GLuint *) 10553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 10567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = pipelines_base + offset; 10577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGenProgramPipelines( 10597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 10647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines_base) { 10653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 10667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 10677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 10697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 10707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 10747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGenProgramPipelines__ILjava_nio_IntBuffer_2 10767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 10773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 10787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 10797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 10837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines == NULL) { 10843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 10857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 10867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGenProgramPipelines( 10887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 10923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)pipelines, 0); 10937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLboolean glIsProgramPipeline ( GLuint pipeline ) */ 10977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jboolean 10987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glIsProgramPipeline__I 10997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 11007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean _returnValue; 11017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glIsProgramPipeline( 11027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 11037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jboolean)_returnValue; 11057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 11087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramPipelineiv__II_3II 11107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jintArray params_ref, jint offset) { 11117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 11127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 11137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 11147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 11157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 11167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 11177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 11197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 11207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 11217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 11227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 11237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 11257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 11267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 11277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 11287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 11297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 11317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 11323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 11337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 11347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv( 11367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 11377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 11387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 11397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 11427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 11433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 11447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 11457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 11477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 11487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 11527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 11547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jobject params_buf) { 11553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 11567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 11577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 11587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 11597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 11617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 11623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 11637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 11647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv( 11667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 11677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 11687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 11697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 11713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 11727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1i ( GLuint program, GLint location, GLint v0 ) */ 11767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1i__III 11787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 11797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1i( 11807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 11817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 11827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0 11837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2i ( GLuint program, GLint location, GLint v0, GLint v1 ) */ 11877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2i__IIII 11897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 11907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2i( 11917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 11927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 11937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 11947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1 11957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2 ) */ 11997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3i__IIIII 12017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 12027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3i( 12037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 12067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1, 12077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v2 12087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3 ) */ 12127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4i__IIIIII 12147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 12157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4i( 12167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 12197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1, 12207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v2, 12217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v3 12227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1ui ( GLuint program, GLint location, GLuint v0 ) */ 12267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1ui__III 12287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 12297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1ui( 12307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0 12337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2ui ( GLuint program, GLint location, GLuint v0, GLuint v1 ) */ 12377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2ui__IIII 12397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 12407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2ui( 12417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 12447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1 12457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 12497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3ui__IIIII 12517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 12527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3ui( 12537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 12567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1, 12577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v2 12587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 12627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4ui__IIIIII 12647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 12657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4ui( 12667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 12697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1, 12707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v2, 12717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v3 12727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1f ( GLuint program, GLint location, GLfloat v0 ) */ 12767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1f__IIF 12787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0) { 12797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1f( 12807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0 12837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2f ( GLuint program, GLint location, GLfloat v0, GLfloat v1 ) */ 12877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2f__IIFF 12897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1) { 12907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2f( 12917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 12947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1 12957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2 ) */ 12997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3f__IIFFF 13017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2) { 13027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3f( 13037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 13067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1, 13077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v2 13087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3 ) */ 13127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4f__IIFFFF 13147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2, jfloat v3) { 13157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4f( 13167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 13197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1, 13207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v2, 13217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v3 13227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 13267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1iv__III_3II 13287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 13297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 13307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 13317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 13327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 13337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 13347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 13357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 13377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 13387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 13397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 13407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 13417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 13427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 13437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 13447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 13457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 13467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 13477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 13487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 13497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 13503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 13517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 13527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1iv( 13547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 13577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 13587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 13617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 13623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 13637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 13647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 13657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 13667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 13677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 13687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 13717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 13737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 13743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 13757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 13767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 13777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 13787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 13807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 13813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 13827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 13837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 13847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1iv( 13857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 13887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 13897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 13913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 13927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 13937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 13967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2iv__III_3II 13987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 13997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 14007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 14017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 14027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 14037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 14077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 14107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 14137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 14167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 14197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 14203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 14217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 14227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2iv( 14247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 14277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 14287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 14317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 14323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 14337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 14347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 14367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 14377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 14417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 14437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 14443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 14457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 14467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 14507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 14513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 14527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 14537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2iv( 14557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 14587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 14597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 14613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 14627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 14667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3iv__III_3II 14687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 14697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 14707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 14717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 14727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 14737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 14777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 14807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 14837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 14867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 14897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 14903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 14917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 14927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3iv( 14947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 14977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 14987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 15017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 15023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 15037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 15047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 15067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 15077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 15137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 15143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 15157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 15167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 15207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 15213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 15227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 15237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3iv( 15257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 15307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 15313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 15327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4iv__III_3II 15387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 15397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 15407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 15417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 15427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 15437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 15477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 15487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 15497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 15507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 15517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 15537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 15547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 15557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 15567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 15577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 15597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 15603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 15617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 15627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4iv( 15647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 15697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 15717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 15723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 15737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 15747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 15767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 15777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 15837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 15843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 15857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 15867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 15907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 15913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 15927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 15937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4iv( 15957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 16007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 16013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 16027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 16067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1uiv__III_3II 16087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 16097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 16107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 16117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 16127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 16137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 16157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 16177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 16207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 16237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 16267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 16297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 16303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 16317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 16327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1uiv( 16347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 16357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 16367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 16377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 16387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 16397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 16417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 16423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 16437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 16447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 16467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 16477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 16517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 16537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 16543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 16557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 16567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 16587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 16607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 16613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 16627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 16637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1uiv( 16657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 16667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 16677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 16687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 16697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 16707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 16713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 16727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 16767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2uiv__III_3II 16787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 16797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 16807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 16817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 16827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 16837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 16857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 16877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 16907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 16937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 16967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 16997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 17003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 17017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 17027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2uiv( 17047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 17087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 17117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 17123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 17137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 17147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 17167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 17177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 17217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 17237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 17243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 17257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 17267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 17287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 17307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 17313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 17327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 17337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2uiv( 17357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 17397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 17413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 17427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 17467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3uiv__III_3II 17487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 17497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 17507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 17517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 17527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 17537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 17557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 17577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 17587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 17607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 17637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 17647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 17667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 17697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 17703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 17717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 17727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3uiv( 17747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 17787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 17817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 17823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 17837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 17847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 17867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 17877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 17917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 17937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 17943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 17957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 17967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 17987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 18007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 18013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 18027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 18037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3uiv( 18057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 18107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 18113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 18127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4uiv__III_3II 18187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 18197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 18207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 18217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 18227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 18237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 18257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 18277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 18307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 18317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 18337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 18367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 18377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 18397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 18403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 18417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 18427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4uiv( 18447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 18497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 18517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 18523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 18537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 18547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 18567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 18577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 18637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 18643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 18657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 18667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 18687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 18707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 18713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 18727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 18737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4uiv( 18757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 18807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 18813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 18827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 18867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1fv__III_3FI 18887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 18897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 18907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 18917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 18927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 18937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 18957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 18977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 19007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 19037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 19067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 19097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 19103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 19117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 19127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1fv( 19147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 19187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 19197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 19217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 19223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 19237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 19247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 19267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 19277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 19317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 19327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 19337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 19343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 19357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 19367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 19387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 19407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 19413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 19427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 19437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1fv( 19457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 19497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 19507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 19513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 19527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 19567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 19577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2fv__III_3FI 19587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 19597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 19607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 19617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 19627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 19637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 19657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 19677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 19707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 19737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 19767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 19797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 19803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 19817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 19827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2fv( 19847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 19887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 19897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 19917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 19923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 19937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 19947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 19967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 19977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 20017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 20037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 20043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 20057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 20067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 20087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 20107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 20113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 20127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 20137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2fv( 20157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 20197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 20207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 20213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 20227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 20267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3fv__III_3FI 20287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 20297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 20307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 20317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 20327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 20337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 20357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 20377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 20387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 20397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 20407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 20417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 20437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 20447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 20457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 20467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 20477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 20497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 20503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 20517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 20527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3fv( 20547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 20587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 20597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 20617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 20623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 20637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 20647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 20667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 20677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 20717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 20737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 20743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 20757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 20767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 20787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 20807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 20813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 20827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 20837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3fv( 20857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 20897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 20907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 20913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 20927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 20967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4fv__III_3FI 20987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 20997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 21007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 21017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 21027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 21037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 21077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 21107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 21137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 21167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 21197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 21203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 21217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 21227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4fv( 21247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 21297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 21317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 21323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 21337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 21347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 21367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 21377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 21397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 21437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 21443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 21457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 21467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 21507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 21513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 21527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 21537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4fv( 21557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 21607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 21613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 21627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 21647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 21667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2fv__IIIZ_3FI 21687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 21697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 21707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 21717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 21727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 21737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 21777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 21807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 21837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 21867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 21897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 21903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 21917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 21927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2fv( 21947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 21987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 22007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 22027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 22033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 22047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 22057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 22077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 22087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 22127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 22147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 22153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 22167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 22177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 22217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 22223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 22237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 22247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2fv( 22267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 22307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 22317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 22327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 22333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 22347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 22387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3fv__IIIZ_3FI 22407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 22417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 22427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 22437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 22447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 22457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 22497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 22527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 22557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 22587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 22617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 22623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 22637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 22647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3fv( 22667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 22707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 22717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 22727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 22747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 22753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 22767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 22777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 22797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 22807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 22847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 22867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 22873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 22887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 22897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 22937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 22943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 22957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 22967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3fv( 22987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 23027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 23053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 23067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 23107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4fv__IIIZ_3FI 23127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 23137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 23147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 23157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 23167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 23177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 23217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 23247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 23277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 23307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 23337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 23343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 23357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 23367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4fv( 23387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 23397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 23427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 23467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 23473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 23487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 23497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 23517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 23527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 23567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 23587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 23593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 23607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 23617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 23657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 23663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 23677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 23687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4fv( 23707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 23717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 23747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 23773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 23787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 23827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x3fv__IIIZ_3FI 23847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 23857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 23867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 23877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 23887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 23897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 23937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 23967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 23997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 24027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 24057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 24063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 24077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 24087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x3fv( 24107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 24147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 24167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 24187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 24193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 24207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 24217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 24237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 24247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 24287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 24297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 24307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 24313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 24327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 24337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 24377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 24383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 24397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 24407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x3fv( 24427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 24467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 24487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 24493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 24507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 24547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 24557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x2fv__IIIZ_3FI 24567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 24577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 24587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 24597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 24607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 24617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 24657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 24687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 24717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 24747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 24777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 24783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 24797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 24807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x2fv( 24827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 24867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 24887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 24907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 24913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 24927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 24937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 24957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 24967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 25027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 25033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 25047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 25057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 25097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 25103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 25117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 25127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x2fv( 25147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 25207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 25213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 25227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x4fv__IIIZ_3FI 25287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 25297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 25307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 25317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 25327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 25337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 25377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 25387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 25397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 25407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 25417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 25437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 25447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 25457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 25467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 25477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 25497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 25503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 25517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 25527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x4fv( 25547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 25607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 25627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 25633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 25647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 25657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 25677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 25687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 25747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 25753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 25767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 25777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 25817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 25823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 25837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 25847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x4fv( 25867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 25927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 25933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 25947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x2fv__IIIZ_3FI 26007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 26017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 26027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 26037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 26047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 26057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 26097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 26127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 26157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 26187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 26217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 26223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 26237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 26247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x2fv( 26267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 26287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 26297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 26307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 26317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 26327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 26347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 26353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 26367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 26377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 26397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 26407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 26467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 26473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 26487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 26497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 26537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 26543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 26557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 26567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x2fv( 26587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 26607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 26617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 26627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 26637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 26647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 26653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 26667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x4fv__IIIZ_3FI 26727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 26737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 26747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 26757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 26767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 26777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 26817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 26847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 26877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 26907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 26937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 26943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 26957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 26967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x4fv( 26987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 27047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 27067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 27073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 27087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 27097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 27117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 27127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 27187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 27193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 27207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 27217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 27257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 27263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 27277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 27287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x4fv( 27307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 27317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 27367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 27373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 27387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x3fv__IIIZ_3FI 27447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 27457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 27467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 27477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 27487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 27497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 27537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 27567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 27597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 27627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 27657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 27663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 27677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 27687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x3fv( 27707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 27717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 27767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 27787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 27793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 27807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 27817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 27837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 27847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 27907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 27913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 27927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 27937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 27977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 27983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 27997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 28007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x3fv( 28027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 28077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 28087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 28093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 28107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glValidateProgramPipeline ( GLuint pipeline ) */ 28147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glValidateProgramPipeline__I 28167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 28177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glValidateProgramPipeline( 28187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 28197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 28207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <stdlib.h> 28237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 28257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jstring android_glGetProgramPipelineInfoLog(JNIEnv *_env, jobject, jint shader) { 28267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint infoLen = 0; 28277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 28287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!infoLen) { 28297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return _env->NewStringUTF(""); 28307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall char* buf = (char*) malloc(infoLen); 28327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (buf == NULL) { 28337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/OutOfMemoryError", "out of memory"); 28347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 28357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineInfoLog(shader, infoLen, NULL, buf); 28377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jstring result = _env->NewStringUTF(buf); 28387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall free(buf); 28397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return result; 28407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindImageTexture ( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format ) */ 28427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindImageTexture__IIIZIII 28447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint unit, jint texture, jint level, jboolean layered, jint layer, jint access, jint format) { 28457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindImageTexture( 28467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)unit, 28477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)texture, 28487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 28497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)layered, 28507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)layer, 28517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)access, 28527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)format 28537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 28547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 28577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetBooleani_v__II_3ZI 28597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jbooleanArray data_ref, jint offset) { 28607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 28617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 28627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 28637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data_base = (GLboolean *) 0; 28647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 28657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data = (GLboolean *) 0; 28667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!data_ref) { 28687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 28697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "data == null"; 28717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 28747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 28757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 28777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 28807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data_base = (GLboolean *) 28813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetBooleanArrayElements(data_ref, (jboolean *)0); 28827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data = data_base + offset; 28837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetBooleani_v( 28857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 28867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 28877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean *)data 28887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 28897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 28917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (data_base) { 28923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(data_ref, (jboolean*)data_base, 28937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 28947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 28967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 28977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 29017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetBooleani_v__IILjava_nio_IntBuffer_2 29037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 29043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 29057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 29067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 29077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data = (GLboolean *) 0; 29087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLboolean *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 29107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (data == NULL) { 29113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 29127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data = (GLboolean *) (_dataBase + _bufferOffset); 29137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetBooleani_v( 29157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 29167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 29177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean *)data 29187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 29203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)data, 0); 29217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glMemoryBarrier ( GLbitfield barriers ) */ 29257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glMemoryBarrier__I 29277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint barriers) { 29287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glMemoryBarrier( 29297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)barriers 29307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glMemoryBarrierByRegion ( GLbitfield barriers ) */ 29347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glMemoryBarrierByRegion__I 29367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint barriers) { 29377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glMemoryBarrierByRegion( 29387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)barriers 29397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glTexStorage2DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations ) */ 29437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glTexStorage2DMultisample__IIIIIZ 29457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jboolean fixedsamplelocations) { 29467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glTexStorage2DMultisample( 29477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 29487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)samples, 29497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)internalformat, 29507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)width, 29517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)height, 29527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)fixedsamplelocations 29537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 29577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetMultisamplefv__II_3FI 29597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jint index, jfloatArray val_ref, jint offset) { 29607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 29617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 29627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 29637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val_base = (GLfloat *) 0; 29647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 29657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val = (GLfloat *) 0; 29667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!val_ref) { 29687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 29697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 29707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "val == null"; 29717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 29727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 29747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 29757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 29767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 29777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 29787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(val_ref) - offset; 29807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val_base = (GLfloat *) 29813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(val_ref, (jboolean *)0); 29827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val = val_base + offset; 29837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetMultisamplefv( 29857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 29867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 29877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)val 29887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 29917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (val_base) { 29923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(val_ref, (jfloat*)val_base, 29937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 29947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 29967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 29977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 30017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 30037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jint index, jobject val_buf) { 30043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 30057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 30067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val = (GLfloat *) 0; 30087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi val = (GLfloat *)getPointer(_env, val_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 30107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (val == NULL) { 30113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 30127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val = (GLfloat *) (_valBase + _bufferOffset); 30137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetMultisamplefv( 30157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 30167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 30177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)val 30187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 30197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 30203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)val, 0); 30217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glSampleMaski ( GLuint maskNumber, GLbitfield mask ) */ 30257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glSampleMaski__II 30277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint maskNumber, jint mask) { 30287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glSampleMaski( 30297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)maskNumber, 30307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)mask 30317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 30327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 30357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameteriv__III_3II 30377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jintArray params_ref, jint offset) { 30387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 30397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 30407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 30417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 30427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 30447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 30467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 30477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 30487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 30497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 30507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 30527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 30537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 30547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 30557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 30567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 30587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 30593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 30607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 30617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameteriv( 30637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 30647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 30657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 30667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 30677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 30687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 30707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 30713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 30727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 30737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 30757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 30767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 30807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 30827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 30833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 30847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 30857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 30877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 30897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 30903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 30917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 30927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameteriv( 30947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 30957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 30967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 30977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 30987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 30997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 31003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 31017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 31057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameterfv__III_3FI 31077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jfloatArray params_ref, jint offset) { 31087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 31097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 31107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 31117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params_base = (GLfloat *) 0; 31127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 31137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params = (GLfloat *) 0; 31147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 31167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 31177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 31187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 31197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 31207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 31227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 31237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 31247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 31257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 31267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 31287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLfloat *) 31293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 31307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 31317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameterfv( 31337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 31347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 31357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 31367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)params 31377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 31387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 31407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 31413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 31427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 31437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 31457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 31467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 31507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 31527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 31533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 31547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 31557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 31567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params = (GLfloat *) 0; 31577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 31597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 31603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 31617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLfloat *) (_paramsBase + _bufferOffset); 31627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameterfv( 31647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 31657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 31667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 31677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)params 31687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 31697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 31703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, 0); 31717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindVertexBuffer ( GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride ) */ 31757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindVertexBuffer__IIJI 31777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint bindingindex, jint buffer, jlong offset, jint stride) { 31787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (sizeof(GLintptr) != sizeof(jlong) && (offset < LONG_MIN || offset > LONG_MAX)) { 31797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "offset too large"); 31807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 31817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindVertexBuffer( 31837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex, 31847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)buffer, 31857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLintptr)offset, 31867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)stride 31877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 31887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribFormat ( GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset ) */ 31907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribFormat__IIIZI 31927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jboolean normalized, jint relativeoffset) { 31937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribFormat( 31947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 31957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)size, 31967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)type, 31977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)normalized, 31987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)relativeoffset 31997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribIFormat ( GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset ) */ 32037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribIFormat__IIII 32057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jint relativeoffset) { 32067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribIFormat( 32077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 32087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)size, 32097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)type, 32107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)relativeoffset 32117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribBinding ( GLuint attribindex, GLuint bindingindex ) */ 32157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribBinding__II 32177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint bindingindex) { 32187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribBinding( 32197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 32207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex 32217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexBindingDivisor ( GLuint bindingindex, GLuint divisor ) */ 32257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexBindingDivisor__II 32277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint bindingindex, jint divisor) { 32287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexBindingDivisor( 32297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex, 32307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)divisor 32317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic const char *classPathName = "android/opengl/GLES31"; 32357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 323676f6a86de25e1bf74717e047e55fd44b089673f3Daniel Micaystatic const JNINativeMethod methods[] = { 32377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"_nativeClassInit", "()V", (void*)nativeClassInit }, 32387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDispatchCompute", "(III)V", (void *) android_glDispatchCompute__III }, 32397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDispatchComputeIndirect", "(J)V", (void *) android_glDispatchComputeIndirect }, 32407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDrawArraysIndirect", "(IJ)V", (void *) android_glDrawArraysIndirect }, 32417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDrawElementsIndirect", "(IIJ)V", (void *) android_glDrawElementsIndirect }, 32427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glFramebufferParameteri", "(III)V", (void *) android_glFramebufferParameteri__III }, 32437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetFramebufferParameteriv", "(II[II)V", (void *) android_glGetFramebufferParameteriv__II_3II }, 32447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetFramebufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 }, 32457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramInterfaceiv", "(III[II)V", (void *) android_glGetProgramInterfaceiv__III_3II }, 32467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramInterfaceiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 }, 32477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceIndex", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceIndex__IILjava_lang_String_2 }, 32487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceName", "(III)Ljava/lang/String;", (void *) android_glGetProgramResourceName }, 32497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceiv", "(IIII[III[II[II)V", (void *) android_glGetProgramResourceiv__IIII_3III_3II_3II }, 32507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceiv", "(IIIILjava/nio/IntBuffer;ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 32517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceLocation", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceLocation__IILjava_lang_String_2 }, 32527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glUseProgramStages", "(III)V", (void *) android_glUseProgramStages__III }, 32537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glActiveShaderProgram", "(II)V", (void *) android_glActiveShaderProgram__II }, 32547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glCreateShaderProgramv", "(I[Ljava/lang/String;)I", (void *) android_glCreateShaderProgramv }, 32557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindProgramPipeline", "(I)V", (void *) android_glBindProgramPipeline__I }, 32567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDeleteProgramPipelines", "(I[II)V", (void *) android_glDeleteProgramPipelines__I_3II }, 32577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDeleteProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 }, 32587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGenProgramPipelines", "(I[II)V", (void *) android_glGenProgramPipelines__I_3II }, 32597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGenProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenProgramPipelines__ILjava_nio_IntBuffer_2 }, 32607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glIsProgramPipeline", "(I)Z", (void *) android_glIsProgramPipeline__I }, 32617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineiv", "(II[II)V", (void *) android_glGetProgramPipelineiv__II_3II }, 32627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 }, 32637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1i", "(III)V", (void *) android_glProgramUniform1i__III }, 32647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2i", "(IIII)V", (void *) android_glProgramUniform2i__IIII }, 32657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3i", "(IIIII)V", (void *) android_glProgramUniform3i__IIIII }, 32667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4i", "(IIIIII)V", (void *) android_glProgramUniform4i__IIIIII }, 32677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1ui", "(III)V", (void *) android_glProgramUniform1ui__III }, 32687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2ui", "(IIII)V", (void *) android_glProgramUniform2ui__IIII }, 32697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3ui", "(IIIII)V", (void *) android_glProgramUniform3ui__IIIII }, 32707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4ui", "(IIIIII)V", (void *) android_glProgramUniform4ui__IIIIII }, 32717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1f", "(IIF)V", (void *) android_glProgramUniform1f__IIF }, 32727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2f", "(IIFF)V", (void *) android_glProgramUniform2f__IIFF }, 32737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3f", "(IIFFF)V", (void *) android_glProgramUniform3f__IIFFF }, 32747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4f", "(IIFFFF)V", (void *) android_glProgramUniform4f__IIFFFF }, 32757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1iv", "(III[II)V", (void *) android_glProgramUniform1iv__III_3II }, 32767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 }, 32777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2iv", "(III[II)V", (void *) android_glProgramUniform2iv__III_3II }, 32787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 }, 32797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3iv", "(III[II)V", (void *) android_glProgramUniform3iv__III_3II }, 32807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 }, 32817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4iv", "(III[II)V", (void *) android_glProgramUniform4iv__III_3II }, 32827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 }, 32837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1uiv", "(III[II)V", (void *) android_glProgramUniform1uiv__III_3II }, 32847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 }, 32857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2uiv", "(III[II)V", (void *) android_glProgramUniform2uiv__III_3II }, 32867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 }, 32877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3uiv", "(III[II)V", (void *) android_glProgramUniform3uiv__III_3II }, 32887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 }, 32897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4uiv", "(III[II)V", (void *) android_glProgramUniform4uiv__III_3II }, 32907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 }, 32917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1fv", "(III[FI)V", (void *) android_glProgramUniform1fv__III_3FI }, 32927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 }, 32937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2fv", "(III[FI)V", (void *) android_glProgramUniform2fv__III_3FI }, 32947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 }, 32957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3fv", "(III[FI)V", (void *) android_glProgramUniform3fv__III_3FI }, 32967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 }, 32977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4fv", "(III[FI)V", (void *) android_glProgramUniform4fv__III_3FI }, 32987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 }, 32997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2fv__IIIZ_3FI }, 33007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 }, 33017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3fv__IIIZ_3FI }, 33027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 }, 33037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4fv__IIIZ_3FI }, 33047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 }, 33057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZ_3FI }, 33067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 }, 33077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZ_3FI }, 33087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 }, 33097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZ_3FI }, 33107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 }, 33117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZ_3FI }, 33127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 }, 33137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZ_3FI }, 33147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 }, 33157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZ_3FI }, 33167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 }, 33177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glValidateProgramPipeline", "(I)V", (void *) android_glValidateProgramPipeline__I }, 33187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramPipelineInfoLog }, 33197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindImageTexture", "(IIIZIII)V", (void *) android_glBindImageTexture__IIIZIII }, 33207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetBooleani_v", "(II[ZI)V", (void *) android_glGetBooleani_v__II_3ZI }, 33217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetBooleani_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBooleani_v__IILjava_nio_IntBuffer_2 }, 33227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glMemoryBarrier", "(I)V", (void *) android_glMemoryBarrier__I }, 33237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glMemoryBarrierByRegion", "(I)V", (void *) android_glMemoryBarrierByRegion__I }, 33247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glTexStorage2DMultisample", "(IIIIIZ)V", (void *) android_glTexStorage2DMultisample__IIIIIZ }, 33257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetMultisamplefv", "(II[FI)V", (void *) android_glGetMultisamplefv__II_3FI }, 33267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetMultisamplefv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 }, 33277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glSampleMaski", "(II)V", (void *) android_glSampleMaski__II }, 33287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameteriv", "(III[II)V", (void *) android_glGetTexLevelParameteriv__III_3II }, 33297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 }, 33307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameterfv", "(III[FI)V", (void *) android_glGetTexLevelParameterfv__III_3FI }, 33317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameterfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 }, 33327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindVertexBuffer", "(IIJI)V", (void *) android_glBindVertexBuffer__IIJI }, 33337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribFormat", "(IIIZI)V", (void *) android_glVertexAttribFormat__IIIZI }, 33347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribIFormat", "(IIII)V", (void *) android_glVertexAttribIFormat__IIII }, 33357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribBinding", "(II)V", (void *) android_glVertexAttribBinding__II }, 33367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexBindingDivisor", "(II)V", (void *) android_glVertexBindingDivisor__II }, 33377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall}; 33387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallint register_android_opengl_jni_GLES31(JNIEnv *_env) 33407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 33417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int err; 33427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 33437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return err; 33447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3345