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-function" 21bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe 227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <stdint.h> 237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <GLES3/gl31.h> 249626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 252279b2534272282a5b5152723235da397e49195cSteven Moreland#include <nativehelper/JNIHelp.h> 267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <android_runtime/AndroidRuntime.h> 277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <utils/misc.h> 287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <assert.h> 297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic int initialized = 0; 317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jclass nioAccessClass; 337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jclass bufferClass; 347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBasePointerID; 357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBaseArrayID; 367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBaseArrayOffsetID; 377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID positionID; 387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID limitID; 397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID elementSizeShiftID; 407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* special calls implemented in Android's GLES wrapper used to more 437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * efficiently bound-check passed arrays */ 447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallextern "C" { 457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_VERSION_ES_CM_1_1 467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const GLvoid *ptr, GLsizei count); 487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const GLvoid *pointer, GLsizei count); 507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_2_0 627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_3_0 687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count) { 707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribIPointer(indx, size, type, stride, pointer); 717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* Cache method IDs each time the class is loaded. */ 767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallnativeClassInit(JNIEnv *_env, jclass glImplClass) 797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBasePointer", "(Ljava/nio/Buffer;)J"); 887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall positionID = _env->GetFieldID(bufferClass, "position", "I"); 947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall limitID = _env->GetFieldID(bufferClass, "limit", "I"); 957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall elementSizeShiftID = 967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void * 1007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 1017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 1027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint position; 1037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint limit; 1047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint elementSizeShift; 1057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jlong pointer; 1067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall position = _env->GetIntField(buffer, positionID); 1087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall limit = _env->GetIntField(buffer, limitID); 1097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 1107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *remaining = (limit - position) << elementSizeShift; 1117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pointer = _env->CallStaticLongMethod(nioAccessClass, 1127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBasePointerID, buffer); 1137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pointer != 0L) { 1147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *array = NULL; 1157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return reinterpret_cast<void*>(pointer); 1167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 1177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 1197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayID, buffer); 1207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *offset = _env->CallStaticIntMethod(nioAccessClass, 1217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayOffsetID, buffer); 1227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 1247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 1257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayGetter { 1273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 1293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetByteArrayElements(array, is_copy); 1303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayGetter { 1333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 1353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetBooleanArrayElements(array, is_copy); 1363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayGetter { 1393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 1413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetCharArrayElements(array, is_copy); 1423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayGetter { 1453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 1473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetShortArrayElements(array, is_copy); 1483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayGetter { 1513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 1533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetIntArrayElements(array, is_copy); 1543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayGetter { 1573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 1593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetLongArrayElements(array, is_copy); 1603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayGetter { 1633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 1653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetFloatArrayElements(array, is_copy); 1663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayGetter { 1693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 1713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetDoubleArrayElements(array, is_copy); 1723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER> 1763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void* 1773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 1783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return ARRAYGETTER::Get(_env, array, is_copy); 1793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 1803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayReleaser { 1823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 1843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 1853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayReleaser { 1883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 1903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 1913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayReleaser { 1943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 1963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 1973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayReleaser { 2003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 2023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 2033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayReleaser { 2063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 2083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 2093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayReleaser { 2123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 2143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 2153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayReleaser { 2183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 2203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 2213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayReleaser { 2243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 2263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 2273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 2313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void 2323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 2333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ARRAYRELEASER::Release(_env, array, data, commit); 2343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 2353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 2377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 2387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 2397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleasePrimitiveArrayCritical(array, data, 2407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall commit ? 0 : JNI_ABORT); 2417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 2427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void * 2447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 2457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall char* buf = (char*) _env->GetDirectBufferAddress(buffer); 2467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (buf) { 2477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint position = _env->GetIntField(buffer, positionID); 2487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 2497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall buf += position << elementSizeShift; 2507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } else { 2517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", 2527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "Must use a native order direct Buffer"); 2537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 2547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (void*) buf; 2557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 2567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// -------------------------------------------------------------------------- 2587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* 2607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * returns the number of values glGet returns for a given pname. 2617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 2627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * The code below is written such that pnames requiring only one values 2637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * are the default (and are not explicitely tested for). This makes the 2647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * checking code much shorter/readable/efficient. 2657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 2667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * This means that unknown pnames (e.g.: extensions) will default to 1. If 2677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * that unknown pname needs more than 1 value, then the validation check 2687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * is incomplete and the app may crash if it passed the wrong number params. 2697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall */ 2707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic int getNeededCount(GLint pname) { 2717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int needed = 1; 272dc43a6c99c21e99723058bab4041e80557795a74Romain Guy#ifdef GL_ES_VERSION_3_0 273dc43a6c99c21e99723058bab4041e80557795a74Romain Guy // GLES 3.x pnames 274dc43a6c99c21e99723058bab4041e80557795a74Romain Guy switch (pname) { 275dc43a6c99c21e99723058bab4041e80557795a74Romain Guy case GL_MAX_VIEWPORT_DIMS: 276dc43a6c99c21e99723058bab4041e80557795a74Romain Guy needed = 2; 277dc43a6c99c21e99723058bab4041e80557795a74Romain Guy break; 278dc43a6c99c21e99723058bab4041e80557795a74Romain Guy 279dc43a6c99c21e99723058bab4041e80557795a74Romain Guy case GL_PROGRAM_BINARY_FORMATS: 280dc43a6c99c21e99723058bab4041e80557795a74Romain Guy glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed); 281dc43a6c99c21e99723058bab4041e80557795a74Romain Guy break; 282dc43a6c99c21e99723058bab4041e80557795a74Romain Guy } 283dc43a6c99c21e99723058bab4041e80557795a74Romain Guy#endif 284dc43a6c99c21e99723058bab4041e80557795a74Romain Guy 2857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_2_0 2867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GLES 2.x pnames 2877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall switch (pname) { 2887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 2897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 2907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 2; 2917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 2927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_BLEND_COLOR: 2947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_CLEAR_VALUE: 2957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_WRITEMASK: 2967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SCISSOR_BOX: 2977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_VIEWPORT: 2987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 4; 2997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 3027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 3037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SHADER_BINARY_FORMATS: 3067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 3077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 3107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_VERSION_ES_CM_1_1 3127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GLES 1.x pnames 3137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall switch (pname) { 3147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 3157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 3167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_DEPTH_RANGE: 3177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SMOOTH_LINE_WIDTH_RANGE: 3187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SMOOTH_POINT_SIZE_RANGE: 3197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 2; 3207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_NORMAL: 3237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_POINT_DISTANCE_ATTENUATION: 3247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 3; 3257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_CLEAR_VALUE: 3287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_WRITEMASK: 3297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_COLOR: 3307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_TEXTURE_COORDS: 3317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_FOG_COLOR: 3327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_LIGHT_MODEL_AMBIENT: 3337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SCISSOR_BOX: 3347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_VIEWPORT: 3357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 4; 3367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_MODELVIEW_MATRIX: 3397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_PROJECTION_MATRIX: 3407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_TEXTURE_MATRIX: 3417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 16; 3427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 3457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 3467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 3497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return needed; 3507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 3547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 3557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallget 3567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 3577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 3587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType; 3597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage; 3607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params_base = (CTYPE *) 0; 3617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 3627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params = (CTYPE *) 0; 3637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int _needed = 0; 3647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 3667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 3697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 3727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 3757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _needed = getNeededCount(pname); 3797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // if we didn't find this pname, we just assume the user passed 3807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // an array of the right size -- this might happen with extensions 3817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // or if we forget an enum here. 3827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_remaining < _needed) { 3837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "length - offset < needed"; 3867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 3893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, (jboolean *)0); 3907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 3917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GET( 3937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 3947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (CTYPE *)params 3957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 3967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 3987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 3993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, params_base, !_exception); 4017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 4037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 4093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 4107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 4117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallgetarray 4127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 4137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 4147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType; 4157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage; 4163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi JTYPEARRAY _array = (JTYPEARRAY) 0; 4177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 4187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 4197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params = (CTYPE *) 0; 4207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int _needed = 0; 4217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining /= sizeof(CTYPE); // convert from bytes to item count 4247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _needed = getNeededCount(pname); 4257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // if we didn't find this pname, we just assume the user passed 4267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // an array of the right size -- this might happen with extensions 4277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // or if we forget an enum here. 4287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_needed>0 && _remaining < _needed) { 4297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 4307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "remaining() < needed"; 4327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 4337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 4353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 4363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (jboolean *) 0); 4377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (CTYPE *) (_paramsBase + _bufferOffset); 4387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GET( 4407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 4417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (CTYPE *)params 4427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 4437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 4457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 4463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 4487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 4507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// -------------------------------------------------------------------------- 4557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDispatchCompute ( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z ) */ 4567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 4577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDispatchCompute__III 4587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint num_groups_x, jint num_groups_y, jint num_groups_z) { 4597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDispatchCompute( 4607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_x, 4617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_y, 4627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_z 4637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 4647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDispatchComputeIndirect ( GLintptr indirect ) */ 4677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDispatchComputeIndirect(JNIEnv *_env, jobject, jlong indirect) { 4687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // 'indirect' is a byte offset, not a pointer. GL checks for negative and too-large values. 4697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // Here we only need to check for successful 64-bit to 32-bit conversion. 4707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // - jlong is a int64_t (jni.h) 4717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // - GLintptr is a long (khrplatform.h) 4727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (sizeof(GLintptr) != sizeof(jlong) && (indirect < LONG_MIN || indirect > LONG_MAX)) { 4737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDispatchComputeIndirect((GLintptr)indirect); 4777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDrawArraysIndirect ( GLenum mode, const void *indirect ) */ 4807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDrawArraysIndirect(JNIEnv *_env, jobject, int mode, 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 glDrawArraysIndirect(mode, (const void*)indirect); 4897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDrawElementsIndirect ( GLenum mode, GLenum type, const void *indirect ) */ 4927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDrawElementsIndirect(JNIEnv *_env, jobject, jint mode, jint type, jlong indirect) { 4937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 4947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GL checks for too-large values. Here we only need to check for successful signed 64-bit 4957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // to unsigned 32-bit conversion. 496bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 4977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDrawElementsIndirect(mode, type, (const void*)indirect); 5017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glFramebufferParameteri ( GLenum target, GLenum pname, GLint param ) */ 5047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glFramebufferParameteri__III 5067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 5077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glFramebufferParameteri( 5087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)param 5117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 5157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetFramebufferParameteriv__II_3II 5177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 5187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 5197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 5207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 5217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 5227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 5267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 5297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 5327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 5357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 5393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 5417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetFramebufferParameteriv( 5437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 5467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 5497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 5503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 5517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 5527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 5547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 5597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 5617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 56284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 56384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 56484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 5653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 5677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 57084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 57184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 57284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 57384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 57484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 57584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 5783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetFramebufferParameteriv( 5827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 5857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 58684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 58784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 58984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 59084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 59184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 59284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 5977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramInterfaceiv__III_3II 5997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jintArray params_ref, jint offset) { 6007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 6017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 6027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 6037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 6047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 6057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 6067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 6087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 6117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 6147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 6177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 6207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 6213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 6227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 6237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramInterfaceiv( 6257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 6287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 6297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 6307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 6327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 6333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 6347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 6357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 6377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 6387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 6427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 6437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 6447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jobject params_buf) { 64584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 64684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 64784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 6483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 6497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 6507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 6517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 6527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 65384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 65484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 65584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 65684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 65784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 65884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 6593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 6607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 6613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 6627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 6637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramInterfaceiv( 6657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 6687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 6697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 67084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 67184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 6727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 67384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 67484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 67584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 67684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 6777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLuint glGetProgramResourceIndex ( GLuint program, GLenum programInterface, const GLchar *name ) */ 6817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 6827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceIndex__IILjava_lang_String_2 6837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 6847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 6857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 6867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 6877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint _returnValue = 0; 6887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char* _nativename = 0; 6897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!name) { 6917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "name == null"; 6947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 6977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glGetProgramResourceIndex( 6997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 7007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 7017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLchar *)_nativename 7027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 7037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 7057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_nativename) { 7067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 7077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 7107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 7117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jint)_returnValue; 7137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 7147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceName ( GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name ) */ 7167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jstring 7177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceName 7187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index) { 7197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 7207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 7217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 7227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 7247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 7257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceiv__IIII_3III_3II_3II 7267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse 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) { 7277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 7287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 7297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 7307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props_base = (GLenum *) 0; 7317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsRemaining; 7327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props = (GLenum *) 0; 7337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length_base = (GLsizei *) 0; 7347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthRemaining; 7357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length = (GLsizei *) 0; 7367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 7377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsRemaining; 7387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 7397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!props_ref) { 7417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "props == null"; 7447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (propsOffset < 0) { 7477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "propsOffset < 0"; 7507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _propsRemaining = _env->GetArrayLength(props_ref) - propsOffset; 7537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props_base = (GLenum *) 7543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(props_ref, (jboolean *)0); 7557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props = props_base + propsOffset; 7567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7576aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 7586aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 7596aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 7606aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 7616aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 7626aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 7636aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 7646aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 7656aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 7666aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 7676aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 7687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 7717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 7747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (paramsOffset < 0) { 7777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "paramsOffset < 0"; 7807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 7837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 7843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 7857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + paramsOffset; 7867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramResourceiv( 7887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 7897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 7907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 7917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)propCount, 7927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum *)props, 7937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)bufSize, 7947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei *)length, 7957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 7967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 7977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 7997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 8003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 8017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 8027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (length_base) { 8043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 8057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 8067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (props_base) { 8083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(props_ref, (jint*)props_base, 8097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 8107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 8127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 8137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 8177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 8187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 8197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jobject props_buf, jint bufSize, jobject length_buf, jobject params_buf) { 82084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 82184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 82284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 8233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _propsArray = (jintArray) 0; 8247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsBufferOffset = (jint) 0; 8253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 8267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthBufferOffset = (jint) 0; 8273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _paramsArray = (jintArray) 0; 8287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsBufferOffset = (jint) 0; 8297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsRemaining; 8307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props = (GLenum *) 0; 8317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthRemaining; 8327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length = (GLsizei *) 0; 8337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsRemaining; 8347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 8357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 83684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!props_buf) { 83784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 83884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 83984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "props == null"; 84084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 84184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi props = (GLenum *)getPointer(_env, props_buf, (jarray*)&_propsArray, &_propsRemaining, &_propsBufferOffset); 8436aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 8446aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 8456aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 84684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 84784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 84884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 84984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 85084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 85184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 8537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (props == NULL) { 8543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _propsBase = (char *)_env->GetIntArrayElements(_propsArray, (jboolean *) 0); 8557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props = (GLenum *) (_propsBase + _propsBufferOffset); 8567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8576aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 8583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 8597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 8607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 8623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_paramsArray, (jboolean *) 0); 8637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _paramsBufferOffset); 8647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramResourceiv( 8667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 8677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 8687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 8697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)propCount, 8707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum *)props, 8717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)bufSize, 8727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei *)length, 8737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 8747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 87584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 87684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 8777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_paramsArray) { 87884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_paramsArray, (jint*)params, _exception ? JNI_ABORT : 0); 8797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_lengthArray) { 88184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, _exception ? JNI_ABORT : 0); 8827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_propsArray) { 8843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_propsArray, (jint*)props, JNI_ABORT); 8857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 88684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 88784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 88884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLint glGetProgramResourceLocation ( GLuint program, GLenum programInterface, const GLchar *name ) */ 8927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 8937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceLocation__IILjava_lang_String_2 8947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 8957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 8967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 8977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 8987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint _returnValue = 0; 8997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char* _nativename = 0; 9007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!name) { 9027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 9037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 9047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "name == null"; 9057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 9067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 9087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glGetProgramResourceLocation( 9107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 9117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 9127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLchar *)_nativename 9137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 9167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_nativename) { 9177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 9187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 9217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 9227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jint)_returnValue; 9247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glUseProgramStages ( GLuint pipeline, GLbitfield stages, GLuint program ) */ 9277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 9287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glUseProgramStages__III 9297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint stages, jint program) { 9307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glUseProgramStages( 9317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 9327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)stages, 9337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program 9347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glActiveShaderProgram ( GLuint pipeline, GLuint program ) */ 9387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 9397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glActiveShaderProgram__II 9407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint program) { 9417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glActiveShaderProgram( 9427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 9437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program 9447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLuint glCreateShaderProgramv ( GLenum type, GLsizei count, const GLchar *const *strings ) */ 9487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 9497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glCreateShaderProgramv 9507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint type, jobjectArray strings) { 9517f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jint _exception = 0; 9527f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const char * _exceptionType = NULL; 9537f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const char * _exceptionMessage = NULL; 9547f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos GLsizei _count; 9557f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const GLchar** _strings = NULL; 9567f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jstring* _jstrings = NULL; 9577f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos GLuint _returnValue = 0; 9587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9597f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!strings) { 9607f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9617f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 9627f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "strings == null"; 9637f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9647f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9657f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9667f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _count = _env->GetArrayLength(strings); 9677f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9687f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _strings = (const GLchar**) calloc(_count, sizeof(const GLchar*)); 9697f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_strings) { 9707f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9717f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/OutOfMemoryError"; 9727f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "out of memory"; 9737f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9747f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9757f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9767f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _jstrings = (jstring*) calloc(_count, sizeof(jstring)); 9777f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_jstrings) { 9787f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9797f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/OutOfMemoryError"; 9807f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "out of memory"; 9817f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9827f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9837f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9847f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos for(int i = 0; i < _count; i++) { 9857f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _jstrings[i] = (jstring) _env->GetObjectArrayElement(strings, i); 9867f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_jstrings[i]) { 9877f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9887f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 9897f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "strings == null"; 9907f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9917f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9927f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _strings[i] = _env->GetStringUTFChars(_jstrings[i], 0); 9937f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9947f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9957f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _returnValue = glCreateShaderProgramv((GLenum)type, _count, _strings); 9967f16ec21711fdb97930166175c29d8235f75202ePablo Ceballosexit: 9977f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings && _jstrings) { 9987f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos for(int i = 0; i < _count; i++) { 9997f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings[i] && _jstrings[i]) { 10007f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _env->ReleaseStringUTFChars(_jstrings[i], _strings[i]); 10017f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10027f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10037f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10047f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings) { 10057f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos free(_strings); 10067f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10077f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_jstrings) { 10087f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos free(_jstrings); 10097f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10107f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_exception) { 10117f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 10127f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10137f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos return (jint)_returnValue; 10147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindProgramPipeline ( GLuint pipeline ) */ 10167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindProgramPipeline__I 10187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 10197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindProgramPipeline( 10207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 10217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 10257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDeleteProgramPipelines__I_3II 10277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 10287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 10297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 10307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 10317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines_base = (GLuint *) 0; 10327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!pipelines_ref) { 10367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 10377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 10387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "pipelines == null"; 10397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 10407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 10427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 10437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 10447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 10457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 10467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(pipelines_ref) - offset; 10487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines_base = (GLuint *) 10493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 10507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = pipelines_base + offset; 10517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDeleteProgramPipelines( 10537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 10587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines_base) { 10593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 10607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 10617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 10637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 10647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 10687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 10707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 107184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 107284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 107384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 10743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 10757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 10767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 107984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!pipelines_buf) { 108084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 108184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 108284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "pipelines == null"; 108384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 108484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 10853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 10867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines == NULL) { 10873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 10887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 10897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDeleteProgramPipelines( 10917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 109484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 109584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 10967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 10973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)pipelines, JNI_ABORT); 10987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 109984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 110084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 110184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 11027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 11057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGenProgramPipelines__I_3II 11077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 11087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 11097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 11107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 11117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines_base = (GLuint *) 0; 11127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 11137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 11147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!pipelines_ref) { 11167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 11177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 11187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "pipelines == null"; 11197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 11207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 11227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 11237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 11247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 11257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 11267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(pipelines_ref) - offset; 11287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines_base = (GLuint *) 11293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 11307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = pipelines_base + offset; 11317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGenProgramPipelines( 11337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 11347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 11357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 11387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines_base) { 11393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 11407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 11417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 11437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 11447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 11487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGenProgramPipelines__ILjava_nio_IntBuffer_2 11507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 115184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 115284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 115384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 11543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 11557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 11567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 11577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 11587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 115984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!pipelines_buf) { 116084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 116184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 116284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "pipelines == null"; 116384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 116484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 11653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 11667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines == NULL) { 11673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 11687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 11697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGenProgramPipelines( 11717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 11727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 11737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 117484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 117584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 11767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 117784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)pipelines, _exception ? JNI_ABORT : 0); 117884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 117984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 118084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 11817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLboolean glIsProgramPipeline ( GLuint pipeline ) */ 11857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jboolean 11867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glIsProgramPipeline__I 11877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 11887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean _returnValue; 11897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glIsProgramPipeline( 11907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 11917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jboolean)_returnValue; 11937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 11967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramPipelineiv__II_3II 11987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jintArray params_ref, jint offset) { 11997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 12007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 12017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 12027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 12037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 12047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 12057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 12077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 12087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 12097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 12107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 12117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 12137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 12147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 12157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 12167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 12177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 12197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 12203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 12217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 12227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv( 12247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 12257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 12267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 12277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 12307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 12313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 12327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 12337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 12357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 12367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 12407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 12427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jobject params_buf) { 124384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 124484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 124584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 12463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 12477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 12487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 12497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 12507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 125184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 125284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 125384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 125484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 125584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 125684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 12573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 12587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 12593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 12607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 12617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv( 12637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 12647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 12657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 12667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 126784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 126884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 12697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 127084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 127184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 127284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 127384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 12747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1i ( GLuint program, GLint location, GLint v0 ) */ 12787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1i__III 12807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 12817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1i( 12827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0 12857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2i ( GLuint program, GLint location, GLint v0, GLint v1 ) */ 12897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2i__IIII 12917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 12927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2i( 12937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 12967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1 12977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2 ) */ 13017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3i__IIIII 13037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 13047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3i( 13057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 13087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1, 13097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v2 13107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3 ) */ 13147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4i__IIIIII 13167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 13177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4i( 13187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 13217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1, 13227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v2, 13237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v3 13247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1ui ( GLuint program, GLint location, GLuint v0 ) */ 13287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1ui__III 13307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 13317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1ui( 13327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0 13357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2ui ( GLuint program, GLint location, GLuint v0, GLuint v1 ) */ 13397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2ui__IIII 13417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 13427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2ui( 13437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 13467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1 13477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 13517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3ui__IIIII 13537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 13547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3ui( 13557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 13587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1, 13597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v2 13607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 13647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4ui__IIIIII 13667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 13677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4ui( 13687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 13717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1, 13727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v2, 13737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v3 13747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1f ( GLuint program, GLint location, GLfloat v0 ) */ 13787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1f__IIF 13807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0) { 13817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1f( 13827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0 13857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2f ( GLuint program, GLint location, GLfloat v0, GLfloat v1 ) */ 13897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2f__IIFF 13917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1) { 13927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2f( 13937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 13967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1 13977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2 ) */ 14017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3f__IIFFF 14037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2) { 14047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3f( 14057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 14087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1, 14097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v2 14107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3 ) */ 14147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4f__IIFFFF 14167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2, jfloat v3) { 14177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4f( 14187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 14217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1, 14227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v2, 14237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v3 14247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 14287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1iv__III_3II 14307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 14317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 14327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 14337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 14347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 14357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 14397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 14427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 14457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 14487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 14517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 14523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 14537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 14547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1iv( 14567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 14597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 14607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 14637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 14643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 14657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 14667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 14687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 14697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 14737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 14757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 147684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 147784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 147884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 14793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 14807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 14817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 148484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 148584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 148684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 148784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 148884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 148984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 14903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 14917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 14923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 14937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 14947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1iv( 14967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 14997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 150184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 150284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 15037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 15043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 15057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 150684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 150784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 150884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2iv__III_3II 15147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 15157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 15167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 15177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 15187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 15197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 15237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 15247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 15257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 15267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 15277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 15297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 15307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 15317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 15327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 15337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 15357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 15363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 15377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 15387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2iv( 15407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 15457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 15477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 15483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 15497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 15507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 15527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 15537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 15597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 156084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 156184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 156284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 15633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 15647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 15657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 156884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 156984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 157084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 157184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 157284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 157384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 15757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 15763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 15777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 15787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2iv( 15807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 158584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 158684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 15877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 15883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 15897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 159084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 159184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 159284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3iv__III_3II 15987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 15997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 16007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 16017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 16027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 16037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 16057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 16077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 16107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 16137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 16167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 16197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 16203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 16217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 16227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3iv( 16247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 16257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 16267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 16277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 16287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 16297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 16317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 16323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 16337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 16347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 16367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 16377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 16417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 16437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 164484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 164584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 164684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 16473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 16487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 16497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 16517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 165284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 165384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 165484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 165584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 165684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 165784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 16583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 16597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 16603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 16617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 16627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3iv( 16647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 16657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 16667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 16677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 16687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 166984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 167084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 16717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 16723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 16737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 167484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 167584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 167684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 16777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 16807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4iv__III_3II 16827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 16837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 16847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 16857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 16867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 16877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 16897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 16917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 16947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 16977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 17007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 17037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 17043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 17057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 17067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4iv( 17087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 17127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 17157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 17163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 17177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 17187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 17207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 17217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 17257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 17277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 172884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 172984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 173084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 17313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 17327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 17337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 17357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 173684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 173784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 173884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 173984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 174084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 174184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 17423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 17437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 17443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 17457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 17467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4iv( 17487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 17527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 175384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 175484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 17557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 17563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 17577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 175884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 175984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 176084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 17617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 17647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1uiv__III_3II 17667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 17677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 17687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 17697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 17707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 17717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 17737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 17757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 17767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 17787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 17817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 17827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 17847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 17877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 17883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 17897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 17907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1uiv( 17927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 17967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 17997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 18003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 18017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 18027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 18047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 18057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 18117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 181284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 181384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 181484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 18153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 18167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 18177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 18197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 182084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 182184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 182284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 182384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 182484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 182584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 18263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 18277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 18283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 18297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 18307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1uiv( 18327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 183784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 183884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 18397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 18403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 18417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 184284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 184384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 184484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 18457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2uiv__III_3II 18507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 18517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 18527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 18537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 18547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 18557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 18577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 18597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 18627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 18637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 18657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 18687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 18697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 18717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 18723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 18737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 18747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2uiv( 18767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 18817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 18837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 18843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 18857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 18867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 18887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 18897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 18957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 189684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 189784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 189884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 18993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 19007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 19017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 19037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 190484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 190584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 190684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 190784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 190884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 190984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 19117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 19123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 19137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 19147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2uiv( 19167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 19207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 192184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 192284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 19237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 19243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 19257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 192684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 192784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 192884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 19327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 19337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3uiv__III_3II 19347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 19357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 19367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 19377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 19387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 19397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 19417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 19437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 19467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 19497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 19527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 19557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 19563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 19577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 19587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3uiv( 19607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 19647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 19657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 19677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 19683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 19697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 19707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 19727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 19737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 19777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 19787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 19797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 198084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 198184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 198284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 19833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 19847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 19857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 19877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 198884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 198984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 199084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 199184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 199284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 199384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 19957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 19963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 19977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 19987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3uiv( 20007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 20047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 200584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 200684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 20077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 20083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 20097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 201084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 201184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 201284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 20167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4uiv__III_3II 20187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 20197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 20207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 20217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 20227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 20237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 20257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 20277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 20287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 20297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 20307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 20317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 20337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 20347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 20357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 20367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 20377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 20397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 20403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 20417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 20427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4uiv( 20447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 20487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 20497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 20517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 20523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 20537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 20547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 20567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 20577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 20617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 20637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 206484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 206584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 206684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 20673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 20687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 20697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 20717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 207284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 207384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 207484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 207584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 207684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 207784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 20797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 20803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 20817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 20827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4uiv( 20847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 20887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 208984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 209084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 20917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 20923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 20937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 209484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 209584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 209684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1fv__III_3FI 21027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 21037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 21047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 21057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 21067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 21077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 21117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 21147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 21177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 21207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 21237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 21243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 21257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 21267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1fv( 21287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 21337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 21357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 21363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 21377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 21387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 21407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 21417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 21437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 21477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 214884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 214984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 215084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 21513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 21527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 21537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 215684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 215784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 215884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 215984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 216084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 216184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 21623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 21637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 21643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 21657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 21667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1fv( 21687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 217384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 217484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 21757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 21763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 21777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 217884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 217984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 218084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 21817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 21827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2fv__III_3FI 21867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 21877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 21887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 21897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 21907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 21917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 21957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 21987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 22017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 22047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 22077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 22083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 22097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 22107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2fv( 22127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 22167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 22177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 22197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 22203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 22217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 22227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 22247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 22257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 22297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 22317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 223284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 223384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 223484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 22353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 22367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 22377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 224084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 224184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 224284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 224384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 224484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 224584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 22463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 22477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 22483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 22497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 22507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2fv( 22527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 22567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 225784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 225884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 22597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 22603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 22617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 226284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 226384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 226484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 22657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 22687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3fv__III_3FI 22707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 22717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 22727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 22737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 22747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 22757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 22797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 22827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 22857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 22887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 22917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 22923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 22937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 22947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3fv( 22967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 23037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 23043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 23057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 23067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 23087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 23097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 23137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 23157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 231684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 231784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 231884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 23193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 23207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 23217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 232484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 232584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 232684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 232784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 232884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 232984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 23303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 23317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 23323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 23337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 23347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3fv( 23367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 23377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 234184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 234284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 23437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 23443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 23457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 234684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 234784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 234884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 23497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 23527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4fv__III_3FI 23547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 23557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 23567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 23577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 23587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 23597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 23637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 23667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 23697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 23727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 23757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 23763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 23777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 23787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4fv( 23807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 23817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 23877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 23883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 23897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 23907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 23927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 23937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 23977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 23997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 240084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 240184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 240284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 24033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 24047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 24057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 240884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 240984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 241084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 241184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 241284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 241384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 24143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 24157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 24163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 24177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 24187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4fv( 24207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 242584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 242684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 24277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 24283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 24297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 243084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 243184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 243284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 24337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 24367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 24377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2fv__IIIZ_3FI 24387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 24397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 24407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 24417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 24427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 24437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 24477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 24507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 24537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 24567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 24597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 24603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 24617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 24627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2fv( 24647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 24687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 24707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 24727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 24733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 24747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 24757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 24777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 24787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 24827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 24837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 24847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 248584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 248684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 248784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 24883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 24897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 24907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 249384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 249484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 249584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 249684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 249784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 249884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 24993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 25007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 25013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 25027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 25037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2fv( 25057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 251184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 251284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 25137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 25143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 25157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 251684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 251784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 251884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 25197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3fv__IIIZ_3FI 25247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 25257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 25267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 25277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 25287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 25297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 25337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 25347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 25357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 25367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 25377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 25397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 25407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 25417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 25427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 25437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 25457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 25463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 25477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 25487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3fv( 25507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 25567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 25587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 25593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 25607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 25617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 25637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 25647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 25707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 257184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 257284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 257384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 25743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 25757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 25767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 257984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 258084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 258184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 258284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 258384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 258484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 25853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 25867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 25873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 25887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 25897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3fv( 25917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 259784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 259884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 25997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 26003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 26017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 260284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 260384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 260484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4fv__IIIZ_3FI 26107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 26117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 26127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 26137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 26147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 26157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 26197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 26227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 26257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 26287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 26317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 26323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 26337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 26347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4fv( 26367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 26387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 26397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 26407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 26417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 26427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 26447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 26453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 26467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 26477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 26497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 26507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 26567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 265784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 265884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 265984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 26603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 26617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 26627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 266584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 266684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 266784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 266884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 266984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 267084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 26727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 26733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 26747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 26757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4fv( 26777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 26797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 26807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 26817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 26827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 268384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 268484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 26857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 26863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 26877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 268884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 268984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 269084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x3fv__IIIZ_3FI 26967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 26977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 26987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 26997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 27007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 27017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 27057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 27087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 27117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 27147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 27177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 27183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 27197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 27207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x3fv( 27227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 27237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 27287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 27307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 27313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 27327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 27337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 27357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 27367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 27427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 274384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 274484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 274584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 27463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 27477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 27487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 275184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 275284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 275384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 275484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 275584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 275684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 27573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 27587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 27593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 27607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 27617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x3fv( 27637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 27647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 276984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 277084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 27717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 27723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 27737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 277484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 277584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 277684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 27777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x2fv__IIIZ_3FI 27827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 27837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 27847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 27857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 27867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 27877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 27917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 27947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 27977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 28007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 28037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 28043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 28057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 28067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x2fv( 28087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 28137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 28147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 28167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 28173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 28187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 28197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 28217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 28227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 28267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 28287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 282984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 283084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 283184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 28323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 28337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 28347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 28357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 28367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 283784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 283884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 283984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 284084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 284184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 284284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 28433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 28447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 28453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 28467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 28477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x2fv( 28497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 28547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 285584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 285684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 28577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 28583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 28597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 286084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 286184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 286284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 28637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 28667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x4fv__IIIZ_3FI 28687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 28697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 28707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 28717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 28727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 28737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 28747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 28757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 28777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 28787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 28807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 28837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 28847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 28867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 28897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 28903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 28917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 28927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x4fv( 28947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 28997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 29027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 29033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 29047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 29057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 29077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 29087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 29127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 29147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 291584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 291684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 291784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 29183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 29197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 29207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 29217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 29227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 292384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 292484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 292584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 292684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 292784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 292884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 29293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 29307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 29313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 29327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 29337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x4fv( 29357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 29367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 29377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 29387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 29397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 29407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 294184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 294284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 29437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 29443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 29457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 294684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 294784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 294884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 29497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 29527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x2fv__IIIZ_3FI 29547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 29557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 29567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 29577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 29587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 29597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 29607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 29617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 29637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 29647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 29657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 29667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 29677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 29697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 29707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 29717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 29727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 29737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 29757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 29763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 29777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 29787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x2fv( 29807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 29817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 29827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 29837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 29847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 29857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 29887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 29893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 29907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 29917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 29937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 29947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 29987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 30007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 300184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 300284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 300384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 30043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 30057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 30067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 30087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 300984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 301084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 301184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 301284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 301384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 301484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 30153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 30167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 30173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 30187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 30197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x2fv( 30217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 30227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 30237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 30247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 30257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 30267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 302784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 302884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 30297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 30303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 30317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 303284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 303384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 303484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 30357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 30387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x4fv__IIIZ_3FI 30407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 30417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 30427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 30437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 30447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 30457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 30477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 30497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 30507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 30517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 30527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 30537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 30557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 30567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 30577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 30587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 30597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 30617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 30623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 30637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 30647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x4fv( 30667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 30677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 30687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 30697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 30707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 30717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 30727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 30747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 30753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 30767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 30777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 30797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 30807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 30847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 30867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 308784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 308884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 308984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 30903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 30917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 30927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 30947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 309584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 309684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 309784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 309884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 309984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 310084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 31027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 31033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 31047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 31057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x4fv( 31077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 31087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 31097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 31107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 31117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 31127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 311384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 311484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 31157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 31163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 31177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 311884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 311984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 312084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 31247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x3fv__IIIZ_3FI 31267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 31277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 31287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 31297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 31307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 31317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 31327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 31337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 31357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 31367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 31377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 31387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 31397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 31417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 31427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 31437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 31447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 31457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 31477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 31483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 31497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 31507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x3fv( 31527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 31537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 31547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 31557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 31567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 31577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 31587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 31607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 31613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 31627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 31637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 31657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 31667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 31707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 31727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 317384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 317484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 317584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 31763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 31777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 31787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 31797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 31807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 318184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 318284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 318384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 318484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 318584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 318684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 31887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 31893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 31907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 31917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x3fv( 31937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 31947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 31957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 31967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 31977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 31987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 319984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 320084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 32017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 32023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 32037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 320484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 320584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 320684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 32077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glValidateProgramPipeline ( GLuint pipeline ) */ 32107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glValidateProgramPipeline__I 32127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 32137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glValidateProgramPipeline( 32147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 32157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <stdlib.h> 32197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 32217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jstring android_glGetProgramPipelineInfoLog(JNIEnv *_env, jobject, jint shader) { 32227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint infoLen = 0; 32237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 32247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!infoLen) { 32257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return _env->NewStringUTF(""); 32267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall char* buf = (char*) malloc(infoLen); 32287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (buf == NULL) { 32297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/OutOfMemoryError", "out of memory"); 32307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 32317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineInfoLog(shader, infoLen, NULL, buf); 32337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jstring result = _env->NewStringUTF(buf); 32347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall free(buf); 32357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return result; 32367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindImageTexture ( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format ) */ 32387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindImageTexture__IIIZIII 32407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint unit, jint texture, jint level, jboolean layered, jint layer, jint access, jint format) { 32417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindImageTexture( 32427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)unit, 32437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)texture, 32447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 32457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)layered, 32467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)layer, 32477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)access, 32487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)format 32497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 32537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetBooleani_v__II_3ZI 32557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jbooleanArray data_ref, jint offset) { 32567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 32577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 32587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 32597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data_base = (GLboolean *) 0; 32607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 32617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data = (GLboolean *) 0; 32627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!data_ref) { 32647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 32657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 32667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "data == null"; 32677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 32687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 32707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 32717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 32727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 32737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 32747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 32767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data_base = (GLboolean *) 32773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetBooleanArrayElements(data_ref, (jboolean *)0); 32787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data = data_base + offset; 32797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetBooleani_v( 32817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 32827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 32837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean *)data 32847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 32877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (data_base) { 32883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(data_ref, (jboolean*)data_base, 32897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 32907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 32927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 32937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 32977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetBooleani_v__IILjava_nio_IntBuffer_2 32997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 330084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 330184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 330284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 33033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 33047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 33057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 33067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data = (GLboolean *) 0; 33077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 330884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!data_buf) { 330984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 331084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 331184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "data == null"; 331284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 331384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 33143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLboolean *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 33157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (data == NULL) { 33163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 33177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data = (GLboolean *) (_dataBase + _bufferOffset); 33187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetBooleani_v( 33207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 33217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 33227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean *)data 33237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 332484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 332584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 33267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 332784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)data, _exception ? JNI_ABORT : 0); 332884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 332984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 333084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 33317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glMemoryBarrier ( GLbitfield barriers ) */ 33357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glMemoryBarrier__I 33377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint barriers) { 33387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glMemoryBarrier( 33397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)barriers 33407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glMemoryBarrierByRegion ( GLbitfield barriers ) */ 33447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glMemoryBarrierByRegion__I 33467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint barriers) { 33477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glMemoryBarrierByRegion( 33487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)barriers 33497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glTexStorage2DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations ) */ 33537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glTexStorage2DMultisample__IIIIIZ 33557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jboolean fixedsamplelocations) { 33567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glTexStorage2DMultisample( 33577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 33587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)samples, 33597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)internalformat, 33607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)width, 33617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)height, 33627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)fixedsamplelocations 33637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 33677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetMultisamplefv__II_3FI 33697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jint index, jfloatArray val_ref, jint offset) { 33707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 33717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 33727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 33737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val_base = (GLfloat *) 0; 33747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 33757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val = (GLfloat *) 0; 33767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!val_ref) { 33787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 33797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 33807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "val == null"; 33817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 33827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 33847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 33857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 33867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 33877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 33887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(val_ref) - offset; 33907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val_base = (GLfloat *) 33913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(val_ref, (jboolean *)0); 33927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val = val_base + offset; 33937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetMultisamplefv( 33957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 33967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 33977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)val 33987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 34017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (val_base) { 34023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(val_ref, (jfloat*)val_base, 34037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 34047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 34067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 34077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 34097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 34117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 34127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 34137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jint index, jobject val_buf) { 341484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 341584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 341684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 34173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 34187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 34197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 34207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val = (GLfloat *) 0; 34217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 342284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!val_buf) { 342384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 342484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 342584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "val == null"; 342684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 342784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 34283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi val = (GLfloat *)getPointer(_env, val_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 34297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (val == NULL) { 34303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 34317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val = (GLfloat *) (_valBase + _bufferOffset); 34327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetMultisamplefv( 34347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 34357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 34367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)val 34377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 343884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 343984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 34407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 344184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseFloatArrayElements(_array, (jfloat*)val, _exception ? JNI_ABORT : 0); 344284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 344384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 344484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 34457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 34477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glSampleMaski ( GLuint maskNumber, GLbitfield mask ) */ 34497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 34507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glSampleMaski__II 34517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint maskNumber, jint mask) { 34527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glSampleMaski( 34537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)maskNumber, 34547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)mask 34557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 34567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 34577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 34597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 34607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameteriv__III_3II 34617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jintArray params_ref, jint offset) { 34627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 34637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 34647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 34657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 34667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 34677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 34687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 34707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 34717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 34727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 34737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 34747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 34767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 34777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 34787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 34797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 34807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 34827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 34833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 34847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 34857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameteriv( 34877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 34887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 34897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 34907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 34917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 34927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 34947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 34953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 34967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 34977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 34997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 35007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 35027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 35047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 35057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 35067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 350784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 350884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 350984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 35103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 35117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 35127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 35137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 35147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 351584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 351684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 351784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 351884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 351984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 352084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 35213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 35227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 35233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 35247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 35257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameteriv( 35277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 35287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 35297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 35307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 35317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 353284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 353384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 35347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 353584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 353684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 353784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 353884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 35397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 35417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 35437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 35447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameterfv__III_3FI 35457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jfloatArray params_ref, jint offset) { 35467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 35477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 35487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 35497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params_base = (GLfloat *) 0; 35507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 35517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params = (GLfloat *) 0; 35527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 35547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 35557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 35567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 35577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 35587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 35607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 35617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 35627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 35637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 35647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 35667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLfloat *) 35673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 35687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 35697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameterfv( 35717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 35727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 35737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 35747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)params 35757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 35767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 35787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 35793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 35807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 35817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 35837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 35847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 35867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 35887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 35897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 35907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 359184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 359284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 359384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 35943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 35957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 35967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 35977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params = (GLfloat *) 0; 35987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 359984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 360084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 360184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 360284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 360384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 360484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 36053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 36067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 36073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 36087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLfloat *) (_paramsBase + _bufferOffset); 36097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 36107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameterfv( 36117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 36127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 36137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 36147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)params 36157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 361684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 361784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 36187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 361984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0); 362084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 362184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 362284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 36237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 36247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindVertexBuffer ( GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride ) */ 36277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindVertexBuffer__IIJI 36297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint bindingindex, jint buffer, jlong offset, jint stride) { 36307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (sizeof(GLintptr) != sizeof(jlong) && (offset < LONG_MIN || offset > LONG_MAX)) { 36317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "offset too large"); 36327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 36337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 36347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindVertexBuffer( 36357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex, 36367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)buffer, 36377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLintptr)offset, 36387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)stride 36397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribFormat ( GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset ) */ 36427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribFormat__IIIZI 36447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jboolean normalized, jint relativeoffset) { 36457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribFormat( 36467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 36477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)size, 36487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)type, 36497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)normalized, 36507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)relativeoffset 36517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribIFormat ( GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset ) */ 36557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribIFormat__IIII 36577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jint relativeoffset) { 36587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribIFormat( 36597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 36607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)size, 36617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)type, 36627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)relativeoffset 36637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribBinding ( GLuint attribindex, GLuint bindingindex ) */ 36677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribBinding__II 36697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint bindingindex) { 36707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribBinding( 36717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 36727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex 36737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexBindingDivisor ( GLuint bindingindex, GLuint divisor ) */ 36777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexBindingDivisor__II 36797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint bindingindex, jint divisor) { 36807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexBindingDivisor( 36817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex, 36827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)divisor 36837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic const char *classPathName = "android/opengl/GLES31"; 36877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 368876f6a86de25e1bf74717e047e55fd44b089673f3Daniel Micaystatic const JNINativeMethod methods[] = { 36897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"_nativeClassInit", "()V", (void*)nativeClassInit }, 36907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDispatchCompute", "(III)V", (void *) android_glDispatchCompute__III }, 36917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDispatchComputeIndirect", "(J)V", (void *) android_glDispatchComputeIndirect }, 36927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDrawArraysIndirect", "(IJ)V", (void *) android_glDrawArraysIndirect }, 36937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDrawElementsIndirect", "(IIJ)V", (void *) android_glDrawElementsIndirect }, 36947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glFramebufferParameteri", "(III)V", (void *) android_glFramebufferParameteri__III }, 36957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetFramebufferParameteriv", "(II[II)V", (void *) android_glGetFramebufferParameteriv__II_3II }, 36967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetFramebufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 }, 36977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramInterfaceiv", "(III[II)V", (void *) android_glGetProgramInterfaceiv__III_3II }, 36987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramInterfaceiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 }, 36997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceIndex", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceIndex__IILjava_lang_String_2 }, 37007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceName", "(III)Ljava/lang/String;", (void *) android_glGetProgramResourceName }, 37017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceiv", "(IIII[III[II[II)V", (void *) android_glGetProgramResourceiv__IIII_3III_3II_3II }, 37027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse 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 }, 37037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceLocation", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceLocation__IILjava_lang_String_2 }, 37047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glUseProgramStages", "(III)V", (void *) android_glUseProgramStages__III }, 37057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glActiveShaderProgram", "(II)V", (void *) android_glActiveShaderProgram__II }, 37067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glCreateShaderProgramv", "(I[Ljava/lang/String;)I", (void *) android_glCreateShaderProgramv }, 37077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindProgramPipeline", "(I)V", (void *) android_glBindProgramPipeline__I }, 37087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDeleteProgramPipelines", "(I[II)V", (void *) android_glDeleteProgramPipelines__I_3II }, 37097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDeleteProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 }, 37107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGenProgramPipelines", "(I[II)V", (void *) android_glGenProgramPipelines__I_3II }, 37117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGenProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenProgramPipelines__ILjava_nio_IntBuffer_2 }, 37127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glIsProgramPipeline", "(I)Z", (void *) android_glIsProgramPipeline__I }, 37137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineiv", "(II[II)V", (void *) android_glGetProgramPipelineiv__II_3II }, 37147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 }, 37157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1i", "(III)V", (void *) android_glProgramUniform1i__III }, 37167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2i", "(IIII)V", (void *) android_glProgramUniform2i__IIII }, 37177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3i", "(IIIII)V", (void *) android_glProgramUniform3i__IIIII }, 37187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4i", "(IIIIII)V", (void *) android_glProgramUniform4i__IIIIII }, 37197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1ui", "(III)V", (void *) android_glProgramUniform1ui__III }, 37207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2ui", "(IIII)V", (void *) android_glProgramUniform2ui__IIII }, 37217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3ui", "(IIIII)V", (void *) android_glProgramUniform3ui__IIIII }, 37227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4ui", "(IIIIII)V", (void *) android_glProgramUniform4ui__IIIIII }, 37237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1f", "(IIF)V", (void *) android_glProgramUniform1f__IIF }, 37247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2f", "(IIFF)V", (void *) android_glProgramUniform2f__IIFF }, 37257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3f", "(IIFFF)V", (void *) android_glProgramUniform3f__IIFFF }, 37267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4f", "(IIFFFF)V", (void *) android_glProgramUniform4f__IIFFFF }, 37277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1iv", "(III[II)V", (void *) android_glProgramUniform1iv__III_3II }, 37287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 }, 37297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2iv", "(III[II)V", (void *) android_glProgramUniform2iv__III_3II }, 37307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 }, 37317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3iv", "(III[II)V", (void *) android_glProgramUniform3iv__III_3II }, 37327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 }, 37337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4iv", "(III[II)V", (void *) android_glProgramUniform4iv__III_3II }, 37347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 }, 37357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1uiv", "(III[II)V", (void *) android_glProgramUniform1uiv__III_3II }, 37367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 }, 37377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2uiv", "(III[II)V", (void *) android_glProgramUniform2uiv__III_3II }, 37387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 }, 37397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3uiv", "(III[II)V", (void *) android_glProgramUniform3uiv__III_3II }, 37407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 }, 37417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4uiv", "(III[II)V", (void *) android_glProgramUniform4uiv__III_3II }, 37427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 }, 37437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1fv", "(III[FI)V", (void *) android_glProgramUniform1fv__III_3FI }, 37447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 }, 37457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2fv", "(III[FI)V", (void *) android_glProgramUniform2fv__III_3FI }, 37467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 }, 37477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3fv", "(III[FI)V", (void *) android_glProgramUniform3fv__III_3FI }, 37487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 }, 37497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4fv", "(III[FI)V", (void *) android_glProgramUniform4fv__III_3FI }, 37507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 }, 37517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2fv__IIIZ_3FI }, 37527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 }, 37537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3fv__IIIZ_3FI }, 37547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 }, 37557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4fv__IIIZ_3FI }, 37567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 }, 37577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZ_3FI }, 37587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 }, 37597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZ_3FI }, 37607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 }, 37617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZ_3FI }, 37627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 }, 37637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZ_3FI }, 37647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 }, 37657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZ_3FI }, 37667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 }, 37677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZ_3FI }, 37687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 }, 37697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glValidateProgramPipeline", "(I)V", (void *) android_glValidateProgramPipeline__I }, 37707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramPipelineInfoLog }, 37717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindImageTexture", "(IIIZIII)V", (void *) android_glBindImageTexture__IIIZIII }, 37727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetBooleani_v", "(II[ZI)V", (void *) android_glGetBooleani_v__II_3ZI }, 37737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetBooleani_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBooleani_v__IILjava_nio_IntBuffer_2 }, 37747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glMemoryBarrier", "(I)V", (void *) android_glMemoryBarrier__I }, 37757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glMemoryBarrierByRegion", "(I)V", (void *) android_glMemoryBarrierByRegion__I }, 37767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glTexStorage2DMultisample", "(IIIIIZ)V", (void *) android_glTexStorage2DMultisample__IIIIIZ }, 37777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetMultisamplefv", "(II[FI)V", (void *) android_glGetMultisamplefv__II_3FI }, 37787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetMultisamplefv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 }, 37797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glSampleMaski", "(II)V", (void *) android_glSampleMaski__II }, 37807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameteriv", "(III[II)V", (void *) android_glGetTexLevelParameteriv__III_3II }, 37817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 }, 37827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameterfv", "(III[FI)V", (void *) android_glGetTexLevelParameterfv__III_3FI }, 37837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameterfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 }, 37847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindVertexBuffer", "(IIJI)V", (void *) android_glBindVertexBuffer__IIJI }, 37857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribFormat", "(IIIZI)V", (void *) android_glVertexAttribFormat__IIIZI }, 37867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribIFormat", "(IIII)V", (void *) android_glVertexAttribIFormat__IIII }, 37877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribBinding", "(II)V", (void *) android_glVertexAttribBinding__II }, 37887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexBindingDivisor", "(II)V", (void *) android_glVertexBindingDivisor__II }, 37897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall}; 37907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 37917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallint register_android_opengl_jni_GLES31(JNIEnv *_env) 37927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 37937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int err; 37947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 37957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return err; 37967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3797