138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* 238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * Copyright 2015 The Android Open Source Project 338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * 438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * Licensed under the Apache License, Version 2.0 (the "License"); 538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * you may not use this file except in compliance with the License. 638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * You may obtain a copy of the License at 738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * 838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * http://www.apache.org/licenses/LICENSE-2.0 938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * 1038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * Unless required by applicable law or agreed to in writing, software 1138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * distributed under the License is distributed on an "AS IS" BASIS, 1238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * See the License for the specific language governing permissions and 1438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * limitations under the License. 1538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos */ 1638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 1738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos// This source file is automatically generated 1838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 1938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#pragma GCC diagnostic ignored "-Wunused-variable" 2038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 2138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#pragma GCC diagnostic ignored "-Wunused-function" 2238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 2338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <stdint.h> 2438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <GLES3/gl32.h> 2538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <jni.h> 2638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <JNIHelp.h> 2738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <android_runtime/AndroidRuntime.h> 2838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <utils/misc.h> 2938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#include <assert.h> 3038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 3138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic int initialized = 0; 3238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 3338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jclass nioAccessClass; 3438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jclass bufferClass; 3538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jmethodID getBasePointerID; 3638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jmethodID getBaseArrayID; 3738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jmethodID getBaseArrayOffsetID; 3838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jfieldID positionID; 3938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jfieldID limitID; 4038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jfieldID elementSizeShiftID; 4138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 4238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 4338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* special calls implemented in Android's GLES wrapper used to more 4438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * efficiently bound-check passed arrays */ 4538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosextern "C" { 4638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#ifdef GL_VERSION_ES_CM_1_1 4738c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 4838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const GLvoid *ptr, GLsizei count); 4938c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 5038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const GLvoid *pointer, GLsizei count); 5138c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 5238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLsizei stride, const GLvoid *pointer, GLsizei count); 5338c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 5438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLsizei stride, const GLvoid *pointer, GLsizei count); 5538c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 5638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLsizei stride, const GLvoid *pointer, GLsizei count); 5738c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 5838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLsizei stride, const GLvoid *pointer, GLsizei count); 5938c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 6038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLsizei stride, const GLvoid *pointer, GLsizei count); 6138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#endif 6238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#ifdef GL_ES_VERSION_2_0 6338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 6438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 6538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 6638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 6738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#endif 6838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#ifdef GL_ES_VERSION_3_0 6938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 7038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLsizei stride, const GLvoid *pointer, GLsizei count) { 7138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glVertexAttribIPointer(indx, size, type, stride, pointer); 7238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 7338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#endif 7438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 7538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 7638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* Cache method IDs each time the class is loaded. */ 7738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 7838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 7938c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosnativeClassInit(JNIEnv *_env, jclass glImplClass) 8038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{ 8138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 8238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 8338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 8438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 8538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 8638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 8738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 8838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos "getBasePointer", "(Ljava/nio/Buffer;)J"); 8938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 9038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 9138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 9238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 9338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 9438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos positionID = _env->GetFieldID(bufferClass, "position", "I"); 9538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos limitID = _env->GetFieldID(bufferClass, "limit", "I"); 9638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos elementSizeShiftID = 9738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 9838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 9938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 10038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void * 10138c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 10238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{ 10338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint position; 10438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint limit; 10538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint elementSizeShift; 10638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jlong pointer; 10738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 10838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos position = _env->GetIntField(buffer, positionID); 10938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos limit = _env->GetIntField(buffer, limitID); 11038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 11138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos *remaining = (limit - position) << elementSizeShift; 11238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos pointer = _env->CallStaticLongMethod(nioAccessClass, 11338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos getBasePointerID, buffer); 11438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (pointer != 0L) { 11538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos *array = NULL; 11638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return reinterpret_cast<void*>(pointer); 11738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 11838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 11938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 12038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos getBaseArrayID, buffer); 12138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos *offset = _env->CallStaticIntMethod(nioAccessClass, 12238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos getBaseArrayOffsetID, buffer); 12338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 12438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return NULL; 12538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 12638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 12738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass ByteArrayGetter { 12838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 12938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 13038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetByteArrayElements(array, is_copy); 13138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 13238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 13338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass BooleanArrayGetter { 13438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 13538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 13638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetBooleanArrayElements(array, is_copy); 13738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 13838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 13938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass CharArrayGetter { 14038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 14138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 14238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetCharArrayElements(array, is_copy); 14338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 14438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 14538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass ShortArrayGetter { 14638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 14738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 14838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetShortArrayElements(array, is_copy); 14938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 15038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 15138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass IntArrayGetter { 15238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 15338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 15438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetIntArrayElements(array, is_copy); 15538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 15638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 15738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass LongArrayGetter { 15838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 15938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 16038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetLongArrayElements(array, is_copy); 16138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 16238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 16338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass FloatArrayGetter { 16438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 16538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 16638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetFloatArrayElements(array, is_copy); 16738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 16838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 16938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass DoubleArrayGetter { 17038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 17138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 17238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return _env->GetDoubleArrayElements(array, is_copy); 17338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 17438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 17538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 17638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballostemplate<typename JTYPEARRAY, typename ARRAYGETTER> 17738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void* 17838c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosgetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 17938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return ARRAYGETTER::Get(_env, array, is_copy); 18038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 18138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 18238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass ByteArrayReleaser { 18338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 18438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 18538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 18638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 18738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 18838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass BooleanArrayReleaser { 18938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 19038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 19138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 19238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 19338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 19438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass CharArrayReleaser { 19538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 19638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 19738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 19838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 19938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 20038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass ShortArrayReleaser { 20138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 20238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 20338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 20438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 20538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 20638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass IntArrayReleaser { 20738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 20838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 20938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 21038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 21138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 21238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass LongArrayReleaser { 21338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 21438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 21538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 21638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 21738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 21838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass FloatArrayReleaser { 21938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 22038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 22138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 22238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 22338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 22438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosclass DoubleArrayReleaser { 22538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballospublic: 22638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 22738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 22838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 22938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 23038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 23138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballostemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 23238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 23338c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosreleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 23438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ARRAYRELEASER::Release(_env, array, data, commit); 23538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 23638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 23738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 23838c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 23938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{ 24038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleasePrimitiveArrayCritical(array, data, 24138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos commit ? 0 : JNI_ABORT); 24238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 24338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 24438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void * 24538c1a7e732660212687cf375f5e5ed354b91e431Pablo CeballosgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 24638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char* buf = (char*) _env->GetDirectBufferAddress(buffer); 24738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (buf) { 24838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint position = _env->GetIntField(buffer, positionID); 24938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 25038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos buf += position << elementSizeShift; 25138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } else { 25238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/IllegalArgumentException", 25338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos "Must use a native order direct Buffer"); 25438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 25538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return (void*) buf; 25638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 25738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 25838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos// -------------------------------------------------------------------------- 25938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 26038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* 26138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * returns the number of values glGet returns for a given pname. 26238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * 26338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * The code below is written such that pnames requiring only one values 26438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * are the default (and are not explicitely tested for). This makes the 26538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * checking code much shorter/readable/efficient. 26638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * 26738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * This means that unknown pnames (e.g.: extensions) will default to 1. If 26838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * that unknown pname needs more than 1 value, then the validation check 26938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos * is incomplete and the app may crash if it passed the wrong number params. 27038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos */ 27138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic int getNeededCount(GLint pname) { 27238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos int needed = 1; 27338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#ifdef GL_ES_VERSION_2_0 27438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // GLES 2.x pnames 27538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos switch (pname) { 27638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_ALIASED_LINE_WIDTH_RANGE: 27738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_ALIASED_POINT_SIZE_RANGE: 27838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos needed = 2; 27938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 28038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 28138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_BLEND_COLOR: 28238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_COLOR_CLEAR_VALUE: 28338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_COLOR_WRITEMASK: 28438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_SCISSOR_BOX: 28538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_VIEWPORT: 28638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos needed = 4; 28738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 28838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 28938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_COMPRESSED_TEXTURE_FORMATS: 29038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 29138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 29238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 29338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_SHADER_BINARY_FORMATS: 29438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 29538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 29638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 29738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#endif 29838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 29938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#ifdef GL_VERSION_ES_CM_1_1 30038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // GLES 1.x pnames 30138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos switch (pname) { 30238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_ALIASED_LINE_WIDTH_RANGE: 30338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_ALIASED_POINT_SIZE_RANGE: 30438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_DEPTH_RANGE: 30538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_SMOOTH_LINE_WIDTH_RANGE: 30638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_SMOOTH_POINT_SIZE_RANGE: 30738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos needed = 2; 30838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 30938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 31038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_CURRENT_NORMAL: 31138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_POINT_DISTANCE_ATTENUATION: 31238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos needed = 3; 31338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 31438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 31538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_COLOR_CLEAR_VALUE: 31638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_COLOR_WRITEMASK: 31738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_CURRENT_COLOR: 31838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_CURRENT_TEXTURE_COORDS: 31938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_FOG_COLOR: 32038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_LIGHT_MODEL_AMBIENT: 32138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_SCISSOR_BOX: 32238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_VIEWPORT: 32338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos needed = 4; 32438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 32538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 32638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_MODELVIEW_MATRIX: 32738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_PROJECTION_MATRIX: 32838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_TEXTURE_MATRIX: 32938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos needed = 16; 33038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 33138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 33238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos case GL_COMPRESSED_TEXTURE_FORMATS: 33338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 33438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos break; 33538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 33638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos#endif 33738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return needed; 33838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 33938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 34038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballostemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 34138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 34238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 34338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosget 34438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 34538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 34638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType; 34738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage; 34838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos CTYPE *params_base = (CTYPE *) 0; 34938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 35038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos CTYPE *params = (CTYPE *) 0; 35138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos int _needed = 0; 35238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 35338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 35438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 35538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 35638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 35738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 35838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 35938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 36038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 36138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 36238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 36338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 36438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 36538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 36638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _needed = getNeededCount(pname); 36738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // if we didn't find this pname, we just assume the user passed 36838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // an array of the right size -- this might happen with extensions 36938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // or if we forget an enum here. 37038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < _needed) { 37138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 37238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 37338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length - offset < needed"; 37438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 37538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 37638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 37738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env, params_ref, (jboolean *)0); 37838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 37938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 38038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GET( 38138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 38238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (CTYPE *)params 38338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 38438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 38538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 38638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 38738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 38838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env, params_ref, params_base, !_exception); 38938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 39038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 39138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 39238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 39338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 39438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 39538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 39638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballostemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 39738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 39838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 39938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosgetarray 40038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 40138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 40238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType; 40338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage; 40438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos JTYPEARRAY _array = (JTYPEARRAY) 0; 40538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 40638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 40738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos CTYPE *params = (CTYPE *) 0; 40838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos int _needed = 0; 40938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 41038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 41138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining /= sizeof(CTYPE); // convert from bytes to item count 41238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _needed = getNeededCount(pname); 41338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // if we didn't find this pname, we just assume the user passed 41438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // an array of the right size -- this might happen with extensions 41538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos // or if we forget an enum here. 41638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_needed>0 && _remaining < _needed) { 41738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 41838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 41938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < needed"; 42038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 42138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 42238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 42338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 42438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env, _array, (jboolean *) 0); 42538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (CTYPE *) (_paramsBase + _bufferOffset); 42638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 42738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GET( 42838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 42938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (CTYPE *)params 43038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 43138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 43238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 43338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 43438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 43538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 43638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 43738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 43838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 43938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 44038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 44138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 44238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos// -------------------------------------------------------------------------- 44338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glBlendBarrier ( void ) */ 44438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 44538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glBlendBarrier__ 44638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this) { 44738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glBlendBarrier(); 44838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 44938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 45038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glCopyImageSubData ( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth ) */ 45138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 45238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glCopyImageSubData__IIIIIIIIIIIIIII 45338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint srcName, jint srcTarget, jint srcLevel, jint srcX, jint srcY, jint srcZ, jint dstName, jint dstTarget, jint dstLevel, jint dstX, jint dstY, jint dstZ, jint srcWidth, jint srcHeight, jint srcDepth) { 45438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glCopyImageSubData( 45538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)srcName, 45638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)srcTarget, 45738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)srcLevel, 45838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)srcX, 45938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)srcY, 46038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)srcZ, 46138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)dstName, 46238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)dstTarget, 46338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)dstLevel, 46438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)dstX, 46538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)dstY, 46638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)dstZ, 46738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)srcWidth, 46838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)srcHeight, 46938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)srcDepth 47038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 47138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 47238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 47338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDebugMessageControl ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */ 47438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 47538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDebugMessageControl__IIII_3IIZ 47638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jintArray ids_ref, jint offset, jboolean enabled) { 47738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 47838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 47938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 48038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *ids_base = (GLuint *) 0; 48138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 48238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *ids = (GLuint *) 0; 48338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 48438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!ids_ref) { 48538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 48638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 48738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "ids == null"; 48838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 48938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 49038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 49138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 49238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 49338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 49438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 49538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 49638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(ids_ref) - offset; 49738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < count) { 49838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 49938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 50038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length - offset < count < needed"; 50138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 50238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 50338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ids_base = (GLuint *) 50438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(ids_ref, (jboolean *)0); 50538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ids = ids_base + offset; 50638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 50738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDebugMessageControl( 50838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)source, 50938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 51038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)severity, 51138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)count, 51238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)ids, 51338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)enabled 51438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 51538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 51638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 51738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (ids_base) { 51838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 51938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos JNI_ABORT); 52038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 52138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 52238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 52338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 52438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 52538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 52638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDebugMessageControl ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled ) */ 52738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 52838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDebugMessageControl__IIIILjava_nio_IntBuffer_2Z 52938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jobject ids_buf, jboolean enabled) { 53038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 53138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 53238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 53338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 53438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 53538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 53638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *ids = (GLuint *) 0; 53738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 53838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 53938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < count) { 54038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 54138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 54238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < count < needed"; 54338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 54438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 54538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (ids == NULL) { 54638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 54738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ids = (GLuint *) (_idsBase + _bufferOffset); 54838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 54938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDebugMessageControl( 55038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)source, 55138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 55238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)severity, 55338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)count, 55438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)ids, 55538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)enabled 55638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 55738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 55838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 55938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 56038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT); 56138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 56238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 56338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 56438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 56538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 56638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 56738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDebugMessageInsert ( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf ) */ 56838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 56938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDebugMessageInsert__IIIIILjava_lang_String_2 57038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint source, jint type, jint id, jint severity, jint length, jstring buf) { 57138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 57238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 57338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 57438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char* _nativebuf = 0; 57538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 57638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!buf) { 57738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 57838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 57938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "buf == null"; 58038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 58138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 58238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _nativebuf = _env->GetStringUTFChars(buf, 0); 58338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 58438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDebugMessageInsert( 58538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)source, 58638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 58738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)id, 58838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)severity, 58938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)length, 59038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLchar *)_nativebuf 59138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 59238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 59338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 59438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_nativebuf) { 59538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseStringUTFChars(buf, _nativebuf); 59638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 59738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 59838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 59938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 60038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 60138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 60238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 60338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDebugMessageCallback ( GLDEBUGPROC callback, const void *userParam ) */ 60438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 60538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDebugMessageCallback(JNIEnv *_env, jobject _this, jobject callback) { 60638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 60738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 60838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ 60938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jint 61038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetDebugMessageLog__II_3II_3II_3II_3II_3II_3BI 61138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint count, jint bufSize, jintArray sources_ref, jint sourcesOffset, jintArray types_ref, jint typesOffset, jintArray ids_ref, jint idsOffset, jintArray severities_ref, jint severitiesOffset, jintArray lengths_ref, jint lengthsOffset, jbyteArray messageLog_ref, jint messageLogOffset) { 61238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 61338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return 0; 61438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 61538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 61638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ 61738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic uint 61838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 61938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref, jobject lengths_ref, jobject messageLog_ref) { 62038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 62138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return 0; 62238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 62338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 62438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ 62538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jobjectArray 62638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetDebugMessageLog__I_3II_3II_3II_3II 62738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint count, jintArray sources_ref, jint sourcesOffset, jintArray types_ref, jint typesOffset, jintArray ids_ref, jint idsOffset, jintArray severities_ref, jint severitiesOffset) { 62838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 62938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return 0; 63038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 63138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 63238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* GLuint glGetDebugMessageLog ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog ) */ 63338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jobjectArray 63438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 63538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint count, jobject sources_ref, jobject types_ref, jobject ids_ref, jobject severities_ref) { 63638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 63738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return 0; 63838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 63938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glPushDebugGroup ( GLenum source, GLuint id, GLsizei length, const GLchar *message ) */ 64038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 64138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glPushDebugGroup__IIILjava_lang_String_2 64238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint source, jint id, jint length, jstring message) { 64338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 64438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 64538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 64638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char* _nativemessage = 0; 64738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jsize _stringlen = 0; 64838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 64938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!message) { 65038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 65138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 65238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "message == null"; 65338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 65438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 65538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _nativemessage = _env->GetStringUTFChars(message, 0); 65638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _stringlen = _env->GetStringUTFLength(message); 65738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (length > _stringlen) { 65838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 65938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 66038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length of message is shorter than length argument"; 66138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 66238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 66338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 66438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glPushDebugGroup( 66538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)source, 66638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)id, 66738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)length, 66838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLchar *)_nativemessage 66938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 67038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 67138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 67238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_nativemessage) { 67338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseStringUTFChars(message, _nativemessage); 67438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 67538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 67638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 67738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 67838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 67938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 68038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 68138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glPopDebugGroup ( void ) */ 68238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 68338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glPopDebugGroup__ 68438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this) { 68538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glPopDebugGroup(); 68638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 68738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 68838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glObjectLabel ( GLenum identifier, GLuint name, GLsizei length, const GLchar *label ) */ 68938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 69038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glObjectLabel__IIILjava_lang_String_2 69138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint identifier, jint name, jint length, jstring label) { 69238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 69338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 69438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 69538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char* _nativelabel = 0; 69638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jsize _stringlen = 0; 69738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 69838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (label) { 69938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _nativelabel = _env->GetStringUTFChars(label, 0); 70038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _stringlen = _env->GetStringUTFLength(label); 70138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (length > _stringlen) { 70238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 70338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 70438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length of label is shorter than length argument"; 70538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 70638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 70738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 70838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 70938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glObjectLabel( 71038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)identifier, 71138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)name, 71238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)length, 71338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLchar *)_nativelabel 71438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 71538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 71638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 71738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_nativelabel) { 71838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseStringUTFChars(label, _nativelabel); 71938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 72038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 72138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 72238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 72338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 72438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 72538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 72638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetObjectLabel ( GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label ) */ 72738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jstring 72838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetObjectLabel(JNIEnv *_env, jobject _this, jint identifier, jint name) { 72938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 73038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return NULL; 73138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 73238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 73338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glObjectPtrLabel ( const void *ptr, GLsizei length, const GLchar *label ) */ 73438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 73538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glObjectPtrLabel(JNIEnv *_env, jobject _this, jlong ptr, jstring label) { 73638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 73738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 73838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 73938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetObjectPtrLabel ( const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label ) */ 74038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jstring 74138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetObjectPtrLabel(JNIEnv *_env, jobject _this, jlong ptr) { 74238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 74338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return NULL; 74438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 74538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 74638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetPointerv ( GLenum pname, void **params ) */ 74738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jlong 74838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetPointerv(JNIEnv *_env, jobject _this, jint pname) { 74938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "not yet implemented"); 75038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return NULL; 75138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 75238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 75338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glEnablei ( GLenum target, GLuint index ) */ 75438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 75538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glEnablei__II 75638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint index) { 75738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glEnablei( 75838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 75938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)index 76038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 76138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 76238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 76338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDisablei ( GLenum target, GLuint index ) */ 76438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 76538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDisablei__II 76638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint index) { 76738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDisablei( 76838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 76938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)index 77038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 77138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 77238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 77338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glBlendEquationi ( GLuint buf, GLenum mode ) */ 77438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 77538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glBlendEquationi__II 77638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint buf, jint mode) { 77738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glBlendEquationi( 77838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)buf, 77938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)mode 78038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 78138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 78238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 78338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glBlendEquationSeparatei ( GLuint buf, GLenum modeRGB, GLenum modeAlpha ) */ 78438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 78538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glBlendEquationSeparatei__III 78638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint buf, jint modeRGB, jint modeAlpha) { 78738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glBlendEquationSeparatei( 78838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)buf, 78938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)modeRGB, 79038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)modeAlpha 79138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 79238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 79338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 79438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glBlendFunci ( GLuint buf, GLenum src, GLenum dst ) */ 79538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 79638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glBlendFunci__III 79738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint buf, jint src, jint dst) { 79838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glBlendFunci( 79938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)buf, 80038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)src, 80138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)dst 80238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 80338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 80438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 80538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glBlendFuncSeparatei ( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */ 80638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 80738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glBlendFuncSeparatei__IIIII 80838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint buf, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) { 80938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glBlendFuncSeparatei( 81038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)buf, 81138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)srcRGB, 81238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)dstRGB, 81338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)srcAlpha, 81438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)dstAlpha 81538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 81638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 81738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 81838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glColorMaski ( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a ) */ 81938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 82038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glColorMaski__IZZZZ 82138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint index, jboolean r, jboolean g, jboolean b, jboolean a) { 82238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glColorMaski( 82338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)index, 82438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)r, 82538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)g, 82638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)b, 82738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)a 82838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 82938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 83038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 83138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* GLboolean glIsEnabledi ( GLenum target, GLuint index ) */ 83238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jboolean 83338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glIsEnabledi__II 83438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint index) { 83538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLboolean _returnValue; 83638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _returnValue = glIsEnabledi( 83738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 83838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)index 83938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 84038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return (jboolean)_returnValue; 84138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 84238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 84338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDrawElementsBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex ) */ 84438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 84538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDrawElementsBaseVertex__IIILjava_nio_Buffer_2I 84638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint basevertex) { 84738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 84838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 84938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 85038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jarray _array = (jarray) 0; 85138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 85238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 85338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos void *indices = (void *) 0; 85438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 85538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos indices = (void *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 85638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < count-basevertex) { 85738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 85838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 85938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < count-basevertex < needed"; 86038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 86138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 86238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (indices == NULL) { 86338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 86438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos indices = (void *) (_indicesBase + _bufferOffset); 86538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 86638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDrawElementsBaseVertex( 86738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)mode, 86838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)count, 86938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 87038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (void *)indices, 87138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)basevertex 87238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 87338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 87438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 87538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 87638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos releasePointer(_env, _array, indices, JNI_FALSE); 87738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 87838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 87938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 88038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 88138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 88238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 88338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDrawRangeElementsBaseVertex ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex ) */ 88438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 88538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDrawRangeElementsBaseVertex__IIIIILjava_nio_Buffer_2I 88638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf, jint basevertex) { 88738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 88838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 88938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 89038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jarray _array = (jarray) 0; 89138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 89238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 89338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos void *indices = (void *) 0; 89438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 89538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos indices = (void *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 89638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < count-basevertex) { 89738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 89838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 89938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < count-basevertex < needed"; 90038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 90138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 90238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (indices == NULL) { 90338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 90438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos indices = (void *) (_indicesBase + _bufferOffset); 90538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 90638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDrawRangeElementsBaseVertex( 90738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)mode, 90838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)start, 90938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)end, 91038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)count, 91138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 91238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (void *)indices, 91338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)basevertex 91438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 91538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 91638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 91738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 91838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos releasePointer(_env, _array, indices, JNI_FALSE); 91938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 92038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 92138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 92238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 92338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 92438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 92538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDrawElementsInstancedBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount, GLint basevertex ) */ 92638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 92738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDrawElementsInstancedBaseVertex__IIILjava_nio_Buffer_2II 92838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount, jint basevertex) { 92938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 93038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 93138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 93238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jarray _array = (jarray) 0; 93338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 93438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 93538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos void *indices = (void *) 0; 93638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 93738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos indices = (void *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); 93838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < count-basevertex) { 93938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 94038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 94138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < count-basevertex < needed"; 94238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 94338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 94438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (indices == NULL) { 94538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 94638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos indices = (void *) (_indicesBase + _bufferOffset); 94738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 94838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDrawElementsInstancedBaseVertex( 94938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)mode, 95038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)count, 95138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 95238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (void *)indices, 95338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)instanceCount, 95438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint) basevertex 95538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 95638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 95738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 95838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 95938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos releasePointer(_env, _array, indices, JNI_FALSE); 96038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 96138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 96238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 96338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glDrawElementsInstancedBaseVertex ( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount, GLint basevertex ) */ 96438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 96538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glDrawElementsInstancedBaseVertex__IIIIII 96638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount, jint basevertex) { 96738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glDrawElementsInstancedBaseVertex( 96838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)mode, 96938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)count, 97038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 97138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (void *)static_cast<uintptr_t>(indicesOffset), 97238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)instanceCount, 97338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)basevertex 97438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 97538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 97638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glFramebufferTexture ( GLenum target, GLenum attachment, GLuint texture, GLint level ) */ 97738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 97838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glFramebufferTexture__IIII 97938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level) { 98038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glFramebufferTexture( 98138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 98238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)attachment, 98338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)texture, 98438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)level 98538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 98638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 98738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 98838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glPrimitiveBoundingBox ( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW ) */ 98938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 99038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glPrimitiveBoundingBox__FFFFFFFF 99138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jfloat minX, jfloat minY, jfloat minZ, jfloat minW, jfloat maxX, jfloat maxY, jfloat maxZ, jfloat maxW) { 99238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glPrimitiveBoundingBox( 99338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)minX, 99438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)minY, 99538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)minZ, 99638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)minW, 99738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)maxX, 99838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)maxY, 99938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)maxZ, 100038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)maxW 100138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 100238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 100338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 100438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* GLenum glGetGraphicsResetStatus ( void ) */ 100538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic jint 100638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetGraphicsResetStatus__ 100738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this) { 100838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLenum _returnValue; 100938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _returnValue = glGetGraphicsResetStatus(); 101038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return (jint)_returnValue; 101138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 101238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 101338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glReadnPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data ) */ 101438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 101538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glReadnPixels__IIIIIIILjava_nio_Buffer_2 101638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jint bufSize, jobject data_buf) { 101738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 101838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 101938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 102038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jarray _array = (jarray) 0; 102138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 102238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 102338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos void *data = (void *) 0; 102438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 102538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos data = (void *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 102638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 102738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 102838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 102938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < bufSize < needed"; 103038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 103138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 103238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (data == NULL) { 103338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 103438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos data = (void *) (_dataBase + _bufferOffset); 103538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 103638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glReadnPixels( 103738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)x, 103838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)y, 103938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)width, 104038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)height, 104138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)format, 104238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)type, 104338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 104438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (void *)data 104538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 104638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 104738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 104838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 104938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos releasePointer(_env, _array, data, _exception ? JNI_FALSE : JNI_TRUE); 105038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 105138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 105238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 105338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 105438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 105538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 105638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetnUniformfv ( GLuint program, GLint location, GLsizei bufSize, GLfloat *params ) */ 105738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 105838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetnUniformfv__III_3FI 105938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jfloatArray params_ref, jint offset) { 106038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 106138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 106238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 106338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLfloat *params_base = (GLfloat *) 0; 106438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 106538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLfloat *params = (GLfloat *) 0; 106638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 106738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 106838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 106938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 107038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 107138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 107238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 107338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 107438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 107538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 107638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 107738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 107838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 107938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 108038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 108138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 108238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 108338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length - offset < bufSize < needed"; 108438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 108538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 108638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLfloat *) 108738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetFloatArrayElements(params_ref, (jboolean *)0); 108838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 108938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 109038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetnUniformfv( 109138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)program, 109238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)location, 109338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 109438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat *)params 109538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 109638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 109738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 109838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 109938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 110038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 110138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 110238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 110338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 110438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 110538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 110638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 110738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetnUniformfv ( GLuint program, GLint location, GLsizei bufSize, GLfloat *params ) */ 110838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 110938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetnUniformfv__IIILjava_nio_FloatBuffer_2 111038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) { 111138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 111238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 111338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 111438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jfloatArray _array = (jfloatArray) 0; 111538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 111638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 111738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLfloat *params = (GLfloat *) 0; 111838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 111938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 112038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 112138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 112238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 112338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < bufSize < needed"; 112438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 112538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 112638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 112738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 112838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLfloat *) (_paramsBase + _bufferOffset); 112938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 113038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetnUniformfv( 113138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)program, 113238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)location, 113338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 113438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat *)params 113538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 113638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 113738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 113838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 113938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0); 114038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 114138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 114238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 114338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 114438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 114538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 114638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetnUniformiv ( GLuint program, GLint location, GLsizei bufSize, GLint *params ) */ 114738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 114838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetnUniformiv__III_3II 114938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jintArray params_ref, jint offset) { 115038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 115138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 115238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 115338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params_base = (GLint *) 0; 115438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 115538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 115638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 115738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 115838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 115938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 116038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 116138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 116238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 116338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 116438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 116538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 116638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 116738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 116838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 116938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 117038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 117138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 117238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 117338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length - offset < bufSize < needed"; 117438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 117538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 117638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLint *) 117738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 117838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 117938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 118038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetnUniformiv( 118138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)program, 118238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)location, 118338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 118438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 118538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 118638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 118738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 118838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 118938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 119038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 119138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 119238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 119338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 119438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 119538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 119638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 119738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetnUniformiv ( GLuint program, GLint location, GLsizei bufSize, GLint *params ) */ 119838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 119938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetnUniformiv__IIILjava_nio_IntBuffer_2 120038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) { 120138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 120238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 120338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 120438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 120538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 120638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 120738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 120838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 120938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 121038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 121138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 121238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 121338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < bufSize < needed"; 121438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 121538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 121638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 121738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 121838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *) (_paramsBase + _bufferOffset); 121938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 122038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetnUniformiv( 122138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)program, 122238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)location, 122338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 122438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 122538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 122638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 122738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 122838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 122938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 123038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 123138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 123238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 123338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 123438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 123538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 123638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetnUniformuiv ( GLuint program, GLint location, GLsizei bufSize, GLuint *params ) */ 123738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 123838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetnUniformuiv__III_3II 123938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jintArray params_ref, jint offset) { 124038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 124138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 124238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 124338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params_base = (GLuint *) 0; 124438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 124538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 124638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 124738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 124838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 124938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 125038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 125138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 125238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 125338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 125438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 125538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 125638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 125738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 125838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 125938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 126038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 126138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 126238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 126338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "length - offset < bufSize < needed"; 126438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 126538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 126638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLuint *) 126738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 126838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 126938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 127038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetnUniformuiv( 127138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)program, 127238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)location, 127338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 127438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 127538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 127638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 127738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 127838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 127938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 128038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 128138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 128238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 128338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 128438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 128538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 128638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 128738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetnUniformuiv ( GLuint program, GLint location, GLsizei bufSize, GLuint *params ) */ 128838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 128938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetnUniformuiv__IIILjava_nio_IntBuffer_2 129038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint location, jint bufSize, jobject params_buf) { 129138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 129238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 129338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 129438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 129538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 129638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 129738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 129838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 129938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 130038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_remaining < bufSize) { 130138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 130238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 130338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "remaining() < bufSize < needed"; 130438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 130538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 130638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 130738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 130838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *) (_paramsBase + _bufferOffset); 130938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 131038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetnUniformuiv( 131138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)program, 131238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)location, 131338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)bufSize, 131438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 131538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 131638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 131738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 131838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 131938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 132038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 132138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 132238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 132338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 132438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 132538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 132638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glMinSampleShading ( GLfloat value ) */ 132738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 132838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glMinSampleShading__F 132938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jfloat value) { 133038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glMinSampleShading( 133138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLfloat)value 133238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 133338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 133438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 133538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glPatchParameteri ( GLenum pname, GLint value ) */ 133638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 133738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glPatchParameteri__II 133838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint pname, jint value) { 133938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glPatchParameteri( 134038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 134138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint)value 134238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 134338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 134438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 134538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexParameterIiv ( GLenum target, GLenum pname, const GLint *params ) */ 134638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 134738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexParameterIiv__II_3II 134838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 134938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 135038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 135138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 135238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params_base = (GLint *) 0; 135338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 135438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 135538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 135638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 135738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 135838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 135938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 136038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 136138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 136238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 136338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 136438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 136538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 136638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 136738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 136838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 136938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLint *) 137038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 137138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 137238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 137338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexParameterIiv( 137438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 137538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 137638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 137738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 137838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 137938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 138038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 138138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 138238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos JNI_ABORT); 138338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 138438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 138538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 138638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 138738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 138838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 138938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexParameterIiv ( GLenum target, GLenum pname, const GLint *params ) */ 139038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 139138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexParameterIiv__IILjava_nio_IntBuffer_2 139238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 139338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 139438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 139538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 139638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 139738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 139838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 139938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 140038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 140138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *) (_paramsBase + _bufferOffset); 140238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 140338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexParameterIiv( 140438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 140538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 140638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 140738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 140838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 140938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 141038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 141138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 141238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 141338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexParameterIuiv ( GLenum target, GLenum pname, const GLuint *params ) */ 141438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 141538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexParameterIuiv__II_3II 141638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 141738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 141838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 141938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 142038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params_base = (GLuint *) 0; 142138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 142238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 142338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 142438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 142538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 142638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 142738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 142838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 142938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 143038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 143138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 143238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 143338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 143438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 143538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 143638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 143738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLuint *) 143838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 143938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 144038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 144138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexParameterIuiv( 144238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 144338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 144438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 144538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 144638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 144738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 144838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 144938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 145038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos JNI_ABORT); 145138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 145238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 145338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 145438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 145538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 145638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 145738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexParameterIuiv ( GLenum target, GLenum pname, const GLuint *params ) */ 145838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 145938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexParameterIuiv__IILjava_nio_IntBuffer_2 146038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 146138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 146238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 146338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 146438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 146538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 146638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 146738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 146838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 146938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *) (_paramsBase + _bufferOffset); 147038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 147138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexParameterIuiv( 147238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 147338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 147438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 147538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 147638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 147738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 147838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 147938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 148038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 148138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetTexParameterIiv ( GLenum target, GLenum pname, GLint *params ) */ 148238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 148338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetTexParameterIiv__II_3II 148438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 148538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 148638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 148738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 148838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params_base = (GLint *) 0; 148938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 149038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 149138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 149238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 149338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 149438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 149538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 149638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 149738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 149838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 149938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 150038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 150138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 150238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 150338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 150438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 150538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLint *) 150638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 150738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 150838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 150938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetTexParameterIiv( 151038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 151138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 151238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 151338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 151438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 151538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 151638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 151738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 151838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 151938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 152038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 152138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 152238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 152338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 152438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 152538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetTexParameterIiv ( GLenum target, GLenum pname, GLint *params ) */ 152638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 152738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetTexParameterIiv__IILjava_nio_IntBuffer_2 152838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 152938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 153038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 153138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 153238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 153338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 153438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 153538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 153638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 153738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *) (_paramsBase + _bufferOffset); 153838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 153938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetTexParameterIiv( 154038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 154138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 154238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 154338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 154438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 154538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 154638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 154738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 154838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 154938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetTexParameterIuiv ( GLenum target, GLenum pname, GLuint *params ) */ 155038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 155138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetTexParameterIuiv__II_3II 155238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 155338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 155438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 155538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 155638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params_base = (GLuint *) 0; 155738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 155838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 155938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 156038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 156138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 156238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 156338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 156438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 156538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 156638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 156738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 156838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 156938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 157038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 157138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 157238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 157338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLuint *) 157438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 157538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 157638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 157738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetTexParameterIuiv( 157838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 157938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 158038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 158138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 158238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 158338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 158438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 158538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 158638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 158738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 158838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 158938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 159038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 159138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 159238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 159338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetTexParameterIuiv ( GLenum target, GLenum pname, GLuint *params ) */ 159438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 159538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetTexParameterIuiv__IILjava_nio_IntBuffer_2 159638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 159738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 159838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 159938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 160038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 160138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 160238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 160338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 160438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 160538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *) (_paramsBase + _bufferOffset); 160638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 160738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetTexParameterIuiv( 160838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 160938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 161038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 161138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 161238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 161338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 161438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 161538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 161638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 161738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glSamplerParameterIiv ( GLuint sampler, GLenum pname, const GLint *param ) */ 161838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 161938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glSamplerParameterIiv__II_3II 162038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { 162138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 162238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 162338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 162438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *param_base = (GLint *) 0; 162538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 162638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *param = (GLint *) 0; 162738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 162838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!param_ref) { 162938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 163038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 163138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "param == null"; 163238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 163338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 163438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 163538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 163638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 163738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 163838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 163938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 164038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(param_ref) - offset; 164138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param_base = (GLint *) 164238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(param_ref, (jboolean *)0); 164338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param = param_base + offset; 164438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 164538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glSamplerParameterIiv( 164638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 164738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 164838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)param 164938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 165038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 165138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 165238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (param_base) { 165338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(param_ref, (jint*)param_base, 165438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos JNI_ABORT); 165538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 165638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 165738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 165838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 165938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 166038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 166138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glSamplerParameterIiv ( GLuint sampler, GLenum pname, const GLint *param ) */ 166238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 166338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glSamplerParameterIiv__IILjava_nio_IntBuffer_2 166438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 166538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 166638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 166738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 166838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *param = (GLint *) 0; 166938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 167038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 167138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (param == NULL) { 167238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 167338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param = (GLint *) (_paramBase + _bufferOffset); 167438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 167538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glSamplerParameterIiv( 167638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 167738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 167838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)param 167938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 168038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 168138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT); 168238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 168338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 168438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 168538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glSamplerParameterIuiv ( GLuint sampler, GLenum pname, const GLuint *param ) */ 168638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 168738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glSamplerParameterIuiv__II_3II 168838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { 168938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 169038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 169138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 169238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *param_base = (GLuint *) 0; 169338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 169438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *param = (GLuint *) 0; 169538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 169638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!param_ref) { 169738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 169838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 169938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "param == null"; 170038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 170138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 170238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 170338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 170438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 170538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 170638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 170738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 170838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(param_ref) - offset; 170938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param_base = (GLuint *) 171038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(param_ref, (jboolean *)0); 171138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param = param_base + offset; 171238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 171338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glSamplerParameterIuiv( 171438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 171538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 171638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)param 171738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 171838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 171938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 172038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (param_base) { 172138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(param_ref, (jint*)param_base, 172238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos JNI_ABORT); 172338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 172438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 172538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 172638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 172738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 172838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 172938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glSamplerParameterIuiv ( GLuint sampler, GLenum pname, const GLuint *param ) */ 173038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 173138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glSamplerParameterIuiv__IILjava_nio_IntBuffer_2 173238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 173338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 173438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 173538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 173638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *param = (GLuint *) 0; 173738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 173838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param = (GLuint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 173938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (param == NULL) { 174038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 174138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos param = (GLuint *) (_paramBase + _bufferOffset); 174238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 174338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glSamplerParameterIuiv( 174438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 174538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 174638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)param 174738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 174838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 174938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT); 175038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 175138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 175238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 175338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetSamplerParameterIiv ( GLuint sampler, GLenum pname, GLint *params ) */ 175438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 175538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetSamplerParameterIiv__II_3II 175638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { 175738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 175838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 175938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 176038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params_base = (GLint *) 0; 176138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 176238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 176338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 176438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 176538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 176638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 176738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 176838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 176938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 177038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 177138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 177238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 177338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 177438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 177538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 177638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 177738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLint *) 177838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 177938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 178038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 178138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetSamplerParameterIiv( 178238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 178338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 178438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 178538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 178638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 178738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 178838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 178938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 179038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 179138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 179238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 179338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 179438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 179538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 179638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 179738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetSamplerParameterIiv ( GLuint sampler, GLenum pname, GLint *params ) */ 179838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 179938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetSamplerParameterIiv__IILjava_nio_IntBuffer_2 180038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 180138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 180238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 180338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 180438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLint *params = (GLint *) 0; 180538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 180638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 180738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 180838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 180938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLint *) (_paramsBase + _bufferOffset); 181038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 181138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetSamplerParameterIiv( 181238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 181338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 181438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLint *)params 181538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 181638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 181738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 181838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 181938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 182038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 182138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetSamplerParameterIuiv ( GLuint sampler, GLenum pname, GLuint *params ) */ 182238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 182338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetSamplerParameterIuiv__II_3II 182438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { 182538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _exception = 0; 182638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionType = NULL; 182738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos const char * _exceptionMessage = NULL; 182838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params_base = (GLuint *) 0; 182938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 183038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 183138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 183238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (!params_ref) { 183338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 183438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 183538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "params == null"; 183638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 183738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 183838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (offset < 0) { 183938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception = 1; 184038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 184138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exceptionMessage = "offset < 0"; 184238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos goto exit; 184338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 184438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _remaining = _env->GetArrayLength(params_ref) - offset; 184538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params_base = (GLuint *) 184638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->GetIntArrayElements(params_ref, (jboolean *)0); 184738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = params_base + offset; 184838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 184938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetSamplerParameterIuiv( 185038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 185138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 185238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 185338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 185438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 185538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosexit: 185638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params_base) { 185738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 185838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _exception ? JNI_ABORT: 0); 185938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 186038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_exception) { 186138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jniThrowException(_env, _exceptionType, _exceptionMessage); 186238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 186338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 186438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 186538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glGetSamplerParameterIuiv ( GLuint sampler, GLenum pname, GLuint *params ) */ 186638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 186738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glGetSamplerParameterIuiv__IILjava_nio_IntBuffer_2 186838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 186938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jintArray _array = (jintArray) 0; 187038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _bufferOffset = (jint) 0; 187138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos jint _remaining; 187238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos GLuint *params = (GLuint *) 0; 187338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 187438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 187538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (params == NULL) { 187638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 187738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos params = (GLuint *) (_paramsBase + _bufferOffset); 187838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 187938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glGetSamplerParameterIuiv( 188038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)sampler, 188138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)pname, 188238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint *)params 188338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 188438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos if (_array) { 188538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 188638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos } 188738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 188838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 188938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexBuffer ( GLenum target, GLenum internalformat, GLuint buffer ) */ 189038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 189138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexBuffer__III 189238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer) { 189338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexBuffer( 189438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 189538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)internalformat, 189638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)buffer 189738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 189838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 189938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 190038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexBufferRange ( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size ) */ 190138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 190238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexBufferRange__IIIII 190338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint buffer, jint offset, jint size) { 190438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexBufferRange( 190538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 190638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)internalformat, 190738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLuint)buffer, 190838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLintptr)offset, 190938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizeiptr)size 191038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 191138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 191238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 191338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos/* void glTexStorage3DMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations ) */ 191438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic void 191538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosandroid_glTexStorage3DMultisample__IIIIIIZ 191638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height, jint depth, jboolean fixedsamplelocations) { 191738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos glTexStorage3DMultisample( 191838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)target, 191938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)samples, 192038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLenum)internalformat, 192138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)width, 192238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)height, 192338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLsizei)depth, 192438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos (GLboolean)fixedsamplelocations 192538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos ); 192638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 192738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 192838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic const char *classPathName = "android/opengl/GLES32"; 192938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 193038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosstatic const JNINativeMethod methods[] = { 193138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"_nativeClassInit", "()V", (void*)nativeClassInit }, 193238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glBlendBarrier", "()V", (void *) android_glBlendBarrier__ }, 193338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glCopyImageSubData", "(IIIIIIIIIIIIIII)V", (void *) android_glCopyImageSubData__IIIIIIIIIIIIIII }, 193438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDebugMessageControl", "(IIII[IIZ)V", (void *) android_glDebugMessageControl__IIII_3IIZ }, 193538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDebugMessageControl", "(IIIILjava/nio/IntBuffer;Z)V", (void *) android_glDebugMessageControl__IIIILjava_nio_IntBuffer_2Z }, 193638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDebugMessageInsert", "(IIIIILjava/lang/String;)V", (void *) android_glDebugMessageInsert__IIIIILjava_lang_String_2 }, 193738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDebugMessageCallback", "(Landroid/opengl/GLES32$DebugProc;)V", (void *) android_glDebugMessageCallback }, 193838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetDebugMessageLog", "(II[II[II[II[II[II[BI)I", (void *) android_glGetDebugMessageLog__II_3II_3II_3II_3II_3II_3BI }, 193938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetDebugMessageLog", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I", (void *) android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 }, 194038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetDebugMessageLog", "(I[II[II[II[II)[Ljava/lang/String;", (void *) android_glGetDebugMessageLog__I_3II_3II_3II_3II }, 194138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetDebugMessageLog", "(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;", (void *) android_glGetDebugMessageLog__ILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 194238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glPushDebugGroup", "(IIILjava/lang/String;)V", (void *) android_glPushDebugGroup__IIILjava_lang_String_2 }, 194338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glPopDebugGroup", "()V", (void *) android_glPopDebugGroup__ }, 194438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glObjectLabel", "(IIILjava/lang/String;)V", (void *) android_glObjectLabel__IIILjava_lang_String_2 }, 194538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetObjectLabel", "(II)Ljava/lang/String;", (void *) android_glGetObjectLabel }, 194638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glObjectPtrLabel", "(JLjava/lang/String;)V", (void *) android_glObjectPtrLabel }, 194738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetObjectPtrLabel", "(J)Ljava/lang/String;", (void *) android_glGetObjectPtrLabel }, 194838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetPointerv", "(I)J", (void *) android_glGetPointerv }, 194938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glEnablei", "(II)V", (void *) android_glEnablei__II }, 195038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDisablei", "(II)V", (void *) android_glDisablei__II }, 195138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glBlendEquationi", "(II)V", (void *) android_glBlendEquationi__II }, 195238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glBlendEquationSeparatei", "(III)V", (void *) android_glBlendEquationSeparatei__III }, 195338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glBlendFunci", "(III)V", (void *) android_glBlendFunci__III }, 195438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glBlendFuncSeparatei", "(IIIII)V", (void *) android_glBlendFuncSeparatei__IIIII }, 195538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glColorMaski", "(IZZZZ)V", (void *) android_glColorMaski__IZZZZ }, 195638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glIsEnabledi", "(II)Z", (void *) android_glIsEnabledi__II }, 195738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDrawElementsBaseVertex", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsBaseVertex__IIILjava_nio_Buffer_2I }, 195838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDrawRangeElementsBaseVertex", "(IIIIILjava/nio/Buffer;I)V", (void *) android_glDrawRangeElementsBaseVertex__IIIIILjava_nio_Buffer_2I }, 195938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDrawElementsInstancedBaseVertex", "(IIILjava/nio/Buffer;II)V", (void *) android_glDrawElementsInstancedBaseVertex__IIILjava_nio_Buffer_2II }, 196038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glDrawElementsInstancedBaseVertex", "(IIIIII)V", (void *) android_glDrawElementsInstancedBaseVertex__IIIIII }, 196138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glFramebufferTexture", "(IIII)V", (void *) android_glFramebufferTexture__IIII }, 196238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glPrimitiveBoundingBox", "(FFFFFFFF)V", (void *) android_glPrimitiveBoundingBox__FFFFFFFF }, 196338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetGraphicsResetStatus", "()I", (void *) android_glGetGraphicsResetStatus__ }, 196438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glReadnPixels", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glReadnPixels__IIIIIIILjava_nio_Buffer_2 }, 196538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetnUniformfv", "(III[FI)V", (void *) android_glGetnUniformfv__III_3FI }, 196638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetnUniformfv", "(IIILjava/nio/FloatBuffer;)V", (void *) android_glGetnUniformfv__IIILjava_nio_FloatBuffer_2 }, 196738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetnUniformiv", "(III[II)V", (void *) android_glGetnUniformiv__III_3II }, 196838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetnUniformiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetnUniformiv__IIILjava_nio_IntBuffer_2 }, 196938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetnUniformuiv", "(III[II)V", (void *) android_glGetnUniformuiv__III_3II }, 197038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetnUniformuiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetnUniformuiv__IIILjava_nio_IntBuffer_2 }, 197138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glMinSampleShading", "(F)V", (void *) android_glMinSampleShading__F }, 197238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glPatchParameteri", "(II)V", (void *) android_glPatchParameteri__II }, 197338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexParameterIiv", "(II[II)V", (void *) android_glTexParameterIiv__II_3II }, 197438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIiv__IILjava_nio_IntBuffer_2 }, 197538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexParameterIuiv", "(II[II)V", (void *) android_glTexParameterIuiv__II_3II }, 197638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterIuiv__IILjava_nio_IntBuffer_2 }, 197738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetTexParameterIiv", "(II[II)V", (void *) android_glGetTexParameterIiv__II_3II }, 197838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetTexParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIiv__IILjava_nio_IntBuffer_2 }, 197938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetTexParameterIuiv", "(II[II)V", (void *) android_glGetTexParameterIuiv__II_3II }, 198038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetTexParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterIuiv__IILjava_nio_IntBuffer_2 }, 198138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glSamplerParameterIiv", "(II[II)V", (void *) android_glSamplerParameterIiv__II_3II }, 198238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glSamplerParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIiv__IILjava_nio_IntBuffer_2 }, 198338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glSamplerParameterIuiv", "(II[II)V", (void *) android_glSamplerParameterIuiv__II_3II }, 198438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glSamplerParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameterIuiv__IILjava_nio_IntBuffer_2 }, 198538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetSamplerParameterIiv", "(II[II)V", (void *) android_glGetSamplerParameterIiv__II_3II }, 198638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetSamplerParameterIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIiv__IILjava_nio_IntBuffer_2 }, 198738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetSamplerParameterIuiv", "(II[II)V", (void *) android_glGetSamplerParameterIuiv__II_3II }, 198838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glGetSamplerParameterIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameterIuiv__IILjava_nio_IntBuffer_2 }, 198938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexBuffer", "(III)V", (void *) android_glTexBuffer__III }, 199038c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexBufferRange", "(IIIII)V", (void *) android_glTexBufferRange__IIIII }, 199138c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{"glTexStorage3DMultisample", "(IIIIIIZ)V", (void *) android_glTexStorage3DMultisample__IIIIIIZ }, 199238c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos}; 199338c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos 199438c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballosint register_android_opengl_jni_GLES32(JNIEnv *_env) 199538c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos{ 199638c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos int err; 199738c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 199838c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos return err; 199938c1a7e732660212687cf375f5e5ed354b91e431Pablo Ceballos} 2000