17ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* 27ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * Copyright 2014 The Android Open Source Project 37ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 47ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * Licensed under the Apache License, Version 2.0 (the "License"); 57ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * you may not use this file except in compliance with the License. 67ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * You may obtain a copy of the License at 77ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 87ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * http://www.apache.org/licenses/LICENSE-2.0 97ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * Unless required by applicable law or agreed to in writing, software 117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * distributed under the License is distributed on an "AS IS" BASIS, 127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * See the License for the specific language governing permissions and 147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * limitations under the License. 157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall */ 167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// This source file is automatically generated 187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-variable" 20bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 21bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-function" 22bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe 237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <stdint.h> 247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <GLES3/gl31.h> 259626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 262279b2534272282a5b5152723235da397e49195cSteven Moreland#include <nativehelper/JNIHelp.h> 277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <android_runtime/AndroidRuntime.h> 287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <utils/misc.h> 297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <assert.h> 307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic int initialized = 0; 327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jclass nioAccessClass; 347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jclass bufferClass; 357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBasePointerID; 367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBaseArrayID; 377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jmethodID getBaseArrayOffsetID; 387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID positionID; 397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID limitID; 407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jfieldID elementSizeShiftID; 417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* special calls implemented in Android's GLES wrapper used to more 447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * efficiently bound-check passed arrays */ 457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallextern "C" { 467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_VERSION_ES_CM_1_1 477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const GLvoid *ptr, GLsizei count); 497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const GLvoid *pointer, GLsizei count); 517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_2_0 637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_3_0 697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count) { 717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribIPointer(indx, size, type, stride, pointer); 727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* Cache method IDs each time the class is loaded. */ 777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallnativeClassInit(JNIEnv *_env, jclass glImplClass) 807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBasePointer", "(Ljava/nio/Buffer;)J"); 897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall positionID = _env->GetFieldID(bufferClass, "position", "I"); 957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall limitID = _env->GetFieldID(bufferClass, "limit", "I"); 967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall elementSizeShiftID = 977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void * 1017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 1027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 1037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint position; 1047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint limit; 1057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint elementSizeShift; 1067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jlong pointer; 1077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall position = _env->GetIntField(buffer, positionID); 1097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall limit = _env->GetIntField(buffer, limitID); 1107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 1117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *remaining = (limit - position) << elementSizeShift; 1127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pointer = _env->CallStaticLongMethod(nioAccessClass, 1137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBasePointerID, buffer); 1147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pointer != 0L) { 1157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *array = NULL; 1167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return reinterpret_cast<void*>(pointer); 1177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 1187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 1207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayID, buffer); 1217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall *offset = _env->CallStaticIntMethod(nioAccessClass, 1227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall getBaseArrayOffsetID, buffer); 1237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 1257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 1267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 1273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayGetter { 1283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 1303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetByteArrayElements(array, is_copy); 1313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayGetter { 1343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 1363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetBooleanArrayElements(array, is_copy); 1373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayGetter { 1403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 1423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetCharArrayElements(array, is_copy); 1433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayGetter { 1463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 1483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetShortArrayElements(array, is_copy); 1493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayGetter { 1523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 1543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetIntArrayElements(array, is_copy); 1553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayGetter { 1583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 1603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetLongArrayElements(array, is_copy); 1613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayGetter { 1643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 1663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetFloatArrayElements(array, is_copy); 1673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayGetter { 1703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 1723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetDoubleArrayElements(array, is_copy); 1733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER> 1773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void* 1783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 1793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return ARRAYGETTER::Get(_env, array, is_copy); 1803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 1813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayReleaser { 1833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 1853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 1863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayReleaser { 1893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 1913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 1923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayReleaser { 1953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 1973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 1983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayReleaser { 2013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 2033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 2043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayReleaser { 2073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 2093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 2103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayReleaser { 2133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 2153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 2163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayReleaser { 2193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 2213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 2223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayReleaser { 2253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 2273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 2283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 2323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void 2333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 2343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ARRAYRELEASER::Release(_env, array, data, commit); 2353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 2363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 2387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 2397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 2407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleasePrimitiveArrayCritical(array, data, 2417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall commit ? 0 : JNI_ABORT); 2427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 2437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void * 2457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse HallgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 2467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall char* buf = (char*) _env->GetDirectBufferAddress(buffer); 2477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (buf) { 2487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint position = _env->GetIntField(buffer, positionID); 2497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 2507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall buf += position << elementSizeShift; 2517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } else { 2527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", 2537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall "Must use a native order direct Buffer"); 2547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 2557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (void*) buf; 2567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 2577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// -------------------------------------------------------------------------- 2597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* 2617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * returns the number of values glGet returns for a given pname. 2627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 2637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * The code below is written such that pnames requiring only one values 2647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * are the default (and are not explicitely tested for). This makes the 2657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * checking code much shorter/readable/efficient. 2667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * 2677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * This means that unknown pnames (e.g.: extensions) will default to 1. If 2687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * that unknown pname needs more than 1 value, then the validation check 2697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall * is incomplete and the app may crash if it passed the wrong number params. 2707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall */ 2717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic int getNeededCount(GLint pname) { 2727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int needed = 1; 273dc43a6c99c21e99723058bab4041e80557795a74Romain Guy#ifdef GL_ES_VERSION_3_0 274dc43a6c99c21e99723058bab4041e80557795a74Romain Guy // GLES 3.x pnames 275dc43a6c99c21e99723058bab4041e80557795a74Romain Guy switch (pname) { 276dc43a6c99c21e99723058bab4041e80557795a74Romain Guy case GL_MAX_VIEWPORT_DIMS: 277dc43a6c99c21e99723058bab4041e80557795a74Romain Guy needed = 2; 278dc43a6c99c21e99723058bab4041e80557795a74Romain Guy break; 279dc43a6c99c21e99723058bab4041e80557795a74Romain Guy 280dc43a6c99c21e99723058bab4041e80557795a74Romain Guy case GL_PROGRAM_BINARY_FORMATS: 281dc43a6c99c21e99723058bab4041e80557795a74Romain Guy glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed); 282dc43a6c99c21e99723058bab4041e80557795a74Romain Guy break; 283dc43a6c99c21e99723058bab4041e80557795a74Romain Guy } 284dc43a6c99c21e99723058bab4041e80557795a74Romain Guy#endif 285dc43a6c99c21e99723058bab4041e80557795a74Romain Guy 2867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_ES_VERSION_2_0 2877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GLES 2.x pnames 2887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall switch (pname) { 2897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 2907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 2917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 2; 2927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 2937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 2947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_BLEND_COLOR: 2957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_CLEAR_VALUE: 2967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_WRITEMASK: 2977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SCISSOR_BOX: 2987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_VIEWPORT: 2997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 4; 3007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 3037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 3047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SHADER_BINARY_FORMATS: 3077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 3087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 3117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#ifdef GL_VERSION_ES_CM_1_1 3137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GLES 1.x pnames 3147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall switch (pname) { 3157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 3167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 3177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_DEPTH_RANGE: 3187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SMOOTH_LINE_WIDTH_RANGE: 3197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SMOOTH_POINT_SIZE_RANGE: 3207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 2; 3217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_NORMAL: 3247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_POINT_DISTANCE_ATTENUATION: 3257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 3; 3267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_CLEAR_VALUE: 3297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COLOR_WRITEMASK: 3307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_COLOR: 3317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_CURRENT_TEXTURE_COORDS: 3327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_FOG_COLOR: 3337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_LIGHT_MODEL_AMBIENT: 3347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_SCISSOR_BOX: 3357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_VIEWPORT: 3367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 4; 3377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_MODELVIEW_MATRIX: 3407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_PROJECTION_MATRIX: 3417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_TEXTURE_MATRIX: 3427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall needed = 16; 3437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 3467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 3477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall break; 3487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#endif 3507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return needed; 3517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 3557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 3567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallget 3577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 3587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 3597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType; 3607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage; 3617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params_base = (CTYPE *) 0; 3627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 3637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params = (CTYPE *) 0; 3647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int _needed = 0; 3657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 3677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 3707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 3737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 3767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _needed = getNeededCount(pname); 3807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // if we didn't find this pname, we just assume the user passed 3817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // an array of the right size -- this might happen with extensions 3827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // or if we forget an enum here. 3837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_remaining < _needed) { 3847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 3857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "length - offset < needed"; 3877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 3887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 3893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 3903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, (jboolean *)0); 3917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 3927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GET( 3947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 3957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (CTYPE *)params 3967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 3977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 3987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 3997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 4003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, params_base, !_exception); 4027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 4047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 4103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 4117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 4127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallgetarray 4137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 4147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 4157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType; 4167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage; 4173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi JTYPEARRAY _array = (JTYPEARRAY) 0; 4187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 4197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 4207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall CTYPE *params = (CTYPE *) 0; 4217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int _needed = 0; 4227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining /= sizeof(CTYPE); // convert from bytes to item count 4257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _needed = getNeededCount(pname); 4267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // if we didn't find this pname, we just assume the user passed 4277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // an array of the right size -- this might happen with extensions 4287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // or if we forget an enum here. 4297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_needed>0 && _remaining < _needed) { 4307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 4317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "remaining() < needed"; 4337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 4347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 4363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 4373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (jboolean *) 0); 4387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (CTYPE *) (_paramsBase + _bufferOffset); 4397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GET( 4417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 4427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (CTYPE *)params 4437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 4447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 4467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 4473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 4497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 4517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall// -------------------------------------------------------------------------- 4567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDispatchCompute ( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z ) */ 4577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 4587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDispatchCompute__III 4597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint num_groups_x, jint num_groups_y, jint num_groups_z) { 4607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDispatchCompute( 4617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_x, 4627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_y, 4637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)num_groups_z 4647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 4657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDispatchComputeIndirect ( GLintptr indirect ) */ 4687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDispatchComputeIndirect(JNIEnv *_env, jobject, jlong indirect) { 4697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // 'indirect' is a byte offset, not a pointer. GL checks for negative and too-large values. 4707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // Here we only need to check for successful 64-bit to 32-bit conversion. 4717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // - jlong is a int64_t (jni.h) 4727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // - GLintptr is a long (khrplatform.h) 4737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (sizeof(GLintptr) != sizeof(jlong) && (indirect < LONG_MIN || indirect > LONG_MAX)) { 4747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDispatchComputeIndirect((GLintptr)indirect); 4787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDrawArraysIndirect ( GLenum mode, const void *indirect ) */ 4817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDrawArraysIndirect(JNIEnv *_env, jobject, int mode, jlong indirect) { 4827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 4837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GL checks for too-large values. Here we only need to check for successful signed 64-bit 4847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // to unsigned 32-bit conversion. 485bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 4867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 4887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 4897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDrawArraysIndirect(mode, (const void*)indirect); 4907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 4917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 4927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDrawElementsIndirect ( GLenum mode, GLenum type, const void *indirect ) */ 4937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void android_glDrawElementsIndirect(JNIEnv *_env, jobject, jint mode, jint type, jlong indirect) { 4947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 4957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // GL checks for too-large values. Here we only need to check for successful signed 64-bit 4967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall // to unsigned 32-bit conversion. 497bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 4987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 4997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 5007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDrawElementsIndirect(mode, type, (const void*)indirect); 5027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glFramebufferParameteri ( GLenum target, GLenum pname, GLint param ) */ 5057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glFramebufferParameteri__III 5077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 5087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glFramebufferParameteri( 5097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)param 5127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 5167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetFramebufferParameteriv__II_3II 5187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 5197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 5207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 5217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 5227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 5237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 5277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 5307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 5337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 5347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 5367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 5377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 5403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 5427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetFramebufferParameteriv( 5447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 5477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 5487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 5507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 5513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 5527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 5537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 5557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetFramebufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 5607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 5627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 56384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 56484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 56584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 5663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 5687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 5697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 5707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 57184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 57284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 57384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 57484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 57584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 57684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 5793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetFramebufferParameteriv( 5837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 5847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 5857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 5867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 58784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 58884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 59084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 59184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 59284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 59384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 5957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 5967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 5977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 5987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 5997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramInterfaceiv__III_3II 6007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jintArray params_ref, jint offset) { 6017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 6027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 6037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 6047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 6057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 6067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 6077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 6097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 6127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 6157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 6187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 6217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 6223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 6237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 6247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramInterfaceiv( 6267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 6297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 6307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 6317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 6337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 6343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 6357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 6367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 6387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 6397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramInterfaceiv ( GLuint program, GLenum programInterface, GLenum pname, GLint *params ) */ 6437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 6447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 6457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint pname, jobject params_buf) { 64684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 64784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 64884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 6493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 6507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 6517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 6527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 6537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 65484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 65584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 65684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 65784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 65884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 65984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 6603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 6617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 6623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 6637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 6647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramInterfaceiv( 6667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 6677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 6687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 6697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 6707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 67184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 67284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 6737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 67484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 67584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 67684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 67784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 6787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 6807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLuint glGetProgramResourceIndex ( GLuint program, GLenum programInterface, const GLchar *name ) */ 6827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 6837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceIndex__IILjava_lang_String_2 6847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 6857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 6867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 6877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 6887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint _returnValue = 0; 6897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char* _nativename = 0; 6907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!name) { 6927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 6937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 6947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "name == null"; 6957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 6967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 6977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 6987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 6997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glGetProgramResourceIndex( 7007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 7017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 7027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLchar *)_nativename 7037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 7047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 7067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_nativename) { 7077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 7087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 7117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 7127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jint)_returnValue; 7147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 7157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceName ( GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name ) */ 7177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jstring 7187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceName 7197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index) { 7207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 7217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 7227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 7237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 7257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 7267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceiv__IIII_3III_3II_3II 7277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse 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) { 7287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 7297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 7307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 7317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props_base = (GLenum *) 0; 7327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsRemaining; 7337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props = (GLenum *) 0; 7347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length_base = (GLsizei *) 0; 7357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthRemaining; 7367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length = (GLsizei *) 0; 7377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 7387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsRemaining; 7397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 7407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!props_ref) { 7427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "props == null"; 7457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (propsOffset < 0) { 7487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "propsOffset < 0"; 7517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _propsRemaining = _env->GetArrayLength(props_ref) - propsOffset; 7547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props_base = (GLenum *) 7553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(props_ref, (jboolean *)0); 7567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props = props_base + propsOffset; 7577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7586aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 7596aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 7606aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 7616aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 7626aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 7636aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 7646aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 7656aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 7666aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 7676aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 7686aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 7697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 7727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 7757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (paramsOffset < 0) { 7787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 7797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 7807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "paramsOffset < 0"; 7817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 7827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 7837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 7847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 7853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 7867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + paramsOffset; 7877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramResourceiv( 7897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 7907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 7917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 7927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)propCount, 7937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum *)props, 7947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)bufSize, 7957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei *)length, 7967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 7977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 7987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 7997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 8007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 8013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 8027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 8037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (length_base) { 8053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 8067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 8077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (props_base) { 8093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(props_ref, (jint*)props_base, 8107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 8117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 8137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 8147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramResourceiv ( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params ) */ 8187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 8197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceiv__IIIILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 8207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jint index, jint propCount, jobject props_buf, jint bufSize, jobject length_buf, jobject params_buf) { 82184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 82284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 82384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 8243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _propsArray = (jintArray) 0; 8257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsBufferOffset = (jint) 0; 8263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 8277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthBufferOffset = (jint) 0; 8283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _paramsArray = (jintArray) 0; 8297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsBufferOffset = (jint) 0; 8307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _propsRemaining; 8317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLenum *props = (GLenum *) 0; 8327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _lengthRemaining; 8337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLsizei *length = (GLsizei *) 0; 8347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _paramsRemaining; 8357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 8367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 83784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!props_buf) { 83884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 83984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 84084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "props == null"; 84184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 84284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi props = (GLenum *)getPointer(_env, props_buf, (jarray*)&_propsArray, &_propsRemaining, &_propsBufferOffset); 8446aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 8456aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 8466aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 84784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 84884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 84984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 85084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 85184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 85284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 8547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (props == NULL) { 8553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _propsBase = (char *)_env->GetIntArrayElements(_propsArray, (jboolean *) 0); 8567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall props = (GLenum *) (_propsBase + _propsBufferOffset); 8577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8586aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 8593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 8607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 8617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 8633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_paramsArray, (jboolean *) 0); 8647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _paramsBufferOffset); 8657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramResourceiv( 8677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 8687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 8697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 8707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)propCount, 8717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum *)props, 8727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)bufSize, 8737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei *)length, 8747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 8757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 87684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 87784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 8787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_paramsArray) { 87984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_paramsArray, (jint*)params, _exception ? JNI_ABORT : 0); 8807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_lengthArray) { 88284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, _exception ? JNI_ABORT : 0); 8837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 8847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_propsArray) { 8853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_propsArray, (jint*)props, JNI_ABORT); 8867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 88784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 88884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 88984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 8917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 8927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLint glGetProgramResourceLocation ( GLuint program, GLenum programInterface, const GLchar *name ) */ 8937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 8947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramResourceLocation__IILjava_lang_String_2 8957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint programInterface, jstring name) { 8967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 8977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 8987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 8997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint _returnValue = 0; 9007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char* _nativename = 0; 9017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!name) { 9037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 9047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 9057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "name == null"; 9067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 9077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 9097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glGetProgramResourceLocation( 9117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 9127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)programInterface, 9137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLchar *)_nativename 9147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 9177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_nativename) { 9187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 9197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 9227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 9237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 9247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jint)_returnValue; 9257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glUseProgramStages ( GLuint pipeline, GLbitfield stages, GLuint program ) */ 9287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 9297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glUseProgramStages__III 9307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint stages, jint program) { 9317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glUseProgramStages( 9327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 9337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)stages, 9347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program 9357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glActiveShaderProgram ( GLuint pipeline, GLuint program ) */ 9397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 9407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glActiveShaderProgram__II 9417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint program) { 9427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glActiveShaderProgram( 9437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 9447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program 9457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 9467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 9477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLuint glCreateShaderProgramv ( GLenum type, GLsizei count, const GLchar *const *strings ) */ 9497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jint 9507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glCreateShaderProgramv 9517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint type, jobjectArray strings) { 9527f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jint _exception = 0; 9537f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const char * _exceptionType = NULL; 9547f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const char * _exceptionMessage = NULL; 9557f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos GLsizei _count; 9567f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos const GLchar** _strings = NULL; 9577f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jstring* _jstrings = NULL; 9587f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos GLuint _returnValue = 0; 9597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 9607f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!strings) { 9617f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9627f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 9637f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "strings == null"; 9647f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9657f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9667f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9677f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _count = _env->GetArrayLength(strings); 9687f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9697f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _strings = (const GLchar**) calloc(_count, sizeof(const GLchar*)); 9707f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_strings) { 9717f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9727f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/OutOfMemoryError"; 9737f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "out of memory"; 9747f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9757f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9767f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9777f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _jstrings = (jstring*) calloc(_count, sizeof(jstring)); 9787f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_jstrings) { 9797f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9807f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/OutOfMemoryError"; 9817f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "out of memory"; 9827f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9837f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9847f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9857f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos for(int i = 0; i < _count; i++) { 9867f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _jstrings[i] = (jstring) _env->GetObjectArrayElement(strings, i); 9877f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (!_jstrings[i]) { 9887f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exception = 1; 9897f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 9907f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _exceptionMessage = "strings == null"; 9917f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos goto exit; 9927f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9937f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _strings[i] = _env->GetStringUTFChars(_jstrings[i], 0); 9947f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 9957f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos 9967f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _returnValue = glCreateShaderProgramv((GLenum)type, _count, _strings); 9977f16ec21711fdb97930166175c29d8235f75202ePablo Ceballosexit: 9987f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings && _jstrings) { 9997f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos for(int i = 0; i < _count; i++) { 10007f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings[i] && _jstrings[i]) { 10017f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos _env->ReleaseStringUTFChars(_jstrings[i], _strings[i]); 10027f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10037f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10047f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10057f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_strings) { 10067f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos free(_strings); 10077f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10087f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_jstrings) { 10097f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos free(_jstrings); 10107f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10117f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos if (_exception) { 10127f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 10137f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos } 10147f16ec21711fdb97930166175c29d8235f75202ePablo Ceballos return (jint)_returnValue; 10157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindProgramPipeline ( GLuint pipeline ) */ 10177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindProgramPipeline__I 10197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 10207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindProgramPipeline( 10217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 10227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 10267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDeleteProgramPipelines__I_3II 10287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 10297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 10307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 10317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 10327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines_base = (GLuint *) 0; 10337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!pipelines_ref) { 10377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 10387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 10397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "pipelines == null"; 10407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 10417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 10437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 10447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 10457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 10467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 10477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(pipelines_ref) - offset; 10497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines_base = (GLuint *) 10503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 10517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = pipelines_base + offset; 10527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDeleteProgramPipelines( 10547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 10577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 10597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines_base) { 10603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 10617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 10627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 10647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 10657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 10677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 10687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glDeleteProgramPipelines ( GLsizei n, const GLuint *pipelines ) */ 10697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 10707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 10717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 107284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 107384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 107484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 10753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 10767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 10777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 10787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 10797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 108084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!pipelines_buf) { 108184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 108284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 108384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "pipelines == null"; 108484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 108584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 10863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 10877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines == NULL) { 10883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 10897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 10907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 10917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glDeleteProgramPipelines( 10927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 10937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 10947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 109584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 109684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 10977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 10983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)pipelines, JNI_ABORT); 10997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 110084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 110184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 110284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 11037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 11067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGenProgramPipelines__I_3II 11087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray pipelines_ref, jint offset) { 11097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 11107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 11117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 11127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines_base = (GLuint *) 0; 11137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 11147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 11157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!pipelines_ref) { 11177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 11187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 11197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "pipelines == null"; 11207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 11217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 11237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 11247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 11257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 11267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 11277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(pipelines_ref) - offset; 11297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines_base = (GLuint *) 11303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(pipelines_ref, (jboolean *)0); 11317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = pipelines_base + offset; 11327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGenProgramPipelines( 11347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 11357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 11367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 11397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines_base) { 11403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(pipelines_ref, (jint*)pipelines_base, 11417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 11427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 11447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 11457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGenProgramPipelines ( GLsizei n, GLuint *pipelines ) */ 11497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGenProgramPipelines__ILjava_nio_IntBuffer_2 11517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject pipelines_buf) { 115284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 115384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 115484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 11553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 11567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 11577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 11587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *pipelines = (GLuint *) 0; 11597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 116084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!pipelines_buf) { 116184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 116284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 116384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "pipelines == null"; 116484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 116584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 11663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pipelines = (GLuint *)getPointer(_env, pipelines_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 11677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (pipelines == NULL) { 11683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _pipelinesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 11697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall pipelines = (GLuint *) (_pipelinesBase + _bufferOffset); 11707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGenProgramPipelines( 11727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)n, 11737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)pipelines 11747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 117584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 117684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 11777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 117884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)pipelines, _exception ? JNI_ABORT : 0); 117984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 118084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 118184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 11827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 11837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* GLboolean glIsProgramPipeline ( GLuint pipeline ) */ 11867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jboolean 11877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glIsProgramPipeline__I 11887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 11897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean _returnValue; 11907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _returnValue = glIsProgramPipeline( 11917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 11927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 11937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return (jboolean)_returnValue; 11947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 11957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 11967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 11977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 11987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramPipelineiv__II_3II 11997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jintArray params_ref, jint offset) { 12007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 12017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 12027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 12037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 12047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 12057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 12067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 12087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 12097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 12107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 12117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 12127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 12147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 12157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 12167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 12177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 12187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 12207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 12213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 12227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 12237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv( 12257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 12267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 12277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 12287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 12317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 12323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 12337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 12347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 12367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 12377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineiv ( GLuint pipeline, GLenum pname, GLint *params ) */ 12417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 12437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline, jint pname, jobject params_buf) { 124484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 124584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 124684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 12473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 12487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 12497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 12507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 12517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 125284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 125384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 125484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 125584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 125684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 125784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 12583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 12597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 12603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 12617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 12627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv( 12647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline, 12657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 12667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 12677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 126884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 126984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 12707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 127184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 127284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 127384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 127484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 12757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 12767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1i ( GLuint program, GLint location, GLint v0 ) */ 12797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1i__III 12817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 12827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1i( 12837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0 12867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 12887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 12897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2i ( GLuint program, GLint location, GLint v0, GLint v1 ) */ 12907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 12917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2i__IIII 12927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 12937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2i( 12947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 12957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 12967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 12977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1 12987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 12997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2 ) */ 13027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3i__IIIII 13047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 13057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3i( 13067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 13097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1, 13107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v2 13117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4i ( GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3 ) */ 13157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4i__IIIIII 13177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 13187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4i( 13197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v0, 13227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v1, 13237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v2, 13247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)v3 13257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1ui ( GLuint program, GLint location, GLuint v0 ) */ 13297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1ui__III 13317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0) { 13327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1ui( 13337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0 13367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2ui ( GLuint program, GLint location, GLuint v0, GLuint v1 ) */ 13407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2ui__IIII 13427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1) { 13437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2ui( 13447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 13477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1 13487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 13527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3ui__IIIII 13547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2) { 13557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3ui( 13567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 13597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1, 13607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v2 13617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4ui ( GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 13657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4ui__IIIIII 13677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint v0, jint v1, jint v2, jint v3) { 13687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4ui( 13697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v0, 13727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v1, 13737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v2, 13747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)v3 13757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1f ( GLuint program, GLint location, GLfloat v0 ) */ 13797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1f__IIF 13817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0) { 13827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1f( 13837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0 13867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 13887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 13897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2f ( GLuint program, GLint location, GLfloat v0, GLfloat v1 ) */ 13907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 13917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2f__IIFF 13927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1) { 13937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2f( 13947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 13957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 13967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 13977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1 13987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 13997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2 ) */ 14027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3f__IIFFF 14047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2) { 14057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3f( 14067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 14097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1, 14107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v2 14117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4f ( GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3 ) */ 14157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4f__IIFFFF 14177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jfloat v0, jfloat v1, jfloat v2, jfloat v3) { 14187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4f( 14197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v0, 14227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v1, 14237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v2, 14247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat)v3 14257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 14297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1iv__III_3II 14317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 14327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 14337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 14347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 14357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 14367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 14407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 14437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 14467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 14477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 14487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 14497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 14507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 14527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 14533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 14547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 14557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1iv( 14577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 14607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 14617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 14627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 14647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 14653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 14667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 14677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 14697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 14707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 14727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 14737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 14747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 14757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 14767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 147784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 147884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 147984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 14803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 14817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 14827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 14837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 14847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 148584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 148684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 148784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 148884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 148984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 149084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 14913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 14927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 14933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 14947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 14957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 14967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1iv( 14977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 14987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 14997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 150284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 150384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 15047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 15053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 15067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 150784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 150884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 150984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2iv__III_3II 15157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 15167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 15177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 15187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 15197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 15207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 15247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 15257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 15267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 15277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 15287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 15307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 15317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 15327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 15337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 15347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 15367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 15373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 15387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 15397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2iv( 15417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 15467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 15487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 15493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 15507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 15517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 15537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 15547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 15607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 156184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 156284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 156384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 15643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 15657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 15667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 15677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 15687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 156984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 157084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 157184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 157284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 157384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 157484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 15767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 15773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 15787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 15797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 15807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2iv( 15817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 15827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 15837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 15847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 15857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 158684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 158784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 15887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 15893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 15907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 159184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 159284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 159384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 15957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 15967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 15977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 15987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3iv__III_3II 15997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 16007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 16017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 16027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 16037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 16047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 16067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 16087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 16117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 16147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 16177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 16207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 16213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 16227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 16237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3iv( 16257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 16267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 16277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 16287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 16297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 16307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 16327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 16333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 16347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 16357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 16377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 16387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 16427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 16447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 164584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 164684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 164784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 16483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 16497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 16507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 16527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 165384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 165484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 165584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 165684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 165784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 165884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 16593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 16607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 16613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 16627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 16637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3iv( 16657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 16667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 16677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 16687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 16697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 167084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 167184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 16727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 16733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 16747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 167584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 167684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 167784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 16787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 16797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 16817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 16827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4iv__III_3II 16837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 16847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 16857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 16867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 16877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value_base = (GLint *) 0; 16887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 16897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 16907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 16917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 16927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 16947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 16957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 16967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 16977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 16987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 16997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 17017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 17047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLint *) 17053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 17067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 17077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4iv( 17097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 17137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 17167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 17173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 17187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 17197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 17217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 17227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4iv ( GLuint program, GLint location, GLsizei count, const GLint *value ) */ 17267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 17287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 172984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 173084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 173184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 17323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 17337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 17347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *value = (GLint *) 0; 17367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 173784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 173884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 173984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 174084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 174184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 174284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 17433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 17447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 17453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 17467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 17477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4iv( 17497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)value 17537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 175484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 175584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 17567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 17573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 17587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 175984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 176084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 176184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 17627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 17637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 17657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 17667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1uiv__III_3II 17677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 17687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 17697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 17707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 17717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 17727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 17737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 17747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 17767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 17777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 17797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 17827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 17837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 17847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 17857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 17867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 17877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 17887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 17893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 17907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 17917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1uiv( 17937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 17947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 17957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 17967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 17977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 17987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 17997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 18007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 18013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 18027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 18037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 18057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 18067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 18127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 181384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 181484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 181584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 18163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 18177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 18187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 18207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 182184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 182284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 182384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 182484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 182584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 182684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 18273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 18287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 18293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 18307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 18317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1uiv( 18337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 183884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 183984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 18407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 18413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 18427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 184384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 184484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 184584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 18467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2uiv__III_3II 18517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 18527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 18537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 18547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 18557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 18567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 18577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 18587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 18607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 18637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 18647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 18667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 18677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 18687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 18697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 18707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 18727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 18733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 18747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 18757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2uiv( 18777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 18787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 18797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 18807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 18817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 18827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 18847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 18853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 18867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 18877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 18897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 18907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 18917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 18927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 18937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 18947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 18957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 18967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 189784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 189884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 189984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 19003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 19017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 19027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 19047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 190584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 190684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 190784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 190884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 190984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 191084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 19127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 19133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 19147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 19157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2uiv( 19177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 19217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 192284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 192384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 19247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 19253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 19267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 192784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 192884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 192984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 19337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 19347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3uiv__III_3II 19357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 19367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 19377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 19387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 19397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 19407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 19427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 19447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 19477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 19507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 19517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 19527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 19537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 19547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 19567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 19573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 19587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 19597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3uiv( 19617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 19627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 19637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 19647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 19657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 19667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 19687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 19693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 19707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 19717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 19737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 19747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 19757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 19767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 19777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 19787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 19797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 19807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 198184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 198284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 198384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 19843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 19857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 19867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 19877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 19887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 198984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 199084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 199184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 199284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 199384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 199484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 19967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 19973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 19987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 19997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3uiv( 20017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 20057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 200684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 200784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 20087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 20093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 20107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 201184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 201284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 201384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 20177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4uiv__III_3II 20197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jintArray value_ref, jint offset) { 20207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 20217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 20227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 20237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value_base = (GLuint *) 0; 20247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 20267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 20287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 20297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 20307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 20317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 20327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 20347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 20357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 20367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 20377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 20387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 20407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLuint *) 20413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 20427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 20437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4uiv( 20457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 20497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 20507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 20527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 20533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 20547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 20557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 20577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 20587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 20617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4uiv ( GLuint program, GLint location, GLsizei count, const GLuint *value ) */ 20627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 20637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 20647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 206584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 206684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 206784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 20683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 20697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 20707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 20717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLuint *value = (GLuint *) 0; 20727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 207384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 207484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 207584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 207684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 207784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 207884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 20807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 20813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 20827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 20837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 20847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4uiv( 20857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 20867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 20877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 20887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint *)value 20897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 209084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 209184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 20927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 20933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 20947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 209584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 209684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 209784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 20997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1fv__III_3FI 21037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 21047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 21057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 21067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 21077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 21087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 21127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 21157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 21187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 21217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 21227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 21247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 21253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 21267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 21277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1fv( 21297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 21347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 21367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 21373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 21387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 21397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 21417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 21427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 21447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform1fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 21487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 214984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 215084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 215184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 21523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 21537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 21547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 215784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 215884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 215984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 216084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 216184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 216284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 21633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 21647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 21653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 21667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 21677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 21687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform1fv( 21697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 21707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 21717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 21727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 21737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 217484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 217584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 21767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 21773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 21787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 217984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 218084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 218184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 21827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 21837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 21857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 21867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2fv__III_3FI 21877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 21887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 21897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 21907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 21917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 21927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 21937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 21947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 21957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 21967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 21977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 21987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 21997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 22027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 22057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 22087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 22093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 22107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 22117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2fv( 22137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 22177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 22187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 22207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 22213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 22227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 22237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 22257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 22267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform2fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 22307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 22327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 223384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 223484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 223584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 22363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 22377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 22387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 224184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 224284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 224384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 224484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 224584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 224684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 22473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 22487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 22493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 22507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 22517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform2fv( 22537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 22567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 22577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 225884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 225984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 22607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 22613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 22627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 226384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 226484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 226584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 22667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 22677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 22697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 22707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3fv__III_3FI 22717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 22727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 22737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 22747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 22757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 22767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 22777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 22787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 22807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 22837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 22867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 22877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 22887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 22897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 22907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 22917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 22927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 22933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 22947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 22957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 22967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3fv( 22977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 22987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 22997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 23047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 23053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 23067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 23077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 23097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 23107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform3fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 23147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 23167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 231784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 231884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 231984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 23203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 23217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 23227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 232584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 232684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 232784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 232884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 232984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 233084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 23313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 23327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 23333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 23347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 23357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform3fv( 23377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 23387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 234284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 234384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 23447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 23453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 23467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 234784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 234884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 234984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 23507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 23537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4fv__III_3FI 23557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jfloatArray value_ref, jint offset) { 23567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 23577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 23587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 23597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 23607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 23617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 23627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 23647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 23677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 23707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 23717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 23727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 23737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 23747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 23767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 23773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 23787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 23797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4fv( 23817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 23827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 23837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 23847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 23857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 23867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 23887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 23893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 23907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 23917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 23937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 23947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 23957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 23967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 23977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniform4fv ( GLuint program, GLint location, GLsizei count, const GLfloat *value ) */ 23987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 23997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 24007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jobject value_buf) { 240184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 240284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 240384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 24043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 24057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 24067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 240984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 241084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 241184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 241284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 241384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 241484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 24153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 24167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 24173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 24187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 24197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniform4fv( 24217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 242684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 242784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 24287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 24293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 24307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 243184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 243284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 243384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 24347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 24377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 24387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2fv__IIIZ_3FI 24397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 24407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 24417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 24427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 24437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 24447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 24487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 24517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 24547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 24557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 24567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 24577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 24587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 24607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 24613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 24627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 24637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2fv( 24657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 24667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 24677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 24687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 24697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 24707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 24717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 24737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 24743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 24757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 24767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 24787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 24797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 24807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 24817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 24827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 24837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 24847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 24857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 248684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 248784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 248884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 24893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 24907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 24917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 24927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 24937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 249484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 249584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 249684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 249784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 249884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 249984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 25003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 25017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 25023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 25037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 25047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2fv( 25067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 251284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 251384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 25147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 25153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 25167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 251784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 251884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 251984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 25207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3fv__IIIZ_3FI 25257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 25267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 25277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 25287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 25297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 25307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 25347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 25357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 25367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 25377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 25387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 25407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 25417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 25427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 25437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 25447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 25467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 25473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 25487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 25497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3fv( 25517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 25577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 25597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 25603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 25617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 25627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 25647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 25657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 25677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 25687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 25697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 25707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 25717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 257284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 257384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 257484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 25753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 25767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 25777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 25787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 25797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 258084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 258184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 258284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 258384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 258484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 258584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 25863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 25877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 25883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 25897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 25907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 25917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3fv( 25927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 25937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 25947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 25957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 25967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 25977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 259884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 259984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 26007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 26013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 26027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 260384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 260484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 260584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4fv__IIIZ_3FI 26117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 26127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 26137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 26147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 26157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 26167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 26207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 26237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 26267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 26277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 26287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 26297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 26307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 26327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 26333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 26347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 26357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4fv( 26377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 26397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 26407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 26417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 26427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 26437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 26457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 26463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 26477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 26487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 26507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 26517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 26577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 265884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 265984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 266084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 26613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 26627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 26637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 26647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 26657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 266684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 266784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 266884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 266984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 267084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 267184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 26737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 26743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 26757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 26767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 26777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4fv( 26787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 26797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 26807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 26817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 26827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 26837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 268484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 268584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 26867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 26873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 26887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 268984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 269084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 269184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 26937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 26947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 26957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 26967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x3fv__IIIZ_3FI 26977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 26987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 26997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 27007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 27017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 27027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 27067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 27097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 27127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 27157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 27187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 27193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 27207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 27217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x3fv( 27237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 27247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 27297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 27317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 27323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 27337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 27347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 27367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 27377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 27437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 274484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 274584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 274684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 27473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 27487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 27497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 275284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 275384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 275484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 275584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 275684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 275784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 27583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 27597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 27603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 27617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 27627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x3fv( 27647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 27657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 27667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 27677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 27687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 27697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 277084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 277184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 27727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 27733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 27747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 277584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 277684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 277784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 27787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 27797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 27817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 27827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x2fv__IIIZ_3FI 27837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 27847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 27857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 27867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 27877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 27887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 27897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 27907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 27917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 27927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 27947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 27957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 27967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 27977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 27987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 27997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 28017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 28047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 28053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 28067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 28077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x2fv( 28097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 28147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 28157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 28177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 28183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 28197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 28207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 28227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 28237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 28277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 28297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 283084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 283184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 283284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 28333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 28347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 28357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 28367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 28377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 283884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 283984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 284084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 284184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 284284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 284384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 28443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 28457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 28463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 28477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 28487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x2fv( 28507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 28557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 285684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 285784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 28587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 28593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 28607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 286184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 286284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 286384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 28647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 28657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 28677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 28687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x4fv__IIIZ_3FI 28697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 28707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 28717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 28727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 28737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 28747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 28757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 28767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 28787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 28797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 28817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 28847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 28857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 28867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 28877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 28887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 28897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 28907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 28913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 28927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 28937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 28947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x4fv( 28957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 28967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 28977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 28987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 28997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 29007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 29037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 29043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 29057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 29067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 29087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 29097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix2x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 29137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 29157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 291684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 291784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 291884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 29193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 29207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 29217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 29227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 29237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 292484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 292584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 292684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 292784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 292884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 292984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 29303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 29317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 29323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 29337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 29347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix2x4fv( 29367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 29377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 29387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 29397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 29407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 29417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 294284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 294384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 29447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 29453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 29467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 294784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 294884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 294984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 29507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 29537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 29547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x2fv__IIIZ_3FI 29557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 29567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 29577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 29587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 29597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 29607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 29617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 29627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 29647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 29657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 29667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 29677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 29687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 29707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 29717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 29727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 29737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 29747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 29767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 29773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 29787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 29797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x2fv( 29817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 29827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 29837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 29847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 29857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 29867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 29877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 29897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 29903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 29917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 29927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 29947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 29957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 29967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 29977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 29987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x2fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 29997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 30017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 300284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 300384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 300484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 30053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 30067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 30077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 30097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 301084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 301184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 301284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 301384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 301484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 301584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 30163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 30177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 30183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 30197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 30207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x2fv( 30227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 30237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 30247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 30257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 30267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 30277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 302884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 302984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 30307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 30313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 30327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 303384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 303484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 303584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 30367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 30397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x4fv__IIIZ_3FI 30417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 30427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 30437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 30447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 30457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 30467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 30487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 30507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 30517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 30527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 30537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 30547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 30567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 30577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 30587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 30597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 30607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 30627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 30633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 30647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 30657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x4fv( 30677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 30687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 30697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 30707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 30717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 30727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 30737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 30757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 30763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 30777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 30787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 30807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 30817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 30827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 30837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 30847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix3x4fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 30857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 30867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 30877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 308884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 308984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 309084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 30913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 30927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 30937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 30947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 30957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 309684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 309784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 309884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 309984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 310084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 310184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 31037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 31043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 31057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 31067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix3x4fv( 31087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 31097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 31107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 31117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 31127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 31137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 311484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 311584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 31167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 31173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 31187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 311984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 312084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 312184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 31257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x3fv__IIIZ_3FI 31277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 31287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 31297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 31307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 31317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value_base = (GLfloat *) 0; 31327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 31337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 31347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!value_ref) { 31367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 31377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 31387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "value == null"; 31397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 31407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 31427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 31437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 31447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 31457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 31467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 31487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value_base = (GLfloat *) 31493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 31507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = value_base + offset; 31517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x3fv( 31537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 31547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 31557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 31567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 31577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 31587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 31597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 31617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value_base) { 31623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 31637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall JNI_ABORT); 31647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 31667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 31677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 31697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 31707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glProgramUniformMatrix4x3fv ( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 31717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 31727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 31737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jint count, jboolean transpose, jobject value_buf) { 317484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 317584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 317684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 31773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 31787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 31797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 31807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *value = (GLfloat *) 0; 31817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 318284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 318384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 318484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 318584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 318684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 318784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 31897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (value == NULL) { 31903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 31917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 31927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 31937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glProgramUniformMatrix4x3fv( 31947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)program, 31957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)location, 31967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)count, 31977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)transpose, 31987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)value 31997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 320084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 320184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 32027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 32033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 32047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 320584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 320684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 320784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 32087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glValidateProgramPipeline ( GLuint pipeline ) */ 32117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glValidateProgramPipeline__I 32137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pipeline) { 32147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glValidateProgramPipeline( 32157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)pipeline 32167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall#include <stdlib.h> 32207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetProgramPipelineInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 32227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic jstring android_glGetProgramPipelineInfoLog(JNIEnv *_env, jobject, jint shader) { 32237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint infoLen = 0; 32247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 32257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!infoLen) { 32267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return _env->NewStringUTF(""); 32277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall char* buf = (char*) malloc(infoLen); 32297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (buf == NULL) { 32307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/OutOfMemoryError", "out of memory"); 32317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return NULL; 32327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetProgramPipelineInfoLog(shader, infoLen, NULL, buf); 32347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jstring result = _env->NewStringUTF(buf); 32357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall free(buf); 32367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return result; 32377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindImageTexture ( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format ) */ 32397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindImageTexture__IIIZIII 32417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint unit, jint texture, jint level, jboolean layered, jint layer, jint access, jint format) { 32427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindImageTexture( 32437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)unit, 32447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)texture, 32457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 32467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)layered, 32477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)layer, 32487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)access, 32497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)format 32507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 32547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetBooleani_v__II_3ZI 32567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jbooleanArray data_ref, jint offset) { 32577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 32587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 32597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 32607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data_base = (GLboolean *) 0; 32617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 32627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data = (GLboolean *) 0; 32637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!data_ref) { 32657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 32667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 32677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "data == null"; 32687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 32697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 32717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 32727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 32737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 32747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 32757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 32777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data_base = (GLboolean *) 32783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetBooleanArrayElements(data_ref, (jboolean *)0); 32797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data = data_base + offset; 32807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetBooleani_v( 32827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 32837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 32847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean *)data 32857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 32867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 32887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (data_base) { 32893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(data_ref, (jboolean*)data_base, 32907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 32917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 32937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 32947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 32957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 32967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 32977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetBooleani_v ( GLenum target, GLuint index, GLboolean *data ) */ 32987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 32997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetBooleani_v__IILjava_nio_IntBuffer_2 33007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 330184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 330284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 330384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 33043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 33057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 33067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 33077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLboolean *data = (GLboolean *) 0; 33087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 330984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!data_buf) { 331084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 331184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 331284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "data == null"; 331384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 331484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 33153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLboolean *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 33167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (data == NULL) { 33173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 33187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall data = (GLboolean *) (_dataBase + _bufferOffset); 33197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetBooleani_v( 33217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 33227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 33237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean *)data 33247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 332584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 332684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 33277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 332884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)data, _exception ? JNI_ABORT : 0); 332984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 333084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 333184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 33327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glMemoryBarrier ( GLbitfield barriers ) */ 33367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glMemoryBarrier__I 33387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint barriers) { 33397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glMemoryBarrier( 33407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)barriers 33417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glMemoryBarrierByRegion ( GLbitfield barriers ) */ 33457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glMemoryBarrierByRegion__I 33477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint barriers) { 33487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glMemoryBarrierByRegion( 33497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)barriers 33507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glTexStorage2DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations ) */ 33547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glTexStorage2DMultisample__IIIIIZ 33567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jboolean fixedsamplelocations) { 33577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glTexStorage2DMultisample( 33587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 33597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)samples, 33607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)internalformat, 33617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)width, 33627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)height, 33637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)fixedsamplelocations 33647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 33657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 33667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 33687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 33697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetMultisamplefv__II_3FI 33707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jint index, jfloatArray val_ref, jint offset) { 33717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 33727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 33737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 33747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val_base = (GLfloat *) 0; 33757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 33767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val = (GLfloat *) 0; 33777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!val_ref) { 33797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 33807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 33817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "val == null"; 33827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 33837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 33857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 33867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 33877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 33887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 33897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 33907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(val_ref) - offset; 33917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val_base = (GLfloat *) 33923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(val_ref, (jboolean *)0); 33937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val = val_base + offset; 33947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 33957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetMultisamplefv( 33967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 33977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 33987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)val 33997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 34007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 34027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (val_base) { 34033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(val_ref, (jfloat*)val_base, 34047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 34057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 34077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 34087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 34107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetMultisamplefv ( GLenum pname, GLuint index, GLfloat *val ) */ 34127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 34137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 34147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint pname, jint index, jobject val_buf) { 341584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 341684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 341784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 34183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 34197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 34207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 34217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *val = (GLfloat *) 0; 34227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 342384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!val_buf) { 342484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 342584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 342684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "val == null"; 342784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 342884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 34293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi val = (GLfloat *)getPointer(_env, val_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 34307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (val == NULL) { 34313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 34327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall val = (GLfloat *) (_valBase + _bufferOffset); 34337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetMultisamplefv( 34357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 34367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)index, 34377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)val 34387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 343984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 344084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 34417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 344284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseFloatArrayElements(_array, (jfloat*)val, _exception ? JNI_ABORT : 0); 344384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 344484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 344584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 34467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 34487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glSampleMaski ( GLuint maskNumber, GLbitfield mask ) */ 34507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 34517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glSampleMaski__II 34527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint maskNumber, jint mask) { 34537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glSampleMaski( 34547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)maskNumber, 34557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLbitfield)mask 34567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 34577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 34587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 34607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 34617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameteriv__III_3II 34627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jintArray params_ref, jint offset) { 34637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 34647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 34657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 34667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params_base = (GLint *) 0; 34677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 34687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 34697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 34717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 34727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 34737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 34747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 34757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 34777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 34787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 34797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 34807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 34817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 34837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLint *) 34843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 34857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 34867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameteriv( 34887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 34897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 34907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 34917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 34927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 34937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 34947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 34957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 34963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 34977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 34987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 34997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 35007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 35017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 35037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint *params ) */ 35057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 35067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 35077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 350884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 350984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 351084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 35113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 35127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 35137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 35147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLint *params = (GLint *) 0; 35157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 351684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 351784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 351884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 351984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 352084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 352184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 35223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 35237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 35243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 35257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 35267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameteriv( 35287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 35297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 35307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 35317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint *)params 35327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 353384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 353484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 35357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 353684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 353784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 353884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 353984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 35407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 35427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 35447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 35457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameterfv__III_3FI 35467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jfloatArray params_ref, jint offset) { 35477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _exception = 0; 35487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionType = NULL; 35497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall const char * _exceptionMessage = NULL; 35507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params_base = (GLfloat *) 0; 35517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 35527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params = (GLfloat *) 0; 35537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (!params_ref) { 35557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 35567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 35577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "params == null"; 35587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 35597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (offset < 0) { 35617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception = 1; 35627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 35637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exceptionMessage = "offset < 0"; 35647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall goto exit; 35657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 35677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params_base = (GLfloat *) 35683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 35697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = params_base + offset; 35707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameterfv( 35727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 35737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 35747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 35757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)params 35767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 35777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallexit: 35797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params_base) { 35803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 35817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall _exception ? JNI_ABORT: 0); 35827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_exception) { 35847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 35857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 35867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 35877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 35887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat *params ) */ 35897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 35907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 35917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint pname, jobject params_buf) { 359284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 359384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 359484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 35953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 35967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _bufferOffset = (jint) 0; 35977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jint _remaining; 35987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall GLfloat *params = (GLfloat *) 0; 35997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 360084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 360184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 360284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 360384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 360484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 360584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 36063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 36077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (params == NULL) { 36083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 36097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall params = (GLfloat *) (_paramsBase + _bufferOffset); 36107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 36117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glGetTexLevelParameterfv( 36127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)target, 36137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)level, 36147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)pname, 36157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLfloat *)params 36167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 361784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 361884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 36197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (_array) { 362084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0); 362184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 362284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 362384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 36247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 36257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glBindVertexBuffer ( GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride ) */ 36287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glBindVertexBuffer__IIJI 36307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint bindingindex, jint buffer, jlong offset, jint stride) { 36317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall if (sizeof(GLintptr) != sizeof(jlong) && (offset < LONG_MIN || offset > LONG_MAX)) { 36327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "offset too large"); 36337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return; 36347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall } 36357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glBindVertexBuffer( 36367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex, 36377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)buffer, 36387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLintptr)offset, 36397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLsizei)stride 36407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribFormat ( GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset ) */ 36437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribFormat__IIIZI 36457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jboolean normalized, jint relativeoffset) { 36467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribFormat( 36477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 36487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)size, 36497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)type, 36507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLboolean)normalized, 36517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)relativeoffset 36527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribIFormat ( GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset ) */ 36567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribIFormat__IIII 36587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint size, jint type, jint relativeoffset) { 36597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribIFormat( 36607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 36617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLint)size, 36627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLenum)type, 36637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)relativeoffset 36647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexAttribBinding ( GLuint attribindex, GLuint bindingindex ) */ 36687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexAttribBinding__II 36707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint attribindex, jint bindingindex) { 36717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexAttribBinding( 36727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)attribindex, 36737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex 36747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall/* void glVertexBindingDivisor ( GLuint bindingindex, GLuint divisor ) */ 36787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic void 36797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallandroid_glVertexBindingDivisor__II 36807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (JNIEnv *_env, jobject _this, jint bindingindex, jint divisor) { 36817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall glVertexBindingDivisor( 36827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)bindingindex, 36837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall (GLuint)divisor 36847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall ); 36857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 36867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 36877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallstatic const char *classPathName = "android/opengl/GLES31"; 36887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 368976f6a86de25e1bf74717e047e55fd44b089673f3Daniel Micaystatic const JNINativeMethod methods[] = { 36907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"_nativeClassInit", "()V", (void*)nativeClassInit }, 36917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDispatchCompute", "(III)V", (void *) android_glDispatchCompute__III }, 36927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDispatchComputeIndirect", "(J)V", (void *) android_glDispatchComputeIndirect }, 36937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDrawArraysIndirect", "(IJ)V", (void *) android_glDrawArraysIndirect }, 36947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDrawElementsIndirect", "(IIJ)V", (void *) android_glDrawElementsIndirect }, 36957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glFramebufferParameteri", "(III)V", (void *) android_glFramebufferParameteri__III }, 36967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetFramebufferParameteriv", "(II[II)V", (void *) android_glGetFramebufferParameteriv__II_3II }, 36977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetFramebufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferParameteriv__IILjava_nio_IntBuffer_2 }, 36987ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramInterfaceiv", "(III[II)V", (void *) android_glGetProgramInterfaceiv__III_3II }, 36997ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramInterfaceiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetProgramInterfaceiv__IIILjava_nio_IntBuffer_2 }, 37007ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceIndex", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceIndex__IILjava_lang_String_2 }, 37017ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceName", "(III)Ljava/lang/String;", (void *) android_glGetProgramResourceName }, 37027ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceiv", "(IIII[III[II[II)V", (void *) android_glGetProgramResourceiv__IIII_3III_3II_3II }, 37037ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse 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 }, 37047ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramResourceLocation", "(IILjava/lang/String;)I", (void *) android_glGetProgramResourceLocation__IILjava_lang_String_2 }, 37057ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glUseProgramStages", "(III)V", (void *) android_glUseProgramStages__III }, 37067ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glActiveShaderProgram", "(II)V", (void *) android_glActiveShaderProgram__II }, 37077ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glCreateShaderProgramv", "(I[Ljava/lang/String;)I", (void *) android_glCreateShaderProgramv }, 37087ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindProgramPipeline", "(I)V", (void *) android_glBindProgramPipeline__I }, 37097ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDeleteProgramPipelines", "(I[II)V", (void *) android_glDeleteProgramPipelines__I_3II }, 37107ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glDeleteProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteProgramPipelines__ILjava_nio_IntBuffer_2 }, 37117ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGenProgramPipelines", "(I[II)V", (void *) android_glGenProgramPipelines__I_3II }, 37127ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGenProgramPipelines", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenProgramPipelines__ILjava_nio_IntBuffer_2 }, 37137ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glIsProgramPipeline", "(I)Z", (void *) android_glIsProgramPipeline__I }, 37147ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineiv", "(II[II)V", (void *) android_glGetProgramPipelineiv__II_3II }, 37157ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramPipelineiv__IILjava_nio_IntBuffer_2 }, 37167ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1i", "(III)V", (void *) android_glProgramUniform1i__III }, 37177ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2i", "(IIII)V", (void *) android_glProgramUniform2i__IIII }, 37187ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3i", "(IIIII)V", (void *) android_glProgramUniform3i__IIIII }, 37197ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4i", "(IIIIII)V", (void *) android_glProgramUniform4i__IIIIII }, 37207ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1ui", "(III)V", (void *) android_glProgramUniform1ui__III }, 37217ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2ui", "(IIII)V", (void *) android_glProgramUniform2ui__IIII }, 37227ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3ui", "(IIIII)V", (void *) android_glProgramUniform3ui__IIIII }, 37237ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4ui", "(IIIIII)V", (void *) android_glProgramUniform4ui__IIIIII }, 37247ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1f", "(IIF)V", (void *) android_glProgramUniform1f__IIF }, 37257ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2f", "(IIFF)V", (void *) android_glProgramUniform2f__IIFF }, 37267ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3f", "(IIFFF)V", (void *) android_glProgramUniform3f__IIFFF }, 37277ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4f", "(IIFFFF)V", (void *) android_glProgramUniform4f__IIFFFF }, 37287ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1iv", "(III[II)V", (void *) android_glProgramUniform1iv__III_3II }, 37297ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1iv__IIILjava_nio_IntBuffer_2 }, 37307ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2iv", "(III[II)V", (void *) android_glProgramUniform2iv__III_3II }, 37317ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2iv__IIILjava_nio_IntBuffer_2 }, 37327ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3iv", "(III[II)V", (void *) android_glProgramUniform3iv__III_3II }, 37337ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3iv__IIILjava_nio_IntBuffer_2 }, 37347ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4iv", "(III[II)V", (void *) android_glProgramUniform4iv__III_3II }, 37357ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4iv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4iv__IIILjava_nio_IntBuffer_2 }, 37367ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1uiv", "(III[II)V", (void *) android_glProgramUniform1uiv__III_3II }, 37377ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform1uiv__IIILjava_nio_IntBuffer_2 }, 37387ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2uiv", "(III[II)V", (void *) android_glProgramUniform2uiv__III_3II }, 37397ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform2uiv__IIILjava_nio_IntBuffer_2 }, 37407ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3uiv", "(III[II)V", (void *) android_glProgramUniform3uiv__III_3II }, 37417ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform3uiv__IIILjava_nio_IntBuffer_2 }, 37427ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4uiv", "(III[II)V", (void *) android_glProgramUniform4uiv__III_3II }, 37437ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4uiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glProgramUniform4uiv__IIILjava_nio_IntBuffer_2 }, 37447ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1fv", "(III[FI)V", (void *) android_glProgramUniform1fv__III_3FI }, 37457ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform1fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform1fv__IIILjava_nio_FloatBuffer_2 }, 37467ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2fv", "(III[FI)V", (void *) android_glProgramUniform2fv__III_3FI }, 37477ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform2fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform2fv__IIILjava_nio_FloatBuffer_2 }, 37487ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3fv", "(III[FI)V", (void *) android_glProgramUniform3fv__III_3FI }, 37497ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform3fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform3fv__IIILjava_nio_FloatBuffer_2 }, 37507ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4fv", "(III[FI)V", (void *) android_glProgramUniform4fv__III_3FI }, 37517ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniform4fv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glProgramUniform4fv__IIILjava_nio_FloatBuffer_2 }, 37527ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2fv__IIIZ_3FI }, 37537ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2fv__IIIZLjava_nio_FloatBuffer_2 }, 37547ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3fv__IIIZ_3FI }, 37557ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3fv__IIIZLjava_nio_FloatBuffer_2 }, 37567ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4fv__IIIZ_3FI }, 37577ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4fv__IIIZLjava_nio_FloatBuffer_2 }, 37587ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZ_3FI }, 37597ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x3fv__IIIZLjava_nio_FloatBuffer_2 }, 37607ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZ_3FI }, 37617ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x2fv__IIIZLjava_nio_FloatBuffer_2 }, 37627ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZ_3FI }, 37637ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix2x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix2x4fv__IIIZLjava_nio_FloatBuffer_2 }, 37647ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x2fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZ_3FI }, 37657ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x2fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x2fv__IIIZLjava_nio_FloatBuffer_2 }, 37667ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x4fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZ_3FI }, 37677ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix3x4fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix3x4fv__IIIZLjava_nio_FloatBuffer_2 }, 37687ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x3fv", "(IIIZ[FI)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZ_3FI }, 37697ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glProgramUniformMatrix4x3fv", "(IIIZLjava/nio/FloatBuffer;)V", (void *) android_glProgramUniformMatrix4x3fv__IIIZLjava_nio_FloatBuffer_2 }, 37707ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glValidateProgramPipeline", "(I)V", (void *) android_glValidateProgramPipeline__I }, 37717ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetProgramPipelineInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramPipelineInfoLog }, 37727ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindImageTexture", "(IIIZIII)V", (void *) android_glBindImageTexture__IIIZIII }, 37737ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetBooleani_v", "(II[ZI)V", (void *) android_glGetBooleani_v__II_3ZI }, 37747ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetBooleani_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBooleani_v__IILjava_nio_IntBuffer_2 }, 37757ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glMemoryBarrier", "(I)V", (void *) android_glMemoryBarrier__I }, 37767ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glMemoryBarrierByRegion", "(I)V", (void *) android_glMemoryBarrierByRegion__I }, 37777ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glTexStorage2DMultisample", "(IIIIIZ)V", (void *) android_glTexStorage2DMultisample__IIIIIZ }, 37787ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetMultisamplefv", "(II[FI)V", (void *) android_glGetMultisamplefv__II_3FI }, 37797ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetMultisamplefv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMultisamplefv__IILjava_nio_FloatBuffer_2 }, 37807ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glSampleMaski", "(II)V", (void *) android_glSampleMaski__II }, 37817ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameteriv", "(III[II)V", (void *) android_glGetTexLevelParameteriv__III_3II }, 37827ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetTexLevelParameteriv__IIILjava_nio_IntBuffer_2 }, 37837ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameterfv", "(III[FI)V", (void *) android_glGetTexLevelParameterfv__III_3FI }, 37847ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glGetTexLevelParameterfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetTexLevelParameterfv__IIILjava_nio_FloatBuffer_2 }, 37857ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glBindVertexBuffer", "(IIJI)V", (void *) android_glBindVertexBuffer__IIJI }, 37867ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribFormat", "(IIIZI)V", (void *) android_glVertexAttribFormat__IIIZI }, 37877ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribIFormat", "(IIII)V", (void *) android_glVertexAttribIFormat__IIII }, 37887ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexAttribBinding", "(II)V", (void *) android_glVertexAttribBinding__II }, 37897ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{"glVertexBindingDivisor", "(II)V", (void *) android_glVertexBindingDivisor__II }, 37907ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall}; 37917ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall 37927ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hallint register_android_opengl_jni_GLES31(JNIEnv *_env) 37937ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall{ 37947ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall int err; 37957ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 37967ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall return err; 37977ab63acdd0a257272512d0bcf5e06036fa0b9fdfJesse Hall} 3798