android_opengl_GLES30.cpp revision cee5198e7199fcbb131ff0d30165fb1d5c0107cf
1d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* 2d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 3d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** Copyright 2013, The Android Open Source Project 4d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 5d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** Licensed under the Apache License, Version 2.0 (the "License"); 6d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** you may not use this file except in compliance with the License. 7d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** You may obtain a copy of the License at 8d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 9d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** http://www.apache.org/licenses/LICENSE-2.0 10d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 11d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** Unless required by applicable law or agreed to in writing, software 12d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** distributed under the License is distributed on an "AS IS" BASIS, 13d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** See the License for the specific language governing permissions and 15d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** limitations under the License. 16d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall*/ 17d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 18d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// This source file is automatically generated 19d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 20d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <GLES3/gl3.h> 21d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <GLES3/gl3ext.h> 22d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 23d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include "jni.h" 24d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include "JNIHelp.h" 25d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <android_runtime/AndroidRuntime.h> 26d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <utils/misc.h> 27d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <assert.h> 28d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 29d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic int initialized = 0; 30d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 31d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jclass nioAccessClass; 32d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jclass bufferClass; 33d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBasePointerID; 34d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBaseArrayID; 35d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBaseArrayOffsetID; 36d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID positionID; 37d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID limitID; 38d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID elementSizeShiftID; 39d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 40d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 41d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* special calls implemented in Android's GLES wrapper used to more 42d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * efficiently bound-check passed arrays */ 43d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallextern "C" { 44d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_VERSION_ES_CM_1_1 45d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 46d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLvoid *ptr, GLsizei count); 47d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 48d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLvoid *pointer, GLsizei count); 49d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 50d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 51d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 52d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 53d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 54d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 55d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 56d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 57d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 58d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 59d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 60d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_2_0 61d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 62d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 63d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 64d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 65d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 66d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_3_0 67d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 68d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count) { 69d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointer(indx, size, type, stride, pointer); 70d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 71d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 72d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 73d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 74d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* Cache method IDs each time the class is loaded. */ 75d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 76d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 77d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallnativeClassInit(JNIEnv *_env, jclass glImplClass) 78d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 79d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 80d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 81d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 82d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 83d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 84d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 85d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 86d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBasePointer", "(Ljava/nio/Buffer;)J"); 87d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 88d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 89d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 90d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 91d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 92d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall positionID = _env->GetFieldID(bufferClass, "position", "I"); 93d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall limitID = _env->GetFieldID(bufferClass, "limit", "I"); 94d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall elementSizeShiftID = 95d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 96d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 97d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 98d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void * 99d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint position; 102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint limit; 103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint elementSizeShift; 104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jlong pointer; 105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall position = _env->GetIntField(buffer, positionID); 107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall limit = _env->GetIntField(buffer, limitID); 108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *remaining = (limit - position) << elementSizeShift; 110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pointer = _env->CallStaticLongMethod(nioAccessClass, 111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBasePointerID, buffer); 112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pointer != 0L) { 113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *array = NULL; 114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (void *) (jint) pointer; 115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayID, buffer); 119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *offset = _env->CallStaticIntMethod(nioAccessClass, 120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayOffsetID, buffer); 121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(array, data, 129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall commit ? 0 : JNI_ABORT); 130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void * 133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) _env->GetDirectBufferAddress(buffer); 135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint position = _env->GetIntField(buffer, positionID); 137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall buf += position << elementSizeShift; 139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } else { 140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", 141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "Must use a native order direct Buffer"); 142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (void*) buf; 144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// -------------------------------------------------------------------------- 147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* 149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * returns the number of values glGet returns for a given pname. 150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * 151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * The code below is written such that pnames requiring only one values 152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * are the default (and are not explicitely tested for). This makes the 153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * checking code much shorter/readable/efficient. 154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * 155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * This means that unknown pnames (e.g.: extensions) will default to 1. If 156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * that unknown pname needs more than 1 value, then the validation check 157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * is incomplete and the app may crash if it passed the wrong number params. 158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall */ 159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic int getNeededCount(GLint pname) { 160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int needed = 1; 161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_2_0 162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // GLES 2.x pnames 163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall switch (pname) { 164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 2; 167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_BLEND_COLOR: 170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_CLEAR_VALUE: 171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_WRITEMASK: 172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SCISSOR_BOX: 173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_VIEWPORT: 174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 4; 175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SHADER_BINARY_FORMATS: 182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_VERSION_ES_CM_1_1 188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // GLES 1.x pnames 189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall switch (pname) { 190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_DEPTH_RANGE: 193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SMOOTH_LINE_WIDTH_RANGE: 194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SMOOTH_POINT_SIZE_RANGE: 195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 2; 196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_NORMAL: 199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_POINT_DISTANCE_ATTENUATION: 200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 3; 201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_CLEAR_VALUE: 204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_WRITEMASK: 205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_COLOR: 206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_TEXTURE_COORDS: 207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_FOG_COLOR: 208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_LIGHT_MODEL_AMBIENT: 209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SCISSOR_BOX: 210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_VIEWPORT: 211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 4; 212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_MODELVIEW_MATRIX: 215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_PROJECTION_MATRIX: 216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_TEXTURE_MATRIX: 217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 16; 218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return needed; 226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Halltemplate <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)> 229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallget 231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params_base = (CTYPE *) 0; 236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params = (CTYPE *) 0; 238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int _needed = 0; 239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _needed = getNeededCount(pname); 254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // if we didn't find this pname, we just assume the user passed 255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // an array of the right size -- this might happen with extensions 256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // or if we forget an enum here. 257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_remaining < _needed) { 258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length - offset < needed"; 261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (CTYPE *) 264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GET( 268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (CTYPE *)params 270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Halltemplate <typename CTYPE, void GET(GLenum, CTYPE*)> 284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallgetarray 286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params = (CTYPE *) 0; 294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int _needed = 0; 295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 297cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden _remaining /= sizeof(CTYPE); // convert from bytes to item count 298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _needed = getNeededCount(pname); 299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // if we didn't find this pname, we just assume the user passed 300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // an array of the right size -- this might happen with extensions 301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // or if we forget an enum here. 302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_needed>0 && _remaining < _needed) { 303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "remaining() < needed"; 306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (CTYPE *) (_paramsBase + _bufferOffset); 311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GET( 313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (CTYPE *)params 315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// -------------------------------------------------------------------------- 327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glReadBuffer ( GLenum mode ) */ 328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glReadBuffer__I 330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode) { 331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glReadBuffer( 332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode 333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) */ 337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawRangeElements__IIIIILjava_nio_Buffer_2 339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf) { 340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *indices = (GLvoid *) 0; 344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); 346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (indices == NULL) { 347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *) (_indicesBase + _bufferOffset); 349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawRangeElements( 351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)start, 353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)end, 354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indices 357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, indices, JNI_FALSE); 360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLsizei offset ) */ 364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawRangeElements__IIIIII 366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jint offset) { 367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawRangeElements( 368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)start, 370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)end, 371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)offset 374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */ 378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jobject pixels_buf) { 381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pixels = (GLvoid *) 0; 385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); 387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pixels == NULL) { 388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexImage3D( 392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)internalformat, 395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pixels 402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, pixels, JNI_FALSE); 405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLsizei offset ) */ 409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexImage3D__IIIIIIIIII 411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jint offset) { 412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexImage3D( 413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)internalformat, 416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)offset 423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels ) */ 427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jobject pixels_buf) { 430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pixels = (GLvoid *) 0; 434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); 436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pixels == NULL) { 437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexSubImage3D( 441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pixels 452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, pixels, JNI_FALSE); 455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei offset ) */ 459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexSubImage3D__IIIIIIIIIII 461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jint offset) { 462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexSubImage3D( 463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)offset 474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCopyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */ 478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCopyTexSubImage3D__IIIIIIIII 480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) { 481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCopyTexSubImage3D( 482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) */ 495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jobject data_buf) { 498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *data = (GLvoid *) 0; 502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *) (_dataBase + _bufferOffset); 507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexImage3D( 509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)data 518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_FALSE); 521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLsizei offset ) */ 525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexImage3D__IIIIIIIII 527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jint offset) { 528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexImage3D( 529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)offset 538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ) */ 542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jobject data_buf) { 545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *data = (GLvoid *) 0; 549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *) (_dataBase + _bufferOffset); 554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexSubImage3D( 556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)data 567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_FALSE); 570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLsizei offset ) */ 574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexSubImage3D__IIIIIIIIIII 576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jint offset) { 577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexSubImage3D( 578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)offset 589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenQueries ( GLsizei n, GLuint *ids ) */ 593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenQueries__I_3II 595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0); 618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenQueries( 621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base, 628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenQueries ( GLsizei n, GLuint *ids ) */ 636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenQueries__ILjava_nio_IntBuffer_2 638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset); 645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenQueries( 650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, ids, JNI_TRUE); 655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */ 659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteQueries__I_3II 661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0); 684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteQueries( 687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base, 694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */ 702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteQueries__ILjava_nio_IntBuffer_2 704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset); 711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteQueries( 716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, ids, JNI_FALSE); 721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsQuery ( GLuint id ) */ 725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsQuery__I 727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id) { 728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsQuery( 730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBeginQuery ( GLenum target, GLuint id ) */ 736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBeginQuery__II 738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint id) { 739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBeginQuery( 740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glEndQuery ( GLenum target ) */ 746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glEndQuery__I 748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target) { 749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glEndQuery( 750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target 751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */ 755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryiv__II_3II 757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryiv( 783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */ 799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryiv__IILjava_nio_IntBuffer_2 801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryiv( 813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */ 823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryObjectuiv__II_3II 825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id, jint pname, jintArray params_ref, jint offset) { 826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryObjectuiv( 851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id, 852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */ 867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id, jint pname, jobject params_buf) { 870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryObjectuiv( 881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id, 882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glUnmapBuffer ( GLenum target ) */ 891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUnmapBuffer__I 893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target) { 894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glUnmapBuffer( 896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target 897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) */ 902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jobject 903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferPointerv__II 904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname) { 905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 _mapLength; 906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid* _p; 907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v((GLenum)target, GL_BUFFER_MAP_LENGTH, &_mapLength); 908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferPointerv((GLenum)target, (GLenum)pname, &_p); 909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewDirectByteBuffer(_p, _mapLength); 910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */ 913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawBuffers__I_3II 915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray bufs_ref, jint offset) { 916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs_base = (GLenum *) 0; 920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs = (GLenum *) 0; 922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!bufs_ref) { 924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "bufs == null"; 927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(bufs_ref) - offset; 936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs_base = (GLenum *) 937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(bufs_ref, (jboolean *)0); 938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = bufs_base + offset; 939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawBuffers( 941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)bufs 943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (bufs_base) { 947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(bufs_ref, bufs_base, 948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */ 956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawBuffers__ILjava_nio_IntBuffer_2 958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject bufs_buf) { 959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs = (GLenum *) 0; 963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = (GLenum *)getPointer(_env, bufs_buf, &_array, &_remaining, &_bufferOffset); 965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (bufs == NULL) { 966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _bufsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = (GLenum *) (_bufsBase + _bufferOffset); 968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawBuffers( 970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)bufs 972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, bufs, JNI_FALSE); 975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x3fv__IIZ_3FI 981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 1003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 1004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x3fv( 1007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 1015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 1016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 1026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 1027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 1033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 1034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x3fv( 1038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 1045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x2fv__IIZ_3FI 1051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 1073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 1074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x2fv( 1077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 1085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 1086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 1096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 1097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 1103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 1104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x2fv( 1108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 1115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x4fv__IIZ_3FI 1121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 1143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 1144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x4fv( 1147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 1155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 1156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 1166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 1167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 1173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 1174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x4fv( 1178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 1185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x2fv__IIZ_3FI 1191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 1213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 1214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x2fv( 1217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 1225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 1226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 1236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 1237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 1243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 1244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x2fv( 1248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 1255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x4fv__IIZ_3FI 1261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 1283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 1284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x4fv( 1287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 1295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 1296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 1306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 1307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 1313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 1314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x4fv( 1318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 1325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x3fv__IIZ_3FI 1331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 1353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 1354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x3fv( 1357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 1365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 1366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 1376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 1377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 1383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 1384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x3fv( 1388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 1395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBlitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) */ 1399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBlitFramebuffer__IIIIIIIIII 1401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint srcX0, jint srcY0, jint srcX1, jint srcY1, jint dstX0, jint dstY0, jint dstX1, jint dstY1, jint mask, jint filter) { 1402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBlitFramebuffer( 1403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcX0, 1404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcY0, 1405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcX1, 1406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcY1, 1407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstX0, 1408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstY0, 1409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstX1, 1410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstY1, 1411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)mask, 1412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)filter 1413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glRenderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) */ 1417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glRenderbufferStorageMultisample__IIIII 1419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height) { 1420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glRenderbufferStorageMultisample( 1421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)samples, 1423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 1424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 1425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 1426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glFramebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) */ 1430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFramebufferTextureLayer__IIIII 1432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level, jint layer) { 1433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glFramebufferTextureLayer( 1434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)attachment, 1436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)texture, 1437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 1438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)layer 1439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) */ 1443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jobject 1444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glMapBufferRange__IIII 1445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint offset, jint length, jint access) { 1446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid* _p = glMapBufferRange((GLenum)target, 1447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, (GLsizeiptr)length, (GLbitfield)access); 1448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jobject _buf = (jobject)0; 1449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_p) { 1450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _buf = _env->NewDirectByteBuffer(_p, length); 1451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _buf; 1453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glFlushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) */ 1456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFlushMappedBufferRange__III 1458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint offset, jint length) { 1459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glFlushMappedBufferRange( 1460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, 1462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)length 1463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindVertexArray ( GLuint array ) */ 1467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindVertexArray__I 1469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint array) { 1470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindVertexArray( 1471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)array 1472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */ 1476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteVertexArrays__I_3II 1478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) { 1479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays_base = (GLuint *) 0; 1483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!arrays_ref) { 1487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "arrays == null"; 1490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(arrays_ref) - offset; 1499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays_base = (GLuint *) 1500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(arrays_ref, (jboolean *)0); 1501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = arrays_base + offset; 1502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteVertexArrays( 1504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays_base) { 1510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(arrays_ref, arrays_base, 1511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */ 1519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 1521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) { 1522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *)getPointer(_env, arrays_buf, &_array, &_remaining, &_bufferOffset); 1528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays == NULL) { 1529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _arraysBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *) (_arraysBase + _bufferOffset); 1531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteVertexArrays( 1533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, arrays, JNI_FALSE); 1538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */ 1542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenVertexArrays__I_3II 1544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) { 1545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays_base = (GLuint *) 0; 1549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!arrays_ref) { 1553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "arrays == null"; 1556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(arrays_ref) - offset; 1565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays_base = (GLuint *) 1566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(arrays_ref, (jboolean *)0); 1567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = arrays_base + offset; 1568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenVertexArrays( 1570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays_base) { 1576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(arrays_ref, arrays_base, 1577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */ 1585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenVertexArrays__ILjava_nio_IntBuffer_2 1587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) { 1588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *)getPointer(_env, arrays_buf, &_array, &_remaining, &_bufferOffset); 1594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays == NULL) { 1595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _arraysBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *) (_arraysBase + _bufferOffset); 1597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenVertexArrays( 1599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, arrays, JNI_TRUE); 1604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsVertexArray ( GLuint array ) */ 1608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 1609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsVertexArray__I 1610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint array) { 1611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 1612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsVertexArray( 1613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)array 1614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 1616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */ 1619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetIntegeri_v__II_3II 1621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jintArray data_ref, jint offset) { 1622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data_base = (GLint *) 0; 1626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data = (GLint *) 0; 1628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!data_ref) { 1630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "data == null"; 1633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 1642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data_base = (GLint *) 1643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0); 1644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = data_base + offset; 1645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegeri_v( 1647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)data 1650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data_base) { 1654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(data_ref, data_base, 1655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */ 1663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetIntegeri_v__IILjava_nio_IntBuffer_2 1665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 1666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 1667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data = (GLint *) 0; 1670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 1672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 1673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 1674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint *) (_dataBase + _bufferOffset); 1675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegeri_v( 1677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)data 1680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 1682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_TRUE); 1683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBeginTransformFeedback ( GLenum primitiveMode ) */ 1687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBeginTransformFeedback__I 1689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint primitiveMode) { 1690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBeginTransformFeedback( 1691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)primitiveMode 1692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glEndTransformFeedback ( void ) */ 1696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glEndTransformFeedback__ 1698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 1699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glEndTransformFeedback(); 1700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindBufferRange ( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) */ 1703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindBufferRange__IIIII 1705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer, jint offset, jint size) { 1706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindBufferRange( 1707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)buffer, 1710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, 1711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)size 1712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindBufferBase ( GLenum target, GLuint index, GLuint buffer ) */ 1716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindBufferBase__III 1718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer) { 1719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindBufferBase( 1720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)buffer 1723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTransformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) */ 1727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 1728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 1729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTransformFeedbackVaryings 1730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray varyings_ref, jint bufferMode) { 1731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 1733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 1734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0, _i; 1735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _varyings = NULL; 1736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _varying = NULL; 1737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!varyings_ref) { 1739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "varyings == null"; 1742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(varyings_ref); 1746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _varyings = (const char**)calloc(_count, sizeof(const char*)); 1747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 1748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); 1749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_varying) { 1750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null varyings element"; 1753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _varyings[_i] = _env->GetStringUTFChars(_varying, 0); 1756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTransformFeedbackVaryings(program, _count, _varyings, bufferMode); 1759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 1762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_varyings[_i]) { 1763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); 1764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_varying) { 1765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_varying, _varyings[_i]); 1766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_varyings); 1770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 1776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI 1778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) { 1779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 1781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 1782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 1783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 1784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 1785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size_base = (GLint *) 0; 1786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 1787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 1788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type_base = (GLenum *) 0; 1789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 1790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 1791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char *name_base = (char *) 0; 1792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 1793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char *name = (char *) 0; 1794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!length_ref) { 1796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length == null"; 1799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (lengthOffset < 0) { 1802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "lengthOffset < 0"; 1805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 1808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length_base = (GLsizei *) 1809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 1810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = length_base + lengthOffset; 1811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!size_ref) { 1813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "size == null"; 1816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (sizeOffset < 0) { 1819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "sizeOffset < 0"; 1822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 1825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size_base = (GLint *) 1826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 1827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = size_base + sizeOffset; 1828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!type_ref) { 1830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "type == null"; 1833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (typeOffset < 0) { 1836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "typeOffset < 0"; 1839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 1842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type_base = (GLenum *) 1843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 1844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = type_base + typeOffset; 1845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name_ref) { 1847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "name == null"; 1850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (nameOffset < 0) { 1853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "nameOffset < 0"; 1856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 1859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name_base = (char *) 1860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0); 1861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name = name_base + nameOffset; 1862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 1864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 1865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufsize, 1867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 1868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 1869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 1870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)name 1871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (name_base) { 1875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(name_ref, name_base, 1876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type_base) { 1879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 1880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size_base) { 1883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 1884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 1887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 1888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 1896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B 1898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { 1899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _lengthArray = (jarray) 0; 1900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 1901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _sizeArray = (jarray) 0; 1902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeBufferOffset = (jint) 0; 1903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _typeArray = (jarray) 0; 1904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeBufferOffset = (jint) 0; 1905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 1906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 1907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 1908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 1909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 1910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 1911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 1913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 1914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 1915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length == NULL) { 1916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); 1917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 1918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size == NULL) { 1920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 1921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *) (_sizeBase + _sizeBufferOffset); 1922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type == NULL) { 1924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 1925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *) (_typeBase + _typeBufferOffset); 1926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 1928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 1929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufsize, 1931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 1932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 1933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 1934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)name 1935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_typeArray) { 1937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _typeArray, type, JNI_TRUE); 1938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_sizeArray) { 1940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _sizeArray, size, JNI_TRUE); 1941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 1943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _lengthArray, length, JNI_TRUE); 1944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 1948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 1949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying1 1950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) { 1951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 1953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 1954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size_base = (GLint *) 0; 1955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 1956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 1957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type_base = (GLenum *) 0; 1958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 1959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 1960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = 0; 1962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 1964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 1965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!len) { 1966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF(""); 1967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) malloc(len); 1969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf == NULL) { 1971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 1972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 1973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!size_ref) { 1975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "size == null"; 1978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (sizeOffset < 0) { 1981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "sizeOffset < 0"; 1984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 1987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size_base = (GLint *) 1988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 1989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = size_base + sizeOffset; 1990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!type_ref) { 1992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "type == null"; 1995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (typeOffset < 0) { 1998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "typeOffset < 0"; 2001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 2004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type_base = (GLenum *) 2005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 2006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = type_base + typeOffset; 2007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)len, 2012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall NULL, 2013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)buf 2016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type_base) { 2019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 2020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size_base) { 2023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 2024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception != 1) { 2027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(buf); 2028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 2030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(buf); 2031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (result == 0) { 2036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(""); 2037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 2040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 2044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying2 2045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) { 2046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _sizeArray = (jarray) 0; 2047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeBufferOffset = (jint) 0; 2048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _typeArray = (jarray) 0; 2049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeBufferOffset = (jint) 0; 2050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 2051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 2052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 2056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = 0; 2058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 2060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 2061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!len) { 2062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF(""); 2063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) malloc(len); 2065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf == NULL) { 2067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 2069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 2072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 2073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size == NULL) { 2074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 2075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *) (_sizeBase + _sizeBufferOffset); 2076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type == NULL) { 2078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 2079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *) (_typeBase + _typeBufferOffset); 2080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)len, 2085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall NULL, 2086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)buf 2089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_typeArray) { 2092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _typeArray, type, JNI_TRUE); 2093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_sizeArray) { 2095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _sizeArray, size, JNI_TRUE); 2096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(buf); 2098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 2099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(buf); 2100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 2102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */ 2104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I 2106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { 2107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pointer = (GLvoid *) 0; 2111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pointer_buf) { 2113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 2114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if ( ! pointer ) { 2115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return; 2116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointerBounds( 2119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)size, 2121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 2122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)stride, 2123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pointer, 2124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)remaining 2125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, GLsizei offset ) */ 2129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribIPointer__IIIII 2131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jint offset) { 2132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointer( 2133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)size, 2135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 2136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)stride, 2137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)offset 2138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */ 2142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIiv__II_3II 2144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 2145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 2149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 2151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 2166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIiv( 2170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 2173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 2177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */ 2186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 2188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 2189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 2193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 2195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 2196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 2198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIiv( 2200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 2203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 2206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */ 2210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIuiv__II_3II 2212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 2213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 2217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 2234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIuiv( 2238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 2245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */ 2254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 2256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 2257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 2263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 2264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 2266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIuiv( 2268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 2274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4i ( GLuint index, GLint x, GLint y, GLint z, GLint w ) */ 2278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4i__IIIII 2280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) { 2281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4i( 2282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 2284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 2285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)z, 2286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)w 2287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4ui ( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) */ 2291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4ui__IIIII 2293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) { 2294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4ui( 2295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)x, 2297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)y, 2298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)z, 2299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)w 2300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */ 2304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4iv__I_3II 2306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) { 2307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v_base = (GLint *) 0; 2311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v = (GLint *) 0; 2313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!v_ref) { 2315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "v == null"; 2318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(v_ref) - offset; 2327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v_base = (GLint *) 2328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 2329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = v_base + offset; 2330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4iv( 2332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)v 2334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v_base) { 2338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 2339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */ 2347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 2349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jobject v_buf) { 2350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v = (GLint *) 0; 2354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 2356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v == NULL) { 2357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLint *) (_vBase + _bufferOffset); 2359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4iv( 2361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)v 2363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, v, JNI_FALSE); 2366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */ 2370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4uiv__I_3II 2372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) { 2373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v_base = (GLuint *) 0; 2377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v = (GLuint *) 0; 2379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!v_ref) { 2381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "v == null"; 2384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(v_ref) - offset; 2393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v_base = (GLuint *) 2394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 2395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = v_base + offset; 2396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4uiv( 2398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)v 2400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v_base) { 2404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 2405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */ 2413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 2415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jobject v_buf) { 2416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v = (GLuint *) 0; 2420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLuint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 2422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v == NULL) { 2423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLuint *) (_vBase + _bufferOffset); 2425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4uiv( 2427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)v 2429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, v, JNI_FALSE); 2432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */ 2436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformuiv__II_3II 2438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) { 2439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 2443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 2460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformuiv( 2464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 2471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */ 2480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformuiv__IILjava_nio_IntBuffer_2 2482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { 2483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 2489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 2490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 2492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformuiv( 2494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 2500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLint glGetFragDataLocation ( GLuint program, const GLchar *name ) */ 2504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 2505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetFragDataLocation__ILjava_lang_String_2 2506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jstring name) { 2507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint _returnValue = 0; 2511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _nativename = 0; 2512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name) { 2514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "name == null"; 2516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 2519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glGetFragDataLocation( 2521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar *)_nativename 2523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nativename) { 2527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 2528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 2534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1ui ( GLint location, GLuint v0 ) */ 2537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1ui__II 2539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0) { 2540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1ui( 2541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0 2543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2ui ( GLint location, GLuint v0, GLuint v1 ) */ 2547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2ui__III 2549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1) { 2550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2ui( 2551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 2553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1 2554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3ui ( GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 2558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3ui__IIII 2560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2) { 2561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3ui( 2562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 2564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1, 2565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v2 2566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4ui ( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 2570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4ui__IIIII 2572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2, jint v3) { 2573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4ui( 2574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 2576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1, 2577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v2, 2578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v3 2579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1uiv__II_3II 2585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 2607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 2608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1uiv( 2611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 2618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 2619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1uiv__IILjava_nio_IntBuffer_2 2629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 2630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 2636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 2637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1uiv( 2641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 2647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2uiv__II_3II 2653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 2675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 2676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2uiv( 2679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 2686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 2687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2uiv__IILjava_nio_IntBuffer_2 2697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 2698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 2704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 2705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2uiv( 2709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 2715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3uiv__II_3II 2721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 2743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 2744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3uiv( 2747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 2754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 2755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3uiv__IILjava_nio_IntBuffer_2 2765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 2766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 2772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 2773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3uiv( 2777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 2783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4uiv__II_3II 2789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 2811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 2812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4uiv( 2815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 2822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 2823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4uiv__IILjava_nio_IntBuffer_2 2833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 2834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 2840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 2841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4uiv( 2845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 2851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */ 2855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferiv__II_3II 2857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) { 2858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value_base = (GLint *) 0; 2862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value = (GLint *) 0; 2864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLint *) 2879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 2880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferiv( 2883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 2884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 2885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)value 2886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 2890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 2891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */ 2899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferiv__IILjava_nio_IntBuffer_2 2901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 2902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value = (GLint *) 0; 2906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 2908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 2909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 2911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferiv( 2913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 2914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 2915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)value 2916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 2919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */ 2923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferuiv__II_3II 2925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) { 2926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 2947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 2948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferuiv( 2951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 2952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 2953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 2958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 2959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */ 2967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferuiv__IILjava_nio_IntBuffer_2 2969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 2970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 2976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 2977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 2978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferuiv( 2981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 2982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 2983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 2986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 2987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */ 2991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfv__II_3FI 2993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloatArray value_ref, jint offset) { 2994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 2998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 3000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 3015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 3016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfv( 3019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 3022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 3026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 3027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */ 3035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfv__IILjava_nio_FloatBuffer_2 3037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 3038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 3042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 3044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 3045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 3047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfv( 3049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 3052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 3054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, value, JNI_FALSE); 3055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfi ( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) */ 3059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfi__IIFI 3061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloat depth, jint stencil) { 3062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfi( 3063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat)depth, 3066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)stencil 3067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* const GLubyte * glGetStringi ( GLenum name, GLuint index ) */ 3071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 3072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetStringi__II 3073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint name, jint index) { 3074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLubyte* _chars = glGetStringi((GLenum)name, (GLuint)index); 3075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF((const char*)_chars); 3076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCopyBufferSubData ( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ) */ 3079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCopyBufferSubData__IIIII 3081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint readTarget, jint writeTarget, jint readOffset, jint writeOffset, jint size) { 3082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCopyBufferSubData( 3083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)readTarget, 3084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)writeTarget, 3085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)readOffset, 3086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)writeOffset, 3087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)size 3088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */ 3092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 3093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 3094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformIndices_array 3095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jintArray uniformIndices_ref, jint uniformIndicesOffset) { 3096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 3098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 3099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0; 3100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _i; 3101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _names = NULL; 3102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices_base = NULL; 3103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices = NULL; 3104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformNames_ref) { 3106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformNames == null"; 3109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(uniformNames_ref); 3112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names = (const char**)calloc(_count, sizeof(const char*)); 3113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 3114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_name) { 3116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null uniformNames element"; 3119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names[_i] = _env->GetStringUTFChars(_name, 0); 3122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_ref) { 3125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndicesOffset < 0) { 3131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndicesOffset < 0"; 3134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset < _count) { 3137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "not enough space in uniformIndices"; 3140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices_base = (GLuint*)_env->GetPrimitiveArrayCritical( 3143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices_ref, 0); 3144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = _indices_base + uniformIndicesOffset; 3145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformIndices(program, _count, _names, _indices); 3147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_indices_base) { 3150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(uniformIndices_ref, _indices_base, 3151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT : 0); 3152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 3154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_names[_i]) { 3155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name) { 3157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_name, _names[_i]); 3158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_names); 3162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */ 3168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 3169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 3170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformIndices_buffer 3171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jobject uniformIndices_buf) { 3172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 3174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 3175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0; 3176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _i; 3177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _names = NULL; 3178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _uniformIndicesArray = (jarray)0; 3179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesOffset = 0; 3181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices = NULL; 3182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* _indicesBase = NULL; 3183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformNames_ref) { 3185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformNames == null"; 3188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_buf) { 3191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(uniformNames_ref); 3198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names = (const char**)calloc(_count, sizeof(const char*)); 3199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 3200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_name) { 3202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null uniformNames element"; 3205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names[_i] = _env->GetStringUTFChars(_name, 0); 3208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = (GLuint*)getPointer(_env, uniformIndices_buf, 3211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall &_uniformIndicesArray, &_uniformIndicesRemaining, 3212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall &_uniformIndicesOffset); 3213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_indices) { 3214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indicesBase = (char*)_env->GetPrimitiveArrayCritical( 3215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _uniformIndicesArray, 0); 3216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = (GLuint*)(_indicesBase + _uniformIndicesOffset); 3217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesRemaining < _count) { 3219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "not enough space in uniformIndices"; 3222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformIndices(program, _count, _names, _indices); 3226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesArray) { 3229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _uniformIndicesArray, _indicesBase, JNI_TRUE); 3230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 3232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_names[_i]) { 3233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name) { 3235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_name, _names[_i]); 3236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_names); 3240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */ 3246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformsiv__II_3III_3II 3248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jintArray uniformIndices_ref, jint uniformIndicesOffset, jint pname, jintArray params_ref, jint paramsOffset) { 3249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices_base = (GLuint *) 0; 3253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices = (GLuint *) 0; 3255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 3256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsRemaining; 3257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_ref) { 3260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndicesOffset < 0) { 3266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndicesOffset < 0"; 3269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _uniformIndicesRemaining = _env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset; 3272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices_base = (GLuint *) 3273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(uniformIndices_ref, (jboolean *)0); 3274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = uniformIndices_base + uniformIndicesOffset; 3275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (paramsOffset < 0) { 3283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "paramsOffset < 0"; 3286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 3289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 3290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + paramsOffset; 3292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformsiv( 3294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)uniformCount, 3296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)uniformIndices, 3297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 3303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndices_base) { 3307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(uniformIndices_ref, uniformIndices_base, 3308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */ 3316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 3318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jobject uniformIndices_buf, jint pname, jobject params_buf) { 3319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _uniformIndicesArray = (jarray) 0; 3320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesBufferOffset = (jint) 0; 3321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _paramsArray = (jarray) 0; 3322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsBufferOffset = (jint) 0; 3323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices = (GLuint *) 0; 3325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsRemaining; 3326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = (GLuint *)getPointer(_env, uniformIndices_buf, &_uniformIndicesArray, &_uniformIndicesRemaining, &_uniformIndicesBufferOffset); 3329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *)getPointer(_env, params_buf, &_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 3330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndices == NULL) { 3331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _uniformIndicesBase = (char *)_env->GetPrimitiveArrayCritical(_uniformIndicesArray, (jboolean *) 0); 3332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = (GLuint *) (_uniformIndicesBase + _uniformIndicesBufferOffset); 3333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 3335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_paramsArray, (jboolean *) 0); 3336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _paramsBufferOffset); 3337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformsiv( 3339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)uniformCount, 3341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)uniformIndices, 3342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_paramsArray) { 3346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _paramsArray, params, JNI_TRUE); 3347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesArray) { 3349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _uniformIndicesArray, uniformIndices, JNI_FALSE); 3350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLuint glGetUniformBlockIndex ( GLuint program, const GLchar *uniformBlockName ) */ 3354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 3355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformBlockIndex__ILjava_lang_String_2 3356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jstring uniformBlockName) { 3357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint _returnValue = 0; 3361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _nativeuniformBlockName = 0; 3362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformBlockName) { 3364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockName == null"; 3366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nativeuniformBlockName = _env->GetStringUTFChars(uniformBlockName, 0); 3369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glGetUniformBlockIndex( 3371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar *)_nativeuniformBlockName 3373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nativeuniformBlockName) { 3377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(uniformBlockName, _nativeuniformBlockName); 3378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 3384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */ 3387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockiv__III_3II 3389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jintArray params_ref, jint offset) { 3390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 3394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 3411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 3413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv( 3415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 3423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */ 3432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 3434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jobject params_buf) { 3435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 3441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 3442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 3444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv( 3446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 3452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 3453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 3457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_III_3II_3BI 3459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) { 3460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType; 3462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage; 3463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length_base = (GLsizei*)0; 3464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length = (GLsizei*)0; 3466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name_base = (GLchar*)0; 3467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 3468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name = (GLchar*)0; 3469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!length_ref) { 3471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length == null"; 3474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (lengthOffset < 0) { 3477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "lengthOffset < 0"; 3480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 3483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length_base = (GLsizei*)_env->GetPrimitiveArrayCritical( 3484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length_ref, (jboolean*)0); 3485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = _length_base + lengthOffset; 3486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name_ref) { 3488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockName == null"; 3491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (nameOffset < 0) { 3494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockNameOffset < 0"; 3497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 3500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name_base = (GLchar*)_env->GetPrimitiveArrayCritical( 3501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name_ref, (jboolean*)0); 3502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = _name_base + nameOffset; 3503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName( 3505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 3508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei*)_length, 3509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar*)_name 3510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name_base) { 3514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(name_ref, _name_base, 3515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_length_base) { 3518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(length_ref, _length_base, 3519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 3527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 3529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) { 3530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType; 3532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage; 3533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _lengthArray = (jarray)0; 3534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint)0; 3535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length = (GLsizei*)0; 3536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _nameArray = (jarray)0; 3538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameBufferOffset = (jint)0; 3539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name = (GLchar*)0; 3540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 3541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 3543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_length == NULL) { 3544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0); 3545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = (GLsizei*)(_lengthBase + _lengthBufferOffset); 3546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset); 3549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name == NULL) { 3550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0); 3551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = (GLchar*)(_nameBase + _nameBufferOffset); 3552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName( 3555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)_nameRemaining, 3558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length, _name 3559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nameArray) { 3561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _nameArray, _name, JNI_TRUE); 3562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 3564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _lengthArray, _length, JNI_TRUE); 3565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 3569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 3570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_II 3571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) { 3572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 3573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex, 3574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GL_UNIFORM_BLOCK_NAME_LENGTH, &len); 3575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* name = (GLchar*)malloc(len); 3576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex, 3577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall len, NULL, name); 3578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = _env->NewStringUTF(name); 3579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(name); 3580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 3581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformBlockBinding ( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) */ 3584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformBlockBinding__III 3586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint uniformBlockBinding) { 3587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformBlockBinding( 3588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockBinding 3591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawArraysInstanced ( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) */ 3595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawArraysInstanced__IIII 3597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint first, jint count, jint instanceCount) { 3598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawArraysInstanced( 3599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 3600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)first, 3601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 3603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */ 3607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawElementsInstanced__IIILjava_nio_Buffer_2I 3609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount) { 3610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *indices = (GLvoid *) 0; 3614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); 3616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (indices == NULL) { 3617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *) (_indicesBase + _bufferOffset); 3619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawElementsInstanced( 3621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 3622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 3624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indices, 3625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 3626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 3628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, indices, JNI_FALSE); 3629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */ 3633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawElementsInstanced__IIIII 3635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount) { 3636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawElementsInstanced( 3637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 3638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 3640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indicesOffset, 3641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 3642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLsync glFenceSync ( GLenum condition, GLbitfield flags ) */ 3646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jlong 3647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFenceSync__II 3648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint condition, jint flags) { 3649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsync _returnValue; 3650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glFenceSync( 3651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)condition, 3652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags 3653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jlong)_returnValue; 3655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsSync ( GLsync sync ) */ 3658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 3659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsSync__J 3660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync) { 3661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 3662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsSync( 3663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync 3664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 3666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSync ( GLsync sync ) */ 3669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSync__J 3671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync) { 3672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSync( 3673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync 3674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLenum glClientWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */ 3678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 3679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClientWaitSync__JIJ 3680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) { 3681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum _returnValue; 3682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glClientWaitSync( 3683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags, 3685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint64)timeout 3686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 3688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */ 3691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glWaitSync__JIJ 3693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) { 3694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glWaitSync( 3695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags, 3697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint64)timeout 3698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */ 3702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64v__I_3JI 3704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jlongArray params_ref, jint offset) { 3705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params_base = (GLint64 *) 0; 3709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 3711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint64 *) 3726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 3728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64v( 3730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 3732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 3736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */ 3745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64v__ILjava_nio_LongBuffer_2 3747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 3748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 3752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 3754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 3755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *) (_paramsBase + _bufferOffset); 3757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64v( 3759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 3761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 3763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 3764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */ 3768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSynciv__JII_3II_3II 3770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray values_ref, jint valuesOffset) { 3771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 3775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 3777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values_base = (GLint *) 0; 3778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesRemaining; 3779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values = (GLint *) 0; 3780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!length_ref) { 3782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length == null"; 3785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (lengthOffset < 0) { 3788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "lengthOffset < 0"; 3791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 3794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length_base = (GLsizei *) 3795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 3796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = length_base + lengthOffset; 3797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!values_ref) { 3799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "values == null"; 3802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (valuesOffset < 0) { 3805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "valuesOffset < 0"; 3808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _valuesRemaining = _env->GetArrayLength(values_ref) - valuesOffset; 3811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values_base = (GLint *) 3812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0); 3813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = values_base + valuesOffset; 3814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSynciv( 3816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 3819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 3820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)values 3821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (values_base) { 3825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(values_ref, values_base, 3826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 3829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 3830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */ 3838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 3840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jobject length_buf, jobject values_buf) { 3841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _lengthArray = (jarray) 0; 3842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 3843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _valuesArray = (jarray) 0; 3844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesBufferOffset = (jint) 0; 3845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 3847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesRemaining; 3848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values = (GLint *) 0; 3849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 3851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = (GLint *)getPointer(_env, values_buf, &_valuesArray, &_valuesRemaining, &_valuesBufferOffset); 3852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length == NULL) { 3853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); 3854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 3855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (values == NULL) { 3857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_valuesArray, (jboolean *) 0); 3858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = (GLint *) (_valuesBase + _valuesBufferOffset); 3859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSynciv( 3861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 3864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 3865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)values 3866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_valuesArray) { 3868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _valuesArray, values, JNI_TRUE); 3869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 3871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _lengthArray, length, JNI_TRUE); 3872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */ 3876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64i_v__II_3JI 3878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jlongArray data_ref, jint offset) { 3879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data_base = (GLint64 *) 0; 3883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data = (GLint64 *) 0; 3885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!data_ref) { 3887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "data == null"; 3890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 3899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data_base = (GLint64 *) 3900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(data_ref, (jboolean *)0); 3901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = data_base + offset; 3902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64i_v( 3904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 3905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 3906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)data 3907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data_base) { 3911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(data_ref, data_base, 3912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */ 3920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64i_v__IILjava_nio_LongBuffer_2 3922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 3923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data = (GLint64 *) 0; 3927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint64 *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 3929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 3930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint64 *) (_dataBase + _bufferOffset); 3932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64i_v( 3934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 3935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 3936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)data 3937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 3939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_TRUE); 3940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */ 3944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferParameteri64v__II_3JI 3946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jlongArray params_ref, jint offset) { 3947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params_base = (GLint64 *) 0; 3951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 3953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint64 *) 3968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 3970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v( 3972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 3973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 3975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 3979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */ 3988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 3990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 3991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 3995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 3997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 3998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *) (_paramsBase + _bufferOffset); 4000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v( 4002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 4008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */ 4012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenSamplers__I_3II 4014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) { 4015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers_base = (GLuint *) 0; 4019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!samplers_ref) { 4023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "samplers == null"; 4026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(samplers_ref) - offset; 4035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers_base = (GLuint *) 4036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(samplers_ref, (jboolean *)0); 4037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = samplers_base + offset; 4038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenSamplers( 4040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers_base) { 4046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(samplers_ref, samplers_base, 4047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */ 4055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenSamplers__ILjava_nio_IntBuffer_2 4057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) { 4058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *)getPointer(_env, samplers_buf, &_array, &_remaining, &_bufferOffset); 4064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers == NULL) { 4065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _samplersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *) (_samplersBase + _bufferOffset); 4067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenSamplers( 4069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, samplers, JNI_TRUE); 4074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */ 4078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSamplers__I_3II 4080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) { 4081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers_base = (GLuint *) 0; 4085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!samplers_ref) { 4089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "samplers == null"; 4092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(samplers_ref) - offset; 4101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers_base = (GLuint *) 4102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(samplers_ref, (jboolean *)0); 4103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = samplers_base + offset; 4104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSamplers( 4106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers_base) { 4112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(samplers_ref, samplers_base, 4113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */ 4121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSamplers__ILjava_nio_IntBuffer_2 4123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) { 4124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *)getPointer(_env, samplers_buf, &_array, &_remaining, &_bufferOffset); 4130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers == NULL) { 4131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _samplersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *) (_samplersBase + _bufferOffset); 4133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSamplers( 4135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, samplers, JNI_FALSE); 4140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsSampler ( GLuint sampler ) */ 4144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 4145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsSampler__I 4146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler) { 4147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 4148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsSampler( 4149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler 4150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 4152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindSampler ( GLuint unit, GLuint sampler ) */ 4155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindSampler__II 4157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint unit, jint sampler) { 4158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindSampler( 4159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)unit, 4160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler 4161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteri ( GLuint sampler, GLenum pname, GLint param ) */ 4165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteri__III 4167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jint param) { 4168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteri( 4169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)param 4172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */ 4176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteriv__II_3II 4178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { 4179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param_base = (GLint *) 0; 4183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param = (GLint *) 0; 4185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!param_ref) { 4187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "param == null"; 4190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(param_ref) - offset; 4199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param_base = (GLint *) 4200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0); 4201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = param_base + offset; 4202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteriv( 4204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)param 4207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param_base) { 4211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(param_ref, param_base, 4212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */ 4220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteriv__IILjava_nio_IntBuffer_2 4222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 4223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param = (GLint *) 0; 4227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLint *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset); 4229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param == NULL) { 4230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLint *) (_paramBase + _bufferOffset); 4232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteriv( 4234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)param 4237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, param, JNI_FALSE); 4240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterf ( GLuint sampler, GLenum pname, GLfloat param ) */ 4244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterf__IIF 4246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloat param) { 4247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterf( 4248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat)param 4251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */ 4255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterfv__II_3FI 4257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray param_ref, jint offset) { 4258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param_base = (GLfloat *) 0; 4262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param = (GLfloat *) 0; 4264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!param_ref) { 4266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "param == null"; 4269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(param_ref) - offset; 4278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param_base = (GLfloat *) 4279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0); 4280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = param_base + offset; 4281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterfv( 4283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)param 4286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param_base) { 4290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(param_ref, param_base, 4291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */ 4299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 4301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 4302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param = (GLfloat *) 0; 4306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLfloat *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset); 4308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param == NULL) { 4309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLfloat *) (_paramBase + _bufferOffset); 4311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterfv( 4313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)param 4316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, param, JNI_FALSE); 4319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */ 4323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameteriv__II_3II 4325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { 4326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 4330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 4332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 4347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 4348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameteriv( 4351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 4354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 4358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 4359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */ 4367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 4369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 4370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 4374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 4376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 4377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 4379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameteriv( 4381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 4384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 4387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */ 4391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameterfv__II_3FI 4393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray params_ref, jint offset) { 4394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params_base = (GLfloat *) 0; 4398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params = (GLfloat *) 0; 4400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLfloat *) 4415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 4416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameterfv( 4419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)params 4422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 4426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 4427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */ 4435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 4437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 4438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params = (GLfloat *) 0; 4442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 4444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 4445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLfloat *) (_paramsBase + _bufferOffset); 4447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameterfv( 4449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)params 4452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 4455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribDivisor ( GLuint index, GLuint divisor ) */ 4459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribDivisor__II 4461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint divisor) { 4462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribDivisor( 4463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 4464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)divisor 4465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindTransformFeedback ( GLenum target, GLuint id ) */ 4469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindTransformFeedback__II 4471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint id) { 4472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindTransformFeedback( 4473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 4475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */ 4479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteTransformFeedbacks__I_3II 4481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 4482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 4486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 4490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 4493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 4502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 4503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0); 4504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 4505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteTransformFeedbacks( 4507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 4513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base, 4514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */ 4522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 4524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 4525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset); 4531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 4532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 4534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteTransformFeedbacks( 4536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, ids, JNI_FALSE); 4541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */ 4545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenTransformFeedbacks__I_3II 4547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 4548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 4552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 4556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 4559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 4568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 4569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0); 4570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 4571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenTransformFeedbacks( 4573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 4579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(ids_ref, ids_base, 4580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */ 4588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 4590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 4591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset); 4597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 4598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 4600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenTransformFeedbacks( 4602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, ids, JNI_TRUE); 4607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsTransformFeedback ( GLuint id ) */ 4611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 4612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsTransformFeedback__I 4613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id) { 4614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 4615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsTransformFeedback( 4616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 4617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 4619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glPauseTransformFeedback ( void ) */ 4622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glPauseTransformFeedback__ 4624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 4625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glPauseTransformFeedback(); 4626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glResumeTransformFeedback ( void ) */ 4629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glResumeTransformFeedback__ 4631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 4632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glResumeTransformFeedback(); 4633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */ 4636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 4638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray binaryFormat_ref, jint binaryFormatOffset, jobject binary_buf) { 4639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 4645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 4647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat_base = (GLenum *) 0; 4648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatRemaining; 4649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat = (GLenum *) 0; 4650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryRemaining; 4651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 4652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!length_ref) { 4654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length == null"; 4657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (lengthOffset < 0) { 4660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "lengthOffset < 0"; 4663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 4666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length_base = (GLsizei *) 4667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 4668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = length_base + lengthOffset; 4669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!binaryFormat_ref) { 4671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "binaryFormat == null"; 4674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormatOffset < 0) { 4677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "binaryFormatOffset < 0"; 4680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _binaryFormatRemaining = _env->GetArrayLength(binaryFormat_ref) - binaryFormatOffset; 4683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat_base = (GLenum *) 4684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(binaryFormat_ref, (jboolean *)0); 4685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = binaryFormat_base + binaryFormatOffset; 4686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset); 4688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 4689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _bufferOffset); 4691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramBinary( 4693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 4696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)binaryFormat, 4697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary 4698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, binary, _exception ? JNI_FALSE : JNI_TRUE); 4703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormat_base) { 4705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(binaryFormat_ref, binaryFormat_base, 4706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 4709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 4710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */ 4718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 4720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint bufSize, jobject length_buf, jobject binaryFormat_buf, jobject binary_buf) { 4721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _lengthArray = (jarray) 0; 4722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 4723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _binaryFormatArray = (jarray) 0; 4724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatBufferOffset = (jint) 0; 4725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _binaryArray = (jarray) 0; 4726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryBufferOffset = (jint) 0; 4727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 4729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatRemaining; 4730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat = (GLenum *) 0; 4731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryRemaining; 4732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 4733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 4735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = (GLenum *)getPointer(_env, binaryFormat_buf, &_binaryFormatArray, &_binaryFormatRemaining, &_binaryFormatBufferOffset); 4736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset); 4737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length == NULL) { 4738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); 4739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 4740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormat == NULL) { 4742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryFormatBase = (char *)_env->GetPrimitiveArrayCritical(_binaryFormatArray, (jboolean *) 0); 4743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = (GLenum *) (_binaryFormatBase + _binaryFormatBufferOffset); 4744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 4746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0); 4747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _binaryBufferOffset); 4748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramBinary( 4750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 4753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)binaryFormat, 4754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary 4755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_binaryArray) { 4757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _binaryArray, binary, JNI_TRUE); 4758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_binaryFormatArray) { 4760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _binaryFormatArray, binaryFormat, JNI_TRUE); 4761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 4763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _lengthArray, length, JNI_TRUE); 4764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glProgramBinary ( GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length ) */ 4768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glProgramBinary__IILjava_nio_Buffer_2I 4770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint binaryFormat, jobject binary_buf, jint length) { 4771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 4775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_remaining, &_bufferOffset); 4777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 4778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _bufferOffset); 4780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glProgramBinary( 4782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)binaryFormat, 4784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary, 4785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)length 4786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, binary, JNI_FALSE); 4789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glProgramParameteri ( GLuint program, GLenum pname, GLint value ) */ 4793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glProgramParameteri__III 4795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint pname, jint value) { 4796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glProgramParameteri( 4797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)value 4800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */ 4804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateFramebuffer__II_3II 4806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset) { 4807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments_base = (GLenum *) 0; 4811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 4813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!attachments_ref) { 4815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "attachments == null"; 4818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(attachments_ref) - offset; 4827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments_base = (GLenum *) 4828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(attachments_ref, (jboolean *)0); 4829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = attachments_base + offset; 4830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateFramebuffer( 4832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 4834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments 4835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments_base) { 4839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(attachments_ref, attachments_base, 4840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */ 4848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 4850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf) { 4851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 4855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *)getPointer(_env, attachments_buf, &_array, &_remaining, &_bufferOffset); 4857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments == NULL) { 4858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _attachmentsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *) (_attachmentsBase + _bufferOffset); 4860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateFramebuffer( 4862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 4864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments 4865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, attachments, JNI_FALSE); 4868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */ 4872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateSubFramebuffer__II_3IIIIII 4874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset, jint x, jint y, jint width, jint height) { 4875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments_base = (GLenum *) 0; 4879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 4881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!attachments_ref) { 4883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "attachments == null"; 4886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(attachments_ref) - offset; 4895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments_base = (GLenum *) 4896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(attachments_ref, (jboolean *)0); 4897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = attachments_base + offset; 4898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateSubFramebuffer( 4900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 4902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments, 4903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 4904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 4905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 4906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 4907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments_base) { 4911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(attachments_ref, attachments_base, 4912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */ 4920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII 4922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf, jint x, jint y, jint width, jint height) { 4923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 4927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *)getPointer(_env, attachments_buf, &_array, &_remaining, &_bufferOffset); 4929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments == NULL) { 4930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _attachmentsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *) (_attachmentsBase + _bufferOffset); 4932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateSubFramebuffer( 4934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 4936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments, 4937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 4938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 4939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 4940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 4941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, attachments, JNI_FALSE); 4944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexStorage2D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) */ 4948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexStorage2D__IIIII 4950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height) { 4951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexStorage2D( 4952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)levels, 4954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 4955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 4956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 4957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexStorage3D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) */ 4961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexStorage3D__IIIIII 4963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height, jint depth) { 4964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexStorage3D( 4965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)levels, 4967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 4968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 4969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 4970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth 4971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */ 4975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInternalformativ__IIII_3II 4977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jintArray params_ref, jint offset) { 4978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 4982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 4984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 4999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 5000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 5001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInternalformativ( 5003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 5012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 5013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */ 5021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 5023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jobject params_buf) { 5024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 5025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 5030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 5031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 5032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInternalformativ( 5035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 5042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, params, JNI_TRUE); 5043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic const char *classPathName = "android/opengl/GLES30"; 5047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic JNINativeMethod methods[] = { 5049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"_nativeClassInit", "()V", (void*)nativeClassInit }, 5050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glReadBuffer", "(I)V", (void *) android_glReadBuffer__I }, 5051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawRangeElements", "(IIIIILjava/nio/Buffer;)V", (void *) android_glDrawRangeElements__IIIIILjava_nio_Buffer_2 }, 5052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawRangeElements", "(IIIIII)V", (void *) android_glDrawRangeElements__IIIIII }, 5053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexImage3D", "(IIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 }, 5054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexImage3D", "(IIIIIIIIII)V", (void *) android_glTexImage3D__IIIIIIIIII }, 5055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 }, 5056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glTexSubImage3D__IIIIIIIIIII }, 5057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCopyTexSubImage3D", "(IIIIIIIII)V", (void *) android_glCopyTexSubImage3D__IIIIIIIII }, 5058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexImage3D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 }, 5059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexImage3D", "(IIIIIIIII)V", (void *) android_glCompressedTexImage3D__IIIIIIIII }, 5060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 }, 5061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIII }, 5062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenQueries", "(I[II)V", (void *) android_glGenQueries__I_3II }, 5063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenQueries__ILjava_nio_IntBuffer_2 }, 5064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteQueries", "(I[II)V", (void *) android_glDeleteQueries__I_3II }, 5065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteQueries__ILjava_nio_IntBuffer_2 }, 5066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsQuery", "(I)Z", (void *) android_glIsQuery__I }, 5067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBeginQuery", "(II)V", (void *) android_glBeginQuery__II }, 5068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glEndQuery", "(I)V", (void *) android_glEndQuery__I }, 5069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryiv", "(II[II)V", (void *) android_glGetQueryiv__II_3II }, 5070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryiv__IILjava_nio_IntBuffer_2 }, 5071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryObjectuiv", "(II[II)V", (void *) android_glGetQueryObjectuiv__II_3II }, 5072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryObjectuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 }, 5073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUnmapBuffer", "(I)Z", (void *) android_glUnmapBuffer__I }, 5074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferPointerv", "(II)Ljava/nio/Buffer;", (void *) android_glGetBufferPointerv__II }, 5075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawBuffers", "(I[II)V", (void *) android_glDrawBuffers__I_3II }, 5076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDrawBuffers__ILjava_nio_IntBuffer_2 }, 5077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x3fv__IIZ_3FI }, 5078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 }, 5079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x2fv__IIZ_3FI }, 5080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 }, 5081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x4fv__IIZ_3FI }, 5082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 }, 5083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x2fv__IIZ_3FI }, 5084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 }, 5085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x4fv__IIZ_3FI }, 5086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 }, 5087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x3fv__IIZ_3FI }, 5088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 }, 5089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBlitFramebuffer", "(IIIIIIIIII)V", (void *) android_glBlitFramebuffer__IIIIIIIIII }, 5090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glRenderbufferStorageMultisample", "(IIIII)V", (void *) android_glRenderbufferStorageMultisample__IIIII }, 5091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFramebufferTextureLayer", "(IIIII)V", (void *) android_glFramebufferTextureLayer__IIIII }, 5092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glMapBufferRange", "(IIII)Ljava/nio/Buffer;", (void *) android_glMapBufferRange__IIII }, 5093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFlushMappedBufferRange", "(III)V", (void *) android_glFlushMappedBufferRange__III }, 5094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindVertexArray", "(I)V", (void *) android_glBindVertexArray__I }, 5095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteVertexArrays", "(I[II)V", (void *) android_glDeleteVertexArrays__I_3II }, 5096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 }, 5097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenVertexArrays", "(I[II)V", (void *) android_glGenVertexArrays__I_3II }, 5098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenVertexArrays__ILjava_nio_IntBuffer_2 }, 5099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsVertexArray", "(I)Z", (void *) android_glIsVertexArray__I }, 5100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetIntegeri_v", "(II[II)V", (void *) android_glGetIntegeri_v__II_3II }, 5101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetIntegeri_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetIntegeri_v__IILjava_nio_IntBuffer_2 }, 5102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBeginTransformFeedback", "(I)V", (void *) android_glBeginTransformFeedback__I }, 5103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glEndTransformFeedback", "()V", (void *) android_glEndTransformFeedback__ }, 5104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindBufferRange", "(IIIII)V", (void *) android_glBindBufferRange__IIIII }, 5105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindBufferBase", "(III)V", (void *) android_glBindBufferBase__III }, 5106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTransformFeedbackVaryings", "(I[Ljava/lang/String;I)V", (void *) android_glTransformFeedbackVaryings }, 5107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(III[II[II[II[BI)V", (void *) android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI }, 5108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B }, 5109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(II[II[II)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying1 }, 5110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying2 }, 5111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribIPointerBounds", "(IIIILjava/nio/Buffer;I)V", (void *) android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I }, 5112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribIPointer", "(IIIII)V", (void *) android_glVertexAttribIPointer__IIIII }, 5113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIiv", "(II[II)V", (void *) android_glGetVertexAttribIiv__II_3II }, 5114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 }, 5115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIuiv", "(II[II)V", (void *) android_glGetVertexAttribIuiv__II_3II }, 5116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 }, 5117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4i", "(IIIII)V", (void *) android_glVertexAttribI4i__IIIII }, 5118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4ui", "(IIIII)V", (void *) android_glVertexAttribI4ui__IIIII }, 5119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4iv", "(I[II)V", (void *) android_glVertexAttribI4iv__I_3II }, 5120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4iv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 }, 5121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4uiv", "(I[II)V", (void *) android_glVertexAttribI4uiv__I_3II }, 5122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4uiv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 }, 5123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformuiv", "(II[II)V", (void *) android_glGetUniformuiv__II_3II }, 5124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformuiv__IILjava_nio_IntBuffer_2 }, 5125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetFragDataLocation", "(ILjava/lang/String;)I", (void *) android_glGetFragDataLocation__ILjava_lang_String_2 }, 5126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1ui", "(II)V", (void *) android_glUniform1ui__II }, 5127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2ui", "(III)V", (void *) android_glUniform2ui__III }, 5128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3ui", "(IIII)V", (void *) android_glUniform3ui__IIII }, 5129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4ui", "(IIIII)V", (void *) android_glUniform4ui__IIIII }, 5130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1uiv", "(II[II)V", (void *) android_glUniform1uiv__II_3II }, 5131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1uiv__IILjava_nio_IntBuffer_2 }, 5132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2uiv", "(II[II)V", (void *) android_glUniform2uiv__II_3II }, 5133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2uiv__IILjava_nio_IntBuffer_2 }, 5134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3uiv", "(II[II)V", (void *) android_glUniform3uiv__II_3II }, 5135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3uiv__IILjava_nio_IntBuffer_2 }, 5136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4uiv", "(II[II)V", (void *) android_glUniform4uiv__II_3II }, 5137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4uiv__IILjava_nio_IntBuffer_2 }, 5138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferiv", "(II[II)V", (void *) android_glClearBufferiv__II_3II }, 5139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferiv__IILjava_nio_IntBuffer_2 }, 5140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferuiv", "(II[II)V", (void *) android_glClearBufferuiv__II_3II }, 5141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferuiv__IILjava_nio_IntBuffer_2 }, 5142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfv", "(II[FI)V", (void *) android_glClearBufferfv__II_3FI }, 5143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glClearBufferfv__IILjava_nio_FloatBuffer_2 }, 5144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfi", "(IIFI)V", (void *) android_glClearBufferfi__IIFI }, 5145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetStringi", "(II)Ljava/lang/String;", (void *) android_glGetStringi__II }, 5146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCopyBufferSubData", "(IIIII)V", (void *) android_glCopyBufferSubData__IIIII }, 5147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformIndices", "(I[Ljava/lang/String;[II)V", (void *) android_glGetUniformIndices_array }, 5148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformIndices", "(I[Ljava/lang/String;[Ljava/nio/IntBuffer)V", (void *) android_glGetUniformIndices_buffer }, 5149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformsiv", "(II[III[II)V", (void *) android_glGetActiveUniformsiv__II_3III_3II }, 5150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformsiv", "(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 }, 5151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformBlockIndex", "(ILjava/lang/String;)I", (void *) android_glGetUniformBlockIndex__ILjava_lang_String_2 }, 5152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockiv", "(III[II)V", (void *) android_glGetActiveUniformBlockiv__III_3II }, 5153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 }, 5154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(III[II[BI)V", (void *) android_glGetActiveUniformBlockName_III_3II_3BI }, 5155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(IILjava/nio/Buffer;Ljava/nio/Buffer;)V", (void *) android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 }, 5156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(II)Ljava/lang/String;", (void *) android_glGetActiveUniformBlockName_II }, 5157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformBlockBinding", "(III)V", (void *) android_glUniformBlockBinding__III }, 5158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawArraysInstanced", "(IIII)V", (void *) android_glDrawArraysInstanced__IIII }, 5159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawElementsInstanced", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I }, 5160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawElementsInstanced", "(IIIII)V", (void *) android_glDrawElementsInstanced__IIIII }, 5161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFenceSync", "(II)J", (void *) android_glFenceSync__II }, 5162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsSync", "(J)Z", (void *) android_glIsSync__J }, 5163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSync", "(J)V", (void *) android_glDeleteSync__J }, 5164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClientWaitSync", "(JIJ)I", (void *) android_glClientWaitSync__JIJ }, 5165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glWaitSync", "(JIJ)V", (void *) android_glWaitSync__JIJ }, 5166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64v", "(I[JI)V", (void *) android_glGetInteger64v__I_3JI }, 5167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64v", "(ILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64v__ILjava_nio_LongBuffer_2 }, 5168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSynciv", "(JII[II[II)V", (void *) android_glGetSynciv__JII_3II_3II }, 5169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSynciv", "(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 5170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64i_v", "(II[JI)V", (void *) android_glGetInteger64i_v__II_3JI }, 5171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64i_v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64i_v__IILjava_nio_LongBuffer_2 }, 5172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferParameteri64v", "(II[JI)V", (void *) android_glGetBufferParameteri64v__II_3JI }, 5173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferParameteri64v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 }, 5174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenSamplers", "(I[II)V", (void *) android_glGenSamplers__I_3II }, 5175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenSamplers__ILjava_nio_IntBuffer_2 }, 5176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSamplers", "(I[II)V", (void *) android_glDeleteSamplers__I_3II }, 5177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteSamplers__ILjava_nio_IntBuffer_2 }, 5178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsSampler", "(I)Z", (void *) android_glIsSampler__I }, 5179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindSampler", "(II)V", (void *) android_glBindSampler__II }, 5180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteri", "(III)V", (void *) android_glSamplerParameteri__III }, 5181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteriv", "(II[II)V", (void *) android_glSamplerParameteriv__II_3II }, 5182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameteriv__IILjava_nio_IntBuffer_2 }, 5183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterf", "(IIF)V", (void *) android_glSamplerParameterf__IIF }, 5184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterfv", "(II[FI)V", (void *) android_glSamplerParameterfv__II_3FI }, 5185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 }, 5186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameteriv", "(II[II)V", (void *) android_glGetSamplerParameteriv__II_3II }, 5187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 }, 5188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameterfv", "(II[FI)V", (void *) android_glGetSamplerParameterfv__II_3FI }, 5189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 }, 5190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribDivisor", "(II)V", (void *) android_glVertexAttribDivisor__II }, 5191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindTransformFeedback", "(II)V", (void *) android_glBindTransformFeedback__II }, 5192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteTransformFeedbacks", "(I[II)V", (void *) android_glDeleteTransformFeedbacks__I_3II }, 5193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 }, 5194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenTransformFeedbacks", "(I[II)V", (void *) android_glGenTransformFeedbacks__I_3II }, 5195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 }, 5196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsTransformFeedback", "(I)Z", (void *) android_glIsTransformFeedback__I }, 5197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glPauseTransformFeedback", "()V", (void *) android_glPauseTransformFeedback__ }, 5198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glResumeTransformFeedback", "()V", (void *) android_glResumeTransformFeedback__ }, 5199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetProgramBinary", "(II[II[IILjava/nio/Buffer;)V", (void *) android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 }, 5200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetProgramBinary", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/Buffer;)V", (void *) android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 }, 5201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glProgramBinary", "(IILjava/nio/Buffer;I)V", (void *) android_glProgramBinary__IILjava_nio_Buffer_2I }, 5202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glProgramParameteri", "(III)V", (void *) android_glProgramParameteri__III }, 5203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateFramebuffer", "(II[II)V", (void *) android_glInvalidateFramebuffer__II_3II }, 5204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateFramebuffer", "(IILjava/nio/IntBuffer;)V", (void *) android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 }, 5205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateSubFramebuffer", "(II[IIIIII)V", (void *) android_glInvalidateSubFramebuffer__II_3IIIIII }, 5206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateSubFramebuffer", "(IILjava/nio/IntBuffer;IIII)V", (void *) android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII }, 5207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexStorage2D", "(IIIII)V", (void *) android_glTexStorage2D__IIIII }, 5208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexStorage3D", "(IIIIII)V", (void *) android_glTexStorage3D__IIIIII }, 5209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInternalformativ", "(IIII[II)V", (void *) android_glGetInternalformativ__IIII_3II }, 5210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInternalformativ", "(IIIILjava/nio/IntBuffer;)V", (void *) android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 }, 5211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall}; 5212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallint register_android_opengl_jni_GLES30(JNIEnv *_env) 5214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 5215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int err; 5216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 5217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return err; 5218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5219