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