1560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/*
2560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich**
3560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** Copyright 2009, The Android Open Source Project
4560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich**
524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Licensed under the Apache License, Version 2.0 (the "License");
624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** you may not use this file except in compliance with the License.
724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** You may obtain a copy of the License at
8560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich**
924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes**     http://www.apache.org/licenses/LICENSE-2.0
10560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich**
1124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Unless required by applicable law or agreed to in writing, software
1224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** distributed under the License is distributed on an "AS IS" BASIS,
1324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** See the License for the specific language governing permissions and
15560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** limitations under the License.
16560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich*/
17560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
18560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich// This source file is automatically generated
19560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES2/gl2.h>
212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES2/gl2ext.h>
222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
239626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h>
249626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h>
25560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <android_runtime/AndroidRuntime.h>
26560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <utils/misc.h>
27560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <assert.h>
28560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
29560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic int initialized = 0;
30560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
31560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jclass nioAccessClass;
32560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jclass bufferClass;
33560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jmethodID getBasePointerID;
34560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jmethodID getBaseArrayID;
35560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jmethodID getBaseArrayOffsetID;
36560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jfieldID positionID;
37560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jfieldID limitID;
38560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jfieldID elementSizeShiftID;
39560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/* special calls implemented in Android's GLES wrapper used to more
422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * efficiently bound-check passed arrays */
432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianextern "C" {
442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1
452ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        const GLvoid *ptr, GLsizei count);
472ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        const GLvoid *pointer, GLsizei count);
492ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
512ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
532ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
552ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
572ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0
612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
66cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#ifdef GL_ES_VERSION_3_0
67cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFaddenstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
68cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden        GLsizei stride, const GLvoid *pointer, GLsizei count) {
69cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    glVertexAttribIPointer(indx, size, type, stride, pointer);
70cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden}
71cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#endif
722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
74560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* Cache method IDs each time the class is loaded. */
75560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
76560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
7724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass)
78560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
79560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
80560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
81560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
82560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
83560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
84560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
85560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
86560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            "getBasePointer", "(Ljava/nio/Buffer;)J");
87560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
88560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
89560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
90560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
91560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
92560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    positionID = _env->GetFieldID(bufferClass, "position", "I");
93560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    limitID = _env->GetFieldID(bufferClass, "limit", "I");
94560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    elementSizeShiftID =
95560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
96560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
97560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
98560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void *
9917045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint position;
102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint limit;
103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint elementSizeShift;
104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jlong pointer;
105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    position = _env->GetIntField(buffer, positionID);
107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    limit = _env->GetIntField(buffer, limitID);
108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    *remaining = (limit - position) << elementSizeShift;
110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    pointer = _env->CallStaticLongMethod(nioAccessClass,
111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            getBasePointerID, buffer);
112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pointer != 0L) {
113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        *array = NULL;
11401c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        return reinterpret_cast<void*>(pointer);
115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
11624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            getBaseArrayID, buffer);
11917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    *offset = _env->CallStaticIntMethod(nioAccessClass,
120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            getBaseArrayOffsetID, buffer);
12124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
12217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    return NULL;
123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
126560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _env->ReleasePrimitiveArrayCritical(array, data,
1292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian                       commit ? 0 : JNI_ABORT);
130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void *
133560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) {
134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (buf) {
136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        jint position = _env->GetIntField(buffer, positionID);
137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        buf += position << elementSizeShift;
139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    } else {
14024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException",
14124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes                          "Must use a native order direct Buffer");
142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return (void*) buf;
144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian// --------------------------------------------------------------------------
1472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/*
1492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * returns the number of values glGet returns for a given pname.
1502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian *
1512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * The code below is written such that pnames requiring only one values
1522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * are the default (and are not explicitely tested for). This makes the
1532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * checking code much shorter/readable/efficient.
1542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian *
1552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * This means that unknown pnames (e.g.: extensions) will default to 1. If
1562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * that unknown pname needs more than 1 value, then the validation check
1572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * is incomplete and the app may crash if it passed the wrong number params.
1582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian */
1592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int getNeededCount(GLint pname) {
1602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int needed = 1;
1612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0
1622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // GLES 2.x pnames
1632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
1642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_LINE_WIDTH_RANGE:
1652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_POINT_SIZE_RANGE:
1662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 2;
1672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_BLEND_COLOR:
1702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_CLEAR_VALUE:
1712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_WRITEMASK:
1722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SCISSOR_BOX:
1732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_VIEWPORT:
1742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 4;
1752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COMPRESSED_TEXTURE_FORMATS:
1782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
1792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SHADER_BINARY_FORMATS:
1822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
1832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
1852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
1862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1
1882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // GLES 1.x pnames
1892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
1902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_LINE_WIDTH_RANGE:
1912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_POINT_SIZE_RANGE:
1922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_DEPTH_RANGE:
1932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SMOOTH_LINE_WIDTH_RANGE:
1942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SMOOTH_POINT_SIZE_RANGE:
1952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 2;
1962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
1972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
1982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_NORMAL:
1992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_POINT_DISTANCE_ATTENUATION:
2002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 3;
2012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_CLEAR_VALUE:
2042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_WRITEMASK:
2052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_COLOR:
2062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_TEXTURE_COORDS:
2072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_FOG_COLOR:
2082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_LIGHT_MODEL_AMBIENT:
2092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SCISSOR_BOX:
2102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_VIEWPORT:
2112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 4;
2122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_MODELVIEW_MATRIX:
2152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_PROJECTION_MATRIX:
2162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_TEXTURE_MATRIX:
2172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 16;
2182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COMPRESSED_TEXTURE_FORMATS:
2212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
2222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
2252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    return needed;
226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiantemplate <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
2292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void
2302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianget
2312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian  (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
2322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
2332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType;
2342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage;
2352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params_base = (CTYPE *) 0;
2362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _remaining;
2372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params = (CTYPE *) 0;
2382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed = 0;
2392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (!params_ref) {
2412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
2422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
2432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "params == null";
2442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
2452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (offset < 0) {
2472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
2482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
2492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "offset < 0";
2502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
2512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _remaining = _env->GetArrayLength(params_ref) - offset;
2532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _needed = getNeededCount(pname);
2542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // if we didn't find this pname, we just assume the user passed
2552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // an array of the right size -- this might happen with extensions
2562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // or if we forget an enum here.
2572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
2582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
2592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
2602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < needed";
2612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
2622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params_base = (CTYPE *)
2642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params = params_base + offset;
2662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    GET(
2682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (GLenum)pname,
2692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (CTYPE *)params
2702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    );
2712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
2732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (params_base) {
2742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exception ? JNI_ABORT: 0);
2762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
2782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
2792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
2812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiantemplate <typename CTYPE, void GET(GLenum, CTYPE*)>
2842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void
2852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiangetarray
2862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
2882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType;
2892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage;
2902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jarray _array = (jarray) 0;
2912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _bufferOffset = (jint) 0;
2922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _remaining;
2932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params = (CTYPE *) 0;
2942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed = 0;
2952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
297cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    _remaining /= sizeof(CTYPE);    // convert from bytes to item count
2982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _needed = getNeededCount(pname);
2992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // if we didn't find this pname, we just assume the user passed
3002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // an array of the right size -- this might happen with extensions
3012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // or if we forget an enum here.
3022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_needed>0 && _remaining < _needed) {
3032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
3042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
3052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < needed";
3062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
3072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (params == NULL) {
3092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        params = (CTYPE *) (_paramsBase + _bufferOffset);
3112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    GET(
3132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (GLenum)pname,
3142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (CTYPE *)params
3152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    );
3162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_array) {
3192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
3222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich// --------------------------------------------------------------------------
327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glActiveTexture ( GLenum texture ) */
328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glActiveTexture__I
330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glActiveTexture(
332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)texture
333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glAttachShader ( GLuint program, GLuint shader ) */
337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glAttachShader__II
339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint shader) {
340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glAttachShader(
341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindAttribLocation ( GLuint program, GLuint index, const char *name ) */
347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindAttribLocation__IILjava_lang_String_2
349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jstring name) {
3502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
3512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
3522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
356428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes        _exception = 1;
3572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
3582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindAttribLocation(
364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
3752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
3762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindBuffer ( GLenum target, GLuint buffer ) */
380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindBuffer__II
382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint buffer) {
383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindBuffer(
384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)buffer
386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindFramebuffer ( GLenum target, GLuint framebuffer ) */
390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindFramebuffer__II
392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint framebuffer) {
393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindFramebuffer(
394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)framebuffer
396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindRenderbuffer ( GLenum target, GLuint renderbuffer ) */
400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindRenderbuffer__II
402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint renderbuffer) {
403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindRenderbuffer(
404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindTexture ( GLenum target, GLuint texture ) */
410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindTexture__II
412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint texture) {
413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindTexture(
414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture
416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendColor__FFFF
422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBlendColor(
424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)red,
425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)green,
426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)blue,
427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)alpha
428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendEquation ( GLenum mode ) */
432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendEquation__I
434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
43573108675c944ab4ee89631dced23566b12341b66Jack Palevich    glBlendEquation(
43673108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)mode
43773108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha ) */
441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendEquationSeparate__II
443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint modeRGB, jint modeAlpha) {
44473108675c944ab4ee89631dced23566b12341b66Jack Palevich    glBlendEquationSeparate(
44573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)modeRGB,
44673108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)modeAlpha
44773108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendFunc__II
453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBlendFunc(
455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)sfactor,
456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)dfactor
457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */
461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendFuncSeparate__IIII
463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) {
46473108675c944ab4ee89631dced23566b12341b66Jack Palevich    glBlendFuncSeparate(
46573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)srcRGB,
46673108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)dstRGB,
46773108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)srcAlpha,
46873108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)dstAlpha
46973108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */
473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBufferData__IILjava_nio_Buffer_2I
475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) {
4762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
4772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
4782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
48017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (data_buf) {
48517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        if (_remaining < size) {
4872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exception = 1;
4882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionType = "java/lang/IllegalArgumentException";
4892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionMessage = "remaining() < size < needed";
490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            goto exit;
491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        }
492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49337c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (data_buf && data == NULL) {
49417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
49517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
49617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBufferData(
498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizeiptr)size,
500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data,
501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)usage
502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */
514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBufferSubData__IIILjava_nio_Buffer_2
516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) {
5172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
5182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
5192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
52117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
52517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < size) {
5272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < size < needed";
530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
53217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
53317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
53417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
53517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBufferSubData(
537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLintptr)offset,
539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizeiptr)size,
540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data
541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glCheckFramebufferStatus ( GLenum target ) */
553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCheckFramebufferStatus__I
555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target) {
556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum _returnValue;
557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glCheckFramebufferStatus(
558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target
559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
560cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClear ( GLbitfield mask ) */
564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClear__I
566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClear(
568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLbitfield)mask
569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearColor__FFFF
575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClearColor(
577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)red,
578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)green,
579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)blue,
580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)alpha
581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearDepthf ( GLclampf depth ) */
585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearDepthf__F
587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat depth) {
588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClearDepthf(
589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)depth
590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearStencil ( GLint s ) */
594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearStencil__I
596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint s) {
597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClearStencil(
598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)s
599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glColorMask__ZZZZ
605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glColorMask(
607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)red,
608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)green,
609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)blue,
610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)alpha
611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompileShader ( GLuint shader ) */
615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompileShader__I
617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCompileShader(
619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
62817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
63217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
63317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
63417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
63517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
63617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCompressedTexImage2D(
638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border,
644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)imageSize,
645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data
646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
65717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
66117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
66217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
66317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
66417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
66517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCompressedTexSubImage2D(
667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)imageSize,
675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data
676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCopyTexImage2D__IIIIIIII
685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCopyTexImage2D(
687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border
695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCopyTexSubImage2D__IIIIIIII
701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCopyTexSubImage2D(
703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLuint glCreateProgram ( void ) */
715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCreateProgram__
717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint _returnValue;
719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glCreateProgram();
720cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLuint glCreateShader ( GLenum type ) */
724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCreateShader__I
726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint type) {
727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint _returnValue;
728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glCreateShader(
729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type
730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
731cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCullFace ( GLenum mode ) */
735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCullFace__I
737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCullFace(
739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteBuffers__I_3II
746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
7472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
7482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
7492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!buffers_ref) {
7552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
7612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
7682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers_base = (GLuint *)
774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers = buffers_base + offset;
776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteBuffers(
778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (buffers_base) {
784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
7872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteBuffers__ILjava_nio_IntBuffer_2
795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
7962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
7972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
7982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
80017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
80417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
8062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
8072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
81117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
81217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
81317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
81417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteBuffers(
816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, buffers, JNI_FALSE);
823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
8242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */
830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteFramebuffers__I_3II
832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
8332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
8342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
8352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers_base = (GLuint *) 0;
837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!framebuffers_ref) {
8412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
8422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "framebuffers == null";
844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
8472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
8482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
8532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
8542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
8552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
8562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < n < needed";
8572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
8582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers_base = (GLuint *)
860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0);
861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers = framebuffers_base + offset;
862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteFramebuffers(
864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (framebuffers_base) {
870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base,
871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
8732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */
879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteFramebuffers__ILjava_nio_IntBuffer_2
881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
8822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
8832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
8842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
88617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
89017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset);
8912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
8922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
8932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
8942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < n < needed";
8952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
8962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
89717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (framebuffers == NULL) {
89817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
89917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset);
90017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteFramebuffers(
902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
9052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
9062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, framebuffers, JNI_FALSE);
909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
9102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
9112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
9122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteProgram ( GLuint program ) */
916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteProgram__I
918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteProgram(
920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */
925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteRenderbuffers__I_3II
927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
9282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
9292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
9302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers_base = (GLuint *) 0;
932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!renderbuffers_ref) {
9362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
9372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "renderbuffers == null";
939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
9422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
9432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
9482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
9492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
9502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
9512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < n < needed";
9522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
9532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers_base = (GLuint *)
955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0);
956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers = renderbuffers_base + offset;
957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteRenderbuffers(
959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (renderbuffers_base) {
965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base,
966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
9682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
9692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
9702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */
974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2
976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
9772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
9782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
9792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
98117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
98517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset);
9862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
9872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
9882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
9892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < n < needed";
9902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
9912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
99217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (renderbuffers == NULL) {
99317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
99417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset);
99517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteRenderbuffers(
997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
10002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
10012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
1002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, renderbuffers, JNI_FALSE);
1004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
10052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
10062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
10072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
1008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteShader ( GLuint shader ) */
1011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteShader__I
1013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
1014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteShader(
1015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
1016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
1020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteTextures__I_3II
1022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
10232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
10242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
10252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures_base = (GLuint *) 0;
1027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
1029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!textures_ref) {
10312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "textures == null";
1034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
10372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(textures_ref) - offset;
1043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
10442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
1047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures_base = (GLuint *)
1050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
1051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures = textures_base + offset;
1052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteTextures(
1054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
1056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (textures_base) {
1060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
1061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
1062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
10632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
10652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
1069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteTextures__ILjava_nio_IntBuffer_2
1071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
10722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
10732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
10742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
107617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
1079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
108017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset);
1081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
10822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
1085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
108717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (textures == NULL) {
108817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
108917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        textures = (GLuint *) (_texturesBase + _bufferOffset);
109017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteTextures(
1092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
1094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, textures, JNI_FALSE);
1099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
11002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthFunc ( GLenum func ) */
1106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthFunc__I
1108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint func) {
1109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDepthFunc(
1110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func
1111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthMask ( GLboolean flag ) */
1115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthMask__Z
1117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jboolean flag) {
1118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDepthMask(
1119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)flag
1120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
1124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthRangef__FF
1126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
1127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDepthRangef(
1128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)zNear,
1129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)zFar
1130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDetachShader ( GLuint program, GLuint shader ) */
1134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDetachShader__II
1136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint shader) {
1137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDetachShader(
1138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
1140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDisable ( GLenum cap ) */
1144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDisable__I
1146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
1147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDisable(
1148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
1149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDisableVertexAttribArray ( GLuint index ) */
1153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDisableVertexAttribArray__I
1155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index) {
1156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDisableVertexAttribArray(
1157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index
1158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
1162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDrawArrays__III
1164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
1165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDrawArrays(
1166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode,
1167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)first,
1168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count
1169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1172224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */
1173224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void
1174224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glDrawElements__IIII
1175224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) {
11762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
11772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
11782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1179224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    glDrawElements(
1180224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)mode,
1181224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLsizei)count,
1182224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)type,
118301c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
1184224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    );
11852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1188224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich}
1189224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich
1190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
1191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDrawElements__IIILjava_nio_Buffer_2
1193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
11942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
11952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
11962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
119817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *indices = (GLvoid *) 0;
1201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
120217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
1203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < count) {
12042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
12052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
12062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < count < needed";
1207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
120917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (indices == NULL) {
121017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
121117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        indices = (GLvoid *) (_indicesBase + _bufferOffset);
121217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDrawElements(
1214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode,
1215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
1216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
1217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)indices
1218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, indices, JNI_FALSE);
1223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
12242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
12252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
12262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glEnable ( GLenum cap ) */
1230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glEnable__I
1232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
1233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glEnable(
1234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
1235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glEnableVertexAttribArray ( GLuint index ) */
1239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glEnableVertexAttribArray__I
1241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index) {
1242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glEnableVertexAttribArray(
1243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index
1244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFinish ( void ) */
1248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFinish__
1250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
1251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFinish();
1252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFlush ( void ) */
1255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFlush__
1257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
1258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFlush();
1259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer ) */
1262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFramebufferRenderbuffer__IIII
1264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) {
1265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFramebufferRenderbuffer(
1266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
1267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
1268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)renderbuffertarget,
1269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
1270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level ) */
1274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFramebufferTexture2D__IIIII
1276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint textarget, jint texture, jint level) {
1277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFramebufferTexture2D(
1278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
1279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
1280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)textarget,
1281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture,
1282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level
1283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFrontFace ( GLenum mode ) */
1287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFrontFace__I
1289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
1290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFrontFace(
1291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
1292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
1296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenBuffers__I_3II
1298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
1299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
13002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
13012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
1303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
1305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!buffers_ref) {
1307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
1310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
1319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
1323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers_base = (GLuint *)
1326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
1327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers = buffers_base + offset;
1328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenBuffers(
1330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
1332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (buffers_base) {
1336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
1337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
13392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
1345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenBuffers__ILjava_nio_IntBuffer_2
1347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
1348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
13492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
13502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
135217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
1355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
135617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
1357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
1361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
136317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
136417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
136517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
136617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenBuffers(
1368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
1370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE);
1375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
13762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenerateMipmap ( GLenum target ) */
1382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenerateMipmap__I
1384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target) {
1385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenerateMipmap(
1386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target
1387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */
1391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenFramebuffers__I_3II
1393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
1394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
13952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
13962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers_base = (GLuint *) 0;
1398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
1400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!framebuffers_ref) {
1402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "framebuffers == null";
1405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
14142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
14152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
14162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
14172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < n < needed";
14182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
14192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
1420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers_base = (GLuint *)
1421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0);
1422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers = framebuffers_base + offset;
1423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenFramebuffers(
1425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
1427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (framebuffers_base) {
1431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base,
1432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
14342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */
1440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenFramebuffers__ILjava_nio_IntBuffer_2
1442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
14432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
14442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
14452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
144717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
1450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
145117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset);
14522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
14532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
14542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
14552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < n < needed";
14562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
14572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
145817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (framebuffers == NULL) {
145917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
146017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset);
146117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenFramebuffers(
1463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
1465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
14662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
14672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
1468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
14692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, framebuffers, _exception ? JNI_FALSE : JNI_TRUE);
14702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
14712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
14722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
1473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */
1477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenRenderbuffers__I_3II
1479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
1480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
14812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
14822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers_base = (GLuint *) 0;
1484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
1486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!renderbuffers_ref) {
1488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "renderbuffers == null";
1491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
15002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
15012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
15022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
15032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < n < needed";
15042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
15052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
1506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers_base = (GLuint *)
1507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0);
1508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers = renderbuffers_base + offset;
1509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenRenderbuffers(
1511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
1513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (renderbuffers_base) {
1517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base,
1518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
15202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
15212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
15222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */
1526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenRenderbuffers__ILjava_nio_IntBuffer_2
1528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
15292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
15302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
15312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
153317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
1536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
153717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset);
15382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < n) {
15392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
15402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
15412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < n < needed";
15422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
15432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
154417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (renderbuffers == NULL) {
154517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
154617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset);
154717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenRenderbuffers(
1549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
1551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
15522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
15532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
1554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
15552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, renderbuffers, _exception ? JNI_FALSE : JNI_TRUE);
15562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
15572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
15582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
1559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */
1563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenTextures__I_3II
1565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
1566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
15672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
15682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures_base = (GLuint *) 0;
1570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
1572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!textures_ref) {
1574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "textures == null";
1577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(textures_ref) - offset;
1586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
1590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures_base = (GLuint *)
1593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
1594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures = textures_base + offset;
1595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenTextures(
1597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
1599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (textures_base) {
1603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
1604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
16062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */
1612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenTextures__ILjava_nio_IntBuffer_2
1614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
1615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
16162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
16172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
1618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
161917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
1622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
162317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset);
1624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
1628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
163017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (textures == NULL) {
163117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
163217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        textures = (GLuint *) (_texturesBase + _bufferOffset);
163317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenTextures(
1635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
1637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE);
1642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
16432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveAttrib__III_3II_3II_3II_3BI
1651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) {
1652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
16532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
16542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
1656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size_base = (GLint *) 0;
1659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type_base = (GLenum *) 0;
1662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name_base = (char *) 0;
1665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _nameRemaining;
1666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name = (char *) 0;
1667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
1669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
1672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
1675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
1678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
1681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
1682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
1683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
1684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!size_ref) {
1686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "size == null";
1689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sizeOffset < 0) {
1692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size_base = (GLint *)
1699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size = size_base + sizeOffset;
1701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!type_ref) {
1703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "type == null";
1706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (typeOffset < 0) {
1709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type_base = (GLenum *)
1716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type = type_base + typeOffset;
1718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name_ref) {
1720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
1723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (nameOffset < 0) {
1726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "nameOffset < 0";
1729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
1732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name_base = (char *)
1733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
1734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name = name_base + nameOffset;
1735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveAttrib(
1737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (name_base) {
1748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
1749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (type_base) {
1752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (size_base) {
1756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
1760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
1761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
17632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
17642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
17652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
1771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
1772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _lengthArray = (jarray) 0;
177317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _lengthBufferOffset = (jint) 0;
1774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _sizeArray = (jarray) 0;
177517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _typeArray = (jarray) 0;
177717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
178517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
178617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
178717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
178817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
178917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
179017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
179117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
179217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (size == NULL) {
179317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
179417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
179517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
179617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (type == NULL) {
179717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
179817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
179917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveAttrib(
1801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
180701c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<char *>(name)
1808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
180917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_typeArray) {
181017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
1811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_sizeArray) {
18132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
1814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
181517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_lengthArray) {
181617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _lengthArray, length, JNI_TRUE);
1817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1820dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1821dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
1822dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveAttrib1
1823dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
1824dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _exception = 0;
1825dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionType;
1826dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionMessage;
1827dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size_base = (GLint *) 0;
1828dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
1829dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
1830dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type_base = (GLenum *) 0;
1831dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
1832dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
1833dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1834dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
1835dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1836dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
1837dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
1838dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
1839dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
1840dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1841dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
1842dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1843dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
1844dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1845dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
1846dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1847dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!size_ref) {
1848dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1849dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1850dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "size == null";
1851dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1852dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1853dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (sizeOffset < 0) {
1854dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1855dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1856dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1857dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1858dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1859dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1860dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size_base = (GLint *)
1861dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1862dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = size_base + sizeOffset;
1863dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1864dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!type_ref) {
1865dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1866dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1867dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "type == null";
1868dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1869dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1870dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (typeOffset < 0) {
1871dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1872dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1873dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1874dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1875dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1876dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1877dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type_base = (GLenum *)
1878dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1879dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = type_base + typeOffset;
1880dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1881dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveAttrib(
1882dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
1883dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
1884dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLsizei)len,
1885dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
1886dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
1887dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
1888dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
1889dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
1890dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferexit:
1891dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type_base) {
1892dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1893dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
1894dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1895dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size_base) {
1896dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1897dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
1898dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1899dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception != 1) {
1900dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF(buf);
1901dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1902dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
1903dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
1904dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1905dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception) {
1906dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
1907dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1908dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (result == 0) {
1909dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF("");
1910dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1911dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1912dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
1913dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
1914dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1915dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1916dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
1917dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveAttrib2
1918dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
1919dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _sizeArray = (jarray) 0;
1920dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1921dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _typeArray = (jarray) 0;
1922dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1923dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _lengthRemaining;
1924dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLsizei *length = (GLsizei *) 0;
1925dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
1926dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
1927dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
1928dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
1929dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1930dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
1931dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1932dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
1933dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
1934dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
1935dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
1936dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1937dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
1938dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1939dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
1940dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1941dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
1942dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1943dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1944dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
1945dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
1946dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size == NULL) {
1947dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
1948dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
1949dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1950dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type == NULL) {
1951dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
1952dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
1953dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1954dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveAttrib(
1955dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
1956dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
1957dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLsizei)len,
1958dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
1959dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
1960dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
1961dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
1962dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
1963dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1964dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_typeArray) {
1965dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
1966dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1967dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_sizeArray) {
1968dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
1969dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1970dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    result = _env->NewStringUTF(buf);
1971dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
1972dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
1973dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1974dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
1975dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
1976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__III_3II_3II_3II_3BI
1979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) {
1980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
19812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
19822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
1984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size_base = (GLint *) 0;
1987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type_base = (GLenum *) 0;
1990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name_base = (char *) 0;
1993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _nameRemaining;
1994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name = (char *) 0;
1995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
1997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
19982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
2000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
2003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
2006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
2009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
2010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
2011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
2012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!size_ref) {
2014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "size == null";
2017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sizeOffset < 0) {
2020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
2023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
2026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size_base = (GLint *)
2027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
2028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size = size_base + sizeOffset;
2029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!type_ref) {
2031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "type == null";
2034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (typeOffset < 0) {
2037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
2040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
2043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type_base = (GLenum *)
2044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
2045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type = type_base + typeOffset;
2046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name_ref) {
2048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
2051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (nameOffset < 0) {
2054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "nameOffset < 0";
2057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
2060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name_base = (char *)
2061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
2062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name = name_base + nameOffset;
2063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveUniform(
2065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
2067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
2068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
2069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
2070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
2071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
2072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (name_base) {
2076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
2077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (type_base) {
2080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
2081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (size_base) {
2084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
2085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
2088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
2089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
20912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
2097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
2099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
2100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _lengthArray = (jarray) 0;
210117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _lengthBufferOffset = (jint) 0;
2102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _sizeArray = (jarray) 0;
210317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
2104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _typeArray = (jarray) 0;
210517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
2106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
2107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
2108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
2109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
2110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
2111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
2112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
211317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
211417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
211517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
211617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
211717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
211817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
211917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
212017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (size == NULL) {
212117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
212217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
212317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
212417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (type == NULL) {
212517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
212617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
212717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveUniform(
2129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
2131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
2132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
2133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
2134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
213501c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<char *>(name)
2136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
213717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_typeArray) {
213817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
2139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_sizeArray) {
21412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
2142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
214317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_lengthArray) {
214417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _lengthArray, length, JNI_TRUE);
2145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2148dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
2149dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
2150dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveUniform1
2151dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
2152dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _exception = 0;
2153dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionType;
2154dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionMessage;
2155dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2156dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size_base = (GLint *) 0;
2157dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
2158dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
2159dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2160dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type_base = (GLenum *) 0;
2161dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
2162dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
2163dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2164dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
2165dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2166dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
2167dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len);
2168dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
2169dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
2170dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2171dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
2172dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2173dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
2174dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
2175dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
2176dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2177dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2178dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!size_ref) {
2179dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
2180dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2181dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "size == null";
2182dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
2183dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2184dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (sizeOffset < 0) {
2185dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
2186dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2187dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
2188dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
2189dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2190dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
2191dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size_base = (GLint *)
2192dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
2193dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = size_base + sizeOffset;
2194dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2195dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!type_ref) {
2196dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
2197dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2198dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "type == null";
2199dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
2200dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2201dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (typeOffset < 0) {
2202dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
2203dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2204dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
2205dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
2206dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2207dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
2208dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type_base = (GLenum *)
2209dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
2210dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = type_base + typeOffset;
2211dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2212dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveUniform(
2213dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
2214dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
2215dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLsizei)len,
2216dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
2217dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
2218dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
2219dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
2220dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
2221dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2222dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferexit:
2223dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type_base) {
2224dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
2225dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
2226dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2227dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size_base) {
2228dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
2229dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
2230dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2231dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception != 1) {
2232dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF(buf);
2233dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2234dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
2235dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
2236dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2237dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception) {
2238dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
2239dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2240dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (result == 0) {
2241dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF("");
2242dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2243dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
2244dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
2245dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2246dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
2247dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
2248dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveUniform2
2249dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
2250dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _sizeArray = (jarray) 0;
2251dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
2252dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _typeArray = (jarray) 0;
2253dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
2254dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
2255dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
2256dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
2257dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
2258dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2259dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
2260dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
2261dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len);
2262dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
2263dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
2264dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2265dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
2266dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2267dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
2268dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
2269dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
2270dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2271dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2272dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
2273dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
2274dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2275dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size == NULL) {
2276dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
2277dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
2278dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2279dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type == NULL) {
2280dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
2281dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
2282dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2283dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveUniform(
2284dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
2285dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
2286dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        len,
2287dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
2288dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
2289dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
2290dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
2291dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
2292dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2293dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_typeArray) {
2294dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
2295dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2296dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_sizeArray) {
2297dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
2298dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2299dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    result = _env->NewStringUTF(buf);
2300dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
2301dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
2302dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2303dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
2304dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
2305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
2306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__II_3II_3II
2308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jintArray count_ref, jint countOffset, jintArray shaders_ref, jint shadersOffset) {
2309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
23102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
23112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count_base = (GLsizei *) 0;
2313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _countRemaining;
2314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count = (GLsizei *) 0;
2315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders_base = (GLuint *) 0;
2316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
2317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
2318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!count_ref) {
2320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
23212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "count == null";
2323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (countOffset < 0) {
2326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
23272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "countOffset < 0";
2329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _countRemaining = _env->GetArrayLength(count_ref) - countOffset;
23322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_countRemaining < 1) {
23332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
23342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
23352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - countOffset < 1 < needed";
23362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
23372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    count_base = (GLsizei *)
2339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(count_ref, (jboolean *)0);
2340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    count = count_base + countOffset;
2341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!shaders_ref) {
2343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
23442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shaders == null";
2346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shadersOffset < 0) {
2349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
23502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shadersOffset < 0";
2352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _shadersRemaining = _env->GetArrayLength(shaders_ref) - shadersOffset;
23552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_shadersRemaining < maxcount) {
23562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
23572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
23582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - shadersOffset < maxcount < needed";
23592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
23602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders_base = (GLuint *)
2362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
2363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders = shaders_base + shadersOffset;
2364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetAttachedShaders(
2366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)maxcount,
2368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)count,
2369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders
2370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shaders_base) {
2374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
2375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (count_base) {
2378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(count_ref, count_base,
2379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
23812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
2387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
2389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jobject count_buf, jobject shaders_buf) {
23902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
23912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
23922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _countArray = (jarray) 0;
239417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _countBufferOffset = (jint) 0;
2395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _shadersArray = (jarray) 0;
239617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _shadersBufferOffset = (jint) 0;
2397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _countRemaining;
2398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count = (GLsizei *) 0;
2399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
2400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
2401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
24022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (count_buf) {
24032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining, &_countBufferOffset);
24042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        if (_countRemaining < 1) {
24052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exception = 1;
24062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exceptionType = "java/lang/IllegalArgumentException";
24072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exceptionMessage = "remaining() < 1 < needed";
24082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            goto exit;
24092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        }
24102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
24112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (shaders_buf) {
24122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset);
24132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        if (_shadersRemaining < maxcount) {
24142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exception = 1;
24152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exceptionType = "java/lang/IllegalArgumentException";
24162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _exceptionMessage = "remaining() < maxcount < needed";
24172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            goto exit;
24182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        }
24192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
24202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (count_buf && count == NULL) {
24212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        char * _countBase = (char *)_env->GetPrimitiveArrayCritical(_countArray, (jboolean *) 0);
24222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        count = (GLsizei *) (_countBase + _countBufferOffset);
24232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
24242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (shaders_buf && shaders == NULL) {
24252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0);
242617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        shaders = (GLuint *) (_shadersBase + _shadersBufferOffset);
242717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetAttachedShaders(
2429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)maxcount,
2431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)count,
2432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders
2433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
24342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
24352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
2436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_shadersArray) {
24372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _shadersArray, shaders, _exception ? JNI_FALSE : JNI_TRUE);
243817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
243917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_countArray) {
24402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _countArray, count, _exception ? JNI_FALSE : JNI_TRUE);
24412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
24422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
24432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
2444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
244789be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian/* GLint glGetAttribLocation ( GLuint program, const char *name ) */
2448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
2449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttribLocation__ILjava_lang_String_2
2450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jstring name) {
24512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
24522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
24532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
245489be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian    GLint _returnValue = 0;
2455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
2456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
2458428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes        _exception = 1;
24592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
2461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
2464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetAttribLocation(
2466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
2468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
2472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
2473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
24752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2478cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
2479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
2482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__I_3ZI
2484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
24852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    get<jbooleanArray, GLboolean, glGetBooleanv>(_env, _this, pname, params_ref, offset);
2486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
2489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2
2491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
24922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    getarray<GLboolean, glGetBooleanv>(_env, _this, pname, params_buf);
2493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__II_3II
2497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
249873108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
24992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
25002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
250173108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params_base = (GLint *) 0;
250273108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
250373108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
250473108675c944ab4ee89631dced23566b12341b66Jack Palevich
250573108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (!params_ref) {
250673108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
25072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
250973108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
251073108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
251173108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (offset < 0) {
251273108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
25132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
251573108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
251673108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
251773108675c944ab4ee89631dced23566b12341b66Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
251873108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
251973108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
25202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
252273108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
252373108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
252473108675c944ab4ee89631dced23566b12341b66Jack Palevich    params_base = (GLint *)
252573108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
252673108675c944ab4ee89631dced23566b12341b66Jack Palevich    params = params_base + offset;
252773108675c944ab4ee89631dced23566b12341b66Jack Palevich
252873108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
252973108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
253073108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
253173108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
253273108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
253373108675c944ab4ee89631dced23566b12341b66Jack Palevich
253473108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
253573108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (params_base) {
253673108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
253773108675c944ab4ee89631dced23566b12341b66Jack Palevich            _exception ? JNI_ABORT: 0);
253873108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
25392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
25402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
25412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
2547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
254873108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
25492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
25502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
255173108675c944ab4ee89631dced23566b12341b66Jack Palevich    jarray _array = (jarray) 0;
255217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
255373108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
255473108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
255573108675c944ab4ee89631dced23566b12341b66Jack Palevich
255617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
255773108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
255873108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
25592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
256173108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
256273108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
256317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
256417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
256517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
256617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
256773108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
256873108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
256973108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
257073108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
257173108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
257273108675c944ab4ee89631dced23566b12341b66Jack Palevich
257373108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
257473108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_array) {
257573108675c944ab4ee89631dced23566b12341b66Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
257673108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
25772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
25782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
25792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glGetError ( void ) */
2583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
2584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetError__
2585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
2586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum _returnValue;
2587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetError();
2588cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
2589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
2592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__I_3FI
2594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
25952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    get<jfloatArray, GLfloat, glGetFloatv>(_env, _this, pname, params_ref, offset);
2596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
2599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2
2601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
26022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    getarray<GLfloat, glGetFloatv>(_env, _this, pname, params_buf);
2603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
2605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__III_3II
2607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) {
2608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
26092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
26102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
26172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
26232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFramebufferAttachmentParameteriv(
2633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
2635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
26442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
26452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
26462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
2650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2
2652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) {
2653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
265417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
265817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
265917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
266017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
266117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
266217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFramebufferAttachmentParameteriv(
2664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
2666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
26702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
2675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__I_3II
2677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
26782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    get<jintArray, GLint, glGetIntegerv>(_env, _this, pname, params_ref, offset);
2679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
2682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__ILjava_nio_IntBuffer_2
2684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
26852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    getarray<GLint, glGetIntegerv>(_env, _this, pname, params_buf);
2686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
2689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__II_3II
2691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint pname, jintArray params_ref, jint offset) {
2692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
26932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
26942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
27012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
27072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
27122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
27132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
27142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
27152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 1 < needed";
27162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
27172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(
2723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
27332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
27342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
27352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
2739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__IILjava_nio_IntBuffer_2
2741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint pname, jobject params_buf) {
27422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
27432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
27442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
274617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
275017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
27512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
27522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
27532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
27542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
27552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
27562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
275717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
275817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
275917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
276017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(
2762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
27662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
27672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
2768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
27692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
27702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
27712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
27722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
2773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
277624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h>
2777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
277924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetProgramInfoLog(JNIEnv *_env, jobject, jint shader) {
2780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint infoLen = 0;
2781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
278224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (!infoLen) {
278324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return _env->NewStringUTF("");
2784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
278524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    char* buf = (char*) malloc(infoLen);
278624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (buf == NULL) {
278724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
278824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return NULL;
2789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
279024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    glGetProgramInfoLog(shader, infoLen, NULL, buf);
279124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    jstring result = _env->NewStringUTF(buf);
279224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    free(buf);
279324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return result;
2794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__II_3II
2798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
2799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
28002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
28082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
28142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
28192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
28202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
28212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
28222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 1 < needed";
28232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
28242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetRenderbufferParameteriv(
2830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
28402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2
2848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
28492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
28502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
285317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
285717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
28582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
28592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
28602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
28612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
28622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
28632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
286417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
286517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
286617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
286717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetRenderbufferParameteriv(
2869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
28732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
28742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
2875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
28762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
28772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
28782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
28792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
2880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
2884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__II_3II
2886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint pname, jintArray params_ref, jint offset) {
2887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
28882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
28962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
29022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
29072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
29082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
29092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
29102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 1 < needed";
29112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
29122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(
2918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
2919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
29282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
2934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__IILjava_nio_IntBuffer_2
2936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint pname, jobject params_buf) {
29372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
29382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
29392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
294117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
294517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
29462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
29472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
29482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
29492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
29502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
29512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
295217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
295317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
295417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
295517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(
2957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
2958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
29612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
29622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
2963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
29642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
29652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
29662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
29672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
2968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
297124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h>
2972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
297424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetShaderInfoLog(JNIEnv *_env, jobject, jint shader) {
2975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint infoLen = 0;
2976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
297724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (!infoLen) {
297824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return _env->NewStringUTF("");
2979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
298024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    char* buf = (char*) malloc(infoLen);
298124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (buf == NULL) {
298224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
298324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return NULL;
2984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
298524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    glGetShaderInfoLog(shader, infoLen, NULL, buf);
298624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    jstring result = _env->NewStringUTF(buf);
298724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    free(buf);
298824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return result;
2989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
2991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__II_3II_3II
2993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jintArray range_ref, jint rangeOffset, jintArray precision_ref, jint precisionOffset) {
2994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
29952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
29962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
2997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range_base = (GLint *) 0;
2998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _rangeRemaining;
2999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range = (GLint *) 0;
3000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision_base = (GLint *) 0;
3001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _precisionRemaining;
3002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision = (GLint *) 0;
3003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!range_ref) {
3005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "range == null";
3008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (rangeOffset < 0) {
3011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "rangeOffset < 0";
3014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _rangeRemaining = _env->GetArrayLength(range_ref) - rangeOffset;
30172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_rangeRemaining < 1) {
30182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
30192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
30202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - rangeOffset < 1 < needed";
30212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
30222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    range_base = (GLint *)
3024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(range_ref, (jboolean *)0);
3025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    range = range_base + rangeOffset;
3026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!precision_ref) {
3028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "precision == null";
3031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (precisionOffset < 0) {
3034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "precisionOffset < 0";
3037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _precisionRemaining = _env->GetArrayLength(precision_ref) - precisionOffset;
30402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_precisionRemaining < 1) {
30412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
30422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
30432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - precisionOffset < 1 < needed";
30442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
30452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    precision_base = (GLint *)
3047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(precision_ref, (jboolean *)0);
3048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    precision = precision_base + precisionOffset;
3049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderPrecisionFormat(
3051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)shadertype,
3052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)precisiontype,
3053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)range,
3054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)precision
3055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (precision_base) {
3059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(precision_ref, precision_base,
3060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (range_base) {
3063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(range_ref, range_base,
3064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
30662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
30672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
30682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
3072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
3074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jobject range_buf, jobject precision_buf) {
30752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
30762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
30772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _rangeArray = (jarray) 0;
307917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _rangeBufferOffset = (jint) 0;
3080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _precisionArray = (jarray) 0;
308117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _precisionBufferOffset = (jint) 0;
3082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _rangeRemaining;
3083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range = (GLint *) 0;
3084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _precisionRemaining;
3085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision = (GLint *) 0;
3086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
308717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining, &_rangeBufferOffset);
30882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_rangeRemaining < 1) {
30892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
30902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
30912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
30922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
30932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
309417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining, &_precisionBufferOffset);
30952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_precisionRemaining < 1) {
30962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
30972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
30982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
30992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
31002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
310117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (range == NULL) {
310217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _rangeBase = (char *)_env->GetPrimitiveArrayCritical(_rangeArray, (jboolean *) 0);
310317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        range = (GLint *) (_rangeBase + _rangeBufferOffset);
310417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
310517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (precision == NULL) {
310617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _precisionBase = (char *)_env->GetPrimitiveArrayCritical(_precisionArray, (jboolean *) 0);
310717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        precision = (GLint *) (_precisionBase + _precisionBufferOffset);
310817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderPrecisionFormat(
3110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)shadertype,
3111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)precisiontype,
3112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)range,
3113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)precision
3114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
31152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
31162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_precisionArray) {
31182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _precisionArray, precision, _exception ? JNI_FALSE : JNI_TRUE);
311917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
312017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_rangeArray) {
31212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _rangeArray, range, _exception ? JNI_FALSE : JNI_TRUE);
31222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
31232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
31242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__II_3II_3BI
3131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jintArray length_ref, jint lengthOffset, jbyteArray source_ref, jint sourceOffset) {
3132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
31332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
31342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
3136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
3137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
3138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *source_base = (char *) 0;
3139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sourceRemaining;
3140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *source = (char *) 0;
3141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
3143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
3146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
3149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
3152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
3156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
3157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
3158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!source_ref) {
3160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "source == null";
3163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sourceOffset < 0) {
3166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sourceOffset < 0";
3169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sourceRemaining = _env->GetArrayLength(source_ref) - sourceOffset;
3172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    source_base = (char *)
3173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(source_ref, (jboolean *)0);
3174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    source = source_base + sourceOffset;
3175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderSource(
3177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
3179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
3180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)source
3181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (source_base) {
3185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(source_ref, source_base,
3186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
3189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
3190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
31922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
31932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
31942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__IILjava_nio_IntBuffer_2B
3200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jobject length_buf, jbyte source) {
3201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
320217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
3205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
320617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining, &_bufferOffset);
320717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
320817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
320917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _bufferOffset);
321017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderSource(
3212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
3214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
321501c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<char *>(source)
3216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
32182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, length, JNI_TRUE);
3219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3222dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3223dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring android_glGetShaderSource(JNIEnv *_env, jobject, jint shader) {
3224dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint shaderLen = 0;
3225dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetShaderiv((GLuint)shader, GL_SHADER_SOURCE_LENGTH, &shaderLen);
3226dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!shaderLen) {
3227dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
3228dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
3229dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(shaderLen);
3230dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
3231dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
3232dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
3233dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
3234dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetShaderSource(shader, shaderLen, NULL, buf);
3235dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = _env->NewStringUTF(buf);
3236dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    free(buf);
3237dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
3238dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
3239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* const GLubyte * glGetString ( GLenum name ) */
324024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetString(JNIEnv* _env, jobject, jint name) {
324124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    const char* chars = (const char*) glGetString((GLenum) name);
324224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return _env->NewStringUTF(chars);
3243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
3245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__II_3FI
3247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
3248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
32492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
32502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
3272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameterfv(
3279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
32892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
32902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
32912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
3295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
3297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
32992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
33002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
330217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
330617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
3311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
331317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
331417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
331517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
331617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameterfv(
3318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
33272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
33282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
33292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__II_3II
3335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
3336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
33372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
33382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
3360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameteriv(
3367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
33772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
33782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
33792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2
3385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
33872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
33882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
339017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
339417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
3399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
340117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
340217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
340317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
340417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameteriv(
3406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
34152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
34162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
34172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
3421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__II_3FI
3423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jfloatArray params_ref, jint offset) {
3424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
34252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
34262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
34442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
34452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
34462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
34472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 1 < needed";
34482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
34492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformfv(
3455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
34652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
34662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
34672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
3471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__IILjava_nio_FloatBuffer_2
3473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
34742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
34752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
34762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
347817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
348217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
34832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
34842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
34852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
34862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
34872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
34882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
348917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
349017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
349117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
349217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformfv(
3494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
34982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
34992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
35012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
35022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
35032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
35042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
3509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__II_3II
3511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) {
3512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
35132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
35142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
35322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
35332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
35342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
35352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 1 < needed";
35362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
35372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformiv(
3543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
35532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
35542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
35552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
3559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__IILjava_nio_IntBuffer_2
3561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
35622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
35632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
35642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
356617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
357017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
35712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
35722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
35732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
35742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
35752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
35762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
357717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
357817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
357917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
358017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformiv(
3582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
35862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
35872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
35892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
35902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
35912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
35922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
359689be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian/* GLint glGetUniformLocation ( GLuint program, const char *name ) */
3597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
3598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformLocation__ILjava_lang_String_2
3599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jstring name) {
36002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
36012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
36022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
360389be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian    GLint _returnValue = 0;
3604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
3605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
3607428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes        _exception = 1;
36082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
3610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
3613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetUniformLocation(
3615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
3617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
3621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
3622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
36242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
36252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
36262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3627cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
3628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
3631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__II_3FI
3633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jfloatArray params_ref, jint offset) {
3634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
36352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
36362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
36432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
36492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
36542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed;
36552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
36562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB)
36572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_VERTEX_ATTRIB:
36582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB)
36592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 4;
36602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
36612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        default:
36622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
36632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
36642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
36652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
36662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
36672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
36682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < needed";
36692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
36702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribfv(
3676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
36862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
36872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
36882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
3692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2
3694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
36952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
36962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
36972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
369917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
370317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
37042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed;
37052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
37062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB)
37072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_VERTEX_ATTRIB:
37082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB)
37092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 4;
37102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
37112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        default:
37122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
37132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
37142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
37152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
37162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
37172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
37182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < needed";
37192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
37202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
372117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
372217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
372317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
372417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribfv(
3726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
37302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
37312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
37332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
37342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
37352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
37362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
3741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__II_3II
3743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
3744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
37452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
37462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
37642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed;
37652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
37662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB)
37672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_VERTEX_ATTRIB:
37682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB)
37692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 4;
37702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
37712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        default:
37722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
37732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
37742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
37752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
37762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
37772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
37782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < needed";
37792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
37802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribiv(
3786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
37962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
37972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
37982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
3802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__IILjava_nio_IntBuffer_2
3804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
38052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
38062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
38072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
3808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
380917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
381317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
38142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed;
38152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
38162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB)
38172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_VERTEX_ATTRIB:
38182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB)
38192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 4;
38202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
38212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        default:
38222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
38232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
38242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
38252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
38262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
38272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
38282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < needed";
38292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
38302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
383117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
383217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
383317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
383417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribiv(
3836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
38402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
38412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
38432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
38442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
38452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
38462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glHint ( GLenum target, GLenum mode ) */
3851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glHint__II
3853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint mode) {
3854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glHint(
3855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
3857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */
3861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsBuffer__I
3863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint buffer) {
3864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsBuffer(
3866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)buffer
3867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3868cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */
3872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsEnabled__I
3874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
3875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsEnabled(
3877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
3878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3879cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsFramebuffer ( GLuint framebuffer ) */
3883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsFramebuffer__I
3885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint framebuffer) {
3886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsFramebuffer(
3888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)framebuffer
3889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3890cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsProgram ( GLuint program ) */
3894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsProgram__I
3896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
3897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsProgram(
3899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
3900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3901cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsRenderbuffer ( GLuint renderbuffer ) */
3905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsRenderbuffer__I
3907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint renderbuffer) {
3908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsRenderbuffer(
3910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
3911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3912cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsShader ( GLuint shader ) */
3916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsShader__I
3918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
3919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsShader(
3921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
3922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3923cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */
3927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsTexture__I
3929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
3930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsTexture(
3932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture
3933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3934cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jboolean)_returnValue;
3935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3937560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLineWidth ( GLfloat width ) */
3938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLineWidth__F
3940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat width) {
3941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glLineWidth(
3942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)width
3943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLinkProgram ( GLuint program ) */
3947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLinkProgram__I
3949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
3950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glLinkProgram(
3951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
3952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPixelStorei ( GLenum pname, GLint param ) */
3956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPixelStorei__II
3958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
3959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glPixelStorei(
3960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)param
3962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
3966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPolygonOffset__FF
3968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
3969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glPolygonOffset(
3970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)factor,
3971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)units
3972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
3976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReadPixels__IIIIIILjava_nio_Buffer_2
3978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
3979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
398017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
3983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
398417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
398517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
398617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
398717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
398817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glReadPixels(
3990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
3991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
3992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
3993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
3994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
3995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
3996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
3997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
39992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, pixels, JNI_TRUE);
4000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReleaseShaderCompiler ( void ) */
4004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReleaseShaderCompiler__
4006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
4007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glReleaseShaderCompiler();
4008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height ) */
4011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glRenderbufferStorage__IIII
4013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) {
4014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glRenderbufferStorage(
4015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
4017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
4019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
4023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glSampleCoverage__FZ
4025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
4026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glSampleCoverage(
4027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)value,
4028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)invert
4029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
4033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glScissor__IIII
4035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
4036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glScissor(
4037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
4039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
4041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
4045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__I_3IIILjava_nio_Buffer_2I
4047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray shaders_ref, jint offset, jint binaryformat, jobject binary_buf, jint length) {
40482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
40492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
40502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
405217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders_base = (GLuint *) 0;
4054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
4055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
4056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _binaryRemaining;
4057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *binary = (GLvoid *) 0;
4058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!shaders_ref) {
40602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
40612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
40622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shaders == null";
4063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
40662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
40672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
40682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _shadersRemaining = _env->GetArrayLength(shaders_ref) - offset;
4072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders_base = (GLuint *)
4073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
4074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders = shaders_base + offset;
4075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
407617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset);
40772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_binaryRemaining < length) {
40782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
40792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
40802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < length < needed";
40812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
40822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
408317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (binary == NULL) {
408417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
408517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        binary = (GLvoid *) (_binaryBase + _bufferOffset);
408617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderBinary(
4088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
4089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders,
4090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)binaryformat,
4091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)binary,
4092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)length
4093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, binary, JNI_FALSE);
4098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shaders_base) {
4100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
4101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
41032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
41042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
41052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
4109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I
4111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject shaders_buf, jint binaryformat, jobject binary_buf, jint length) {
41122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
41132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
41142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _shadersArray = (jarray) 0;
411617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _shadersBufferOffset = (jint) 0;
4117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _binaryArray = (jarray) 0;
411817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _binaryBufferOffset = (jint) 0;
4119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
4120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
4121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _binaryRemaining;
4122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *binary = (GLvoid *) 0;
4123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
412417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset);
412517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset);
41262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_binaryRemaining < length) {
41272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
41282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
41292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < length < needed";
41302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
41312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
413217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (shaders == NULL) {
413317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0);
413417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        shaders = (GLuint *) (_shadersBase + _shadersBufferOffset);
413517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
413617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (binary == NULL) {
413717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0);
413817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        binary = (GLvoid *) (_binaryBase + _binaryBufferOffset);
413917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderBinary(
4141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
4142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders,
4143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)binaryformat,
4144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)binary,
4145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)length
4146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
41472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
41482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_binaryArray) {
415017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _binaryArray, binary, JNI_FALSE);
415117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
415217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_shadersArray) {
415317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _shadersArray, shaders, JNI_FALSE);
4154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
41552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
41562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
41572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */
4162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic
4163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichvoid
4164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderSource
4165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    (JNIEnv *_env, jobject _this, jint shader, jstring string) {
4166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!string) {
416824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "string == null");
4169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        return;
4170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* nativeString = _env->GetStringUTFChars(string, 0);
4173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* strings[] = {nativeString};
4174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderSource(shader, 1, strings, 0);
4175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _env->ReleaseStringUTFChars(string, nativeString);
4176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
4178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFunc__III
4180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
4181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilFunc(
4182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func,
4183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)ref,
4184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask ) */
4189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFuncSeparate__IIII
4191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint func, jint ref, jint mask) {
4192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilFuncSeparate(
4193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func,
4195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)ref,
4196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMask ( GLuint mask ) */
4201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMask__I
4203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
4204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilMask(
4205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMaskSeparate ( GLenum face, GLuint mask ) */
4210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMaskSeparate__II
4212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint mask) {
4213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilMaskSeparate(
4214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
4220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOp__III
4222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
4223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilOp(
4224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)fail,
4225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zfail,
4226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zpass
4227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) */
4231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOpSeparate__IIII
4233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint fail, jint zfail, jint zpass) {
4234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilOpSeparate(
4235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)fail,
4237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zfail,
4238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zpass
4239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
4243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
4245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
4246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
424717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pixels_buf) {
425217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
425317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
425437c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (pixels_buf && pixels == NULL) {
425517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
425617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
4257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexImage2D(
4259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
4261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)internalformat,
4262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border,
4265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
4271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
4275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterf__IIF
4277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
4278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterf(
4279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)param
4282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
4286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__II_3FI
4288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
42892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
42902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
42912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
4293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
42972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
42982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
42992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
43032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
43102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
4313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
4316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterfv(
4320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
43302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
43312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
43322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
4336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2
4338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
43392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
43402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
43412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
434317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
434717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
43492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
4352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
435417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
435517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
435617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
435717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterfv(
4359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
4367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
43682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
43692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
43702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
4374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteri__III
4376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
4377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteri(
4378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)param
4381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
4385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__II_3II
4387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
43882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
43892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
43902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
4392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
43962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
44022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
44032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
44042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
44092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
44102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
44112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
4412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
4415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteriv(
4419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
44292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
44302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
44312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
4435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2
4437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
44382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
44392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
44402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
444217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
444617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
44482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
44492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
44502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
4451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
445317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
445417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
445517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
445617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteriv(
4458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
4466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
44672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
44682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
44692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
4473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
4475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
4476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
447717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pixels_buf) {
448217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
448317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
448437c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (pixels_buf && pixels == NULL) {
448517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
448617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
4487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexSubImage2D(
4489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
4491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
4492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
4493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
4501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1f ( GLint location, GLfloat x ) */
4505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1f__IF
4507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x) {
4508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1f(
4509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x
4511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
4515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__II_3FI
4517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
45182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
45192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
45202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
45262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
45322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
45382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count) {
45392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
45402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
45412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count < needed";
45422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
45432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1fv(
4549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
45592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
45602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
45612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
4565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__IILjava_nio_FloatBuffer_2
4567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
45682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
45692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
45702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
457217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
457617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
45772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count) {
45782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
45792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
45802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count < needed";
45812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
45822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
458317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
458417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
458517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
458617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1fv(
4588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
45922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
45932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
45972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
45982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
45992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1i ( GLint location, GLint x ) */
4603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1i__II
4605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x) {
4606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1i(
4607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x
4609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
4613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__II_3II
4615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
46162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
46172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
46182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
4620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
46242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
46302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
46362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count) {
46372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
46382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
46392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count < needed";
46402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
46412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
4643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1iv(
4647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
46572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
46582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
46592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
4663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__IILjava_nio_IntBuffer_2
4665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
46662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
46672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
46682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
467017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
467417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
46752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count) {
46762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
46772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
46782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count < needed";
46792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
46802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
468117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
468217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
468317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
468417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1iv(
4686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
46902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
46912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
46952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
46962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
46972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2f ( GLint location, GLfloat x, GLfloat y ) */
4701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2f__IFF
4703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y) {
4704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2f(
4705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
4707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y
4708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
4712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__II_3FI
4714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
47152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
47162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
47172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
47232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
47242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
47252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
47292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
47302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
47312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
47352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*2) {
47362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
47372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
47382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*2 < needed";
47392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
47402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2fv(
4746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
47562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
47572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
47582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
4762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__IILjava_nio_FloatBuffer_2
4764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
47652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
47662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
47672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
476917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
477317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
47742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*2) {
47752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
47762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
47772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*2 < needed";
47782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
47792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
478017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
478117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
478217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
478317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2fv(
4785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
47892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
47902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
47942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
47952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
47962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2i ( GLint location, GLint x, GLint y ) */
4800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2i__III
4802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y) {
4803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2i(
4804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y
4807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
4811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__II_3II
4813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
48142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
48152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
48162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
4818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
48222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
48282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
48342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*2) {
48352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
48362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
48372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*2 < needed";
48382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
48392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
4841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2iv(
4845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
48552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
48562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
48572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
4861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__IILjava_nio_IntBuffer_2
4863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
48642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
48652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
48662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
486817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
487217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
48732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*2) {
48742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
48752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
48762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*2 < needed";
48772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
48782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
487917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
488017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
488117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
488217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2iv(
4884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
48882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
48892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
48932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
48942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
48952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z ) */
4899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3f__IFFF
4901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z) {
4902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3f(
4903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
4905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
4906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z
4907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
4911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__II_3FI
4913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
49142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
49152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
49162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
49222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
49232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
49242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
49282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
49292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
49302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
49342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*3) {
49352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
49362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
49372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*3 < needed";
49382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
49392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3fv(
4945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
49562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
49572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
4961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__IILjava_nio_FloatBuffer_2
4963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
49642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
49652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
49662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
4967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
496817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
497217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
49732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*3) {
49742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
49752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
49762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*3 < needed";
49772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
49782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
497917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
498017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
498117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
498217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3fv(
4984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
49882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
49892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
49942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
49952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3i ( GLint location, GLint x, GLint y, GLint z ) */
4999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3i__IIII
5001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z) {
5002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3i(
5003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
5006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)z
5007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
5011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__II_3II
5013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
50142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
50152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
50162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
5018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
50222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
50232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
50242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
50282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
50292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
50302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
50342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*3) {
50352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
50362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
50372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*3 < needed";
50382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
50392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
5041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3iv(
5045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
50552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
50562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
50572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
5061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__IILjava_nio_IntBuffer_2
5063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
50642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
50652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
50662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
506817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
507217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
50732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*3) {
50742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
50752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
50762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*3 < needed";
50772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
50782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
507917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
508017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
508117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
508217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3iv(
5084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
50882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
50892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
50932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
50942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
50952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
5099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4f__IFFFF
5101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z, jfloat w) {
5102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4f(
5103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z,
5107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)w
5108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
5112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__II_3FI
5114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
51152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
51162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
51172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
5119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
51232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
51292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
51352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*4) {
51362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
51372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
51382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*4 < needed";
51392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
51402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
5142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4fv(
5146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
51562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
51572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
51582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
5162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__IILjava_nio_FloatBuffer_2
5164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
51652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
51662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
51672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
516917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
517317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
51742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*4) {
51752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
51762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
51772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*4 < needed";
51782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
51792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
518017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
518117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
518217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
518317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4fv(
5185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
51892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
51902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
51942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
51952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
51962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w ) */
5200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4i__IIIII
5202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z, jint w) {
5203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4i(
5204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
5207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)z,
5208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)w
5209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
5213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__II_3II
5215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
52162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
52172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
52182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
5220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
52242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
52302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
52362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*4) {
52372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
52382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
52392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*4 < needed";
52402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
52412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
5243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4iv(
5247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
52572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
52582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
52592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
5263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__IILjava_nio_IntBuffer_2
5265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
52662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
52672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
52682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
527017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
527417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
52752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*4) {
52762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
52772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
52782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*4 < needed";
52792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
52802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
528117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
528217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
528317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
528417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4iv(
5286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
52902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
52912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
52952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
52962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
52972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZ_3FI
5303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
53042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
53052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
53062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
53122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
53132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
53142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
53182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
53192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
53202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
53242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*4) {
53252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
53262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
53272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*4 < needed";
53282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
53292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix2fv(
5335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
53462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
53472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
53482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2
5354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
53552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
53562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
53572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
535917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
536317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
53642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*4) {
53652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
53662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
53672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*4 < needed";
53682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
53692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
537017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
537117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
537217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
537317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix2fv(
5375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
53802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
53812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
53852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
53862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
53872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZ_3FI
5393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
53942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
53952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
53962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
54022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
54082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
54142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*9) {
54152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
54162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
54172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*9 < needed";
54182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
54192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix3fv(
5425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
54362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
54372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
54382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2
5444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
54452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
54462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
54472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
544917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
545317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
54542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*9) {
54552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
54562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
54572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*9 < needed";
54582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
54592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
546017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
546117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
546217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
546317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix3fv(
5465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
54702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
54712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
54752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
54762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
54772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZ_3FI
5483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
54842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
54852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
54862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
54922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
54982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
55042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*16) {
55052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
55062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
55072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < count*16 < needed";
55082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
55092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix4fv(
5515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
55262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
55272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
55282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2
5534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
55352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
55362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
55372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
553917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
554317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
55442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < count*16) {
55452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
55462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
55472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < count*16 < needed";
55482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
55492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
555017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
555117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
555217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
555317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix4fv(
5555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
55602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
55612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
55652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
55662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
55672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUseProgram ( GLuint program ) */
5571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUseProgram__I
5573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
5574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUseProgram(
5575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
5576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glValidateProgram ( GLuint program ) */
5580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glValidateProgram__I
5582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
5583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glValidateProgram(
5584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
5585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1f ( GLuint indx, GLfloat x ) */
5589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1f__IF
5591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x) {
5592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1f(
5593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x
5595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
5599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__I_3FI
5601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
56022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
56032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
56042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
56102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
56112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
56122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
56162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
56172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
56182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
56222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
56232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
56242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
56252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 1 < needed";
56262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
56272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1fv(
5633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
56422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
56432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
56442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
5648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2
5650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
56512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
56522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
56532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
565517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
565917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
56602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 1) {
56612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
56622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
56632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 1 < needed";
56642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
56652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
566617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
566717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
566817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
566917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1fv(
5671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
56742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
56752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
56792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
56802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
56812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y ) */
5685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2f__IFF
5687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y) {
5688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2f(
5689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y
5692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
5696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__I_3FI
5698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
56992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
57002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
57012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
57072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
57082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
57092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
57132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
57142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
57152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
57192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 2) {
57202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
57212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
57222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 2 < needed";
57232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
57242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2fv(
5730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
57392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
57402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
57412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
5745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2
5747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
57482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
57492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
57502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
575217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
575617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
57572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 2) {
57582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
57592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
57602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 2 < needed";
57612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
57622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
576317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
576417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
576517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
576617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2fv(
5768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
57712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
57722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
57762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
57772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
57782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z ) */
5782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3f__IFFF
5784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z) {
5785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3f(
5786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z
5790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
5794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__I_3FI
5796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
57972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
57982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
57992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
58052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
58062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
58072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
58112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
58122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
58132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
58172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 3) {
58182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
58192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
58202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 3 < needed";
58212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
58222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3fv(
5828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
58372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
58382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
58392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
5843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2
5845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
58462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
58472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
58482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
585017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
585417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
58552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 3) {
58562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
58572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
58582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 3 < needed";
58592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
58602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
586117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
586217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
586317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
586417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3fv(
5866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
58692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
58702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
58742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
58752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
58762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
5880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4f__IFFFF
5882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z, jfloat w) {
5883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4f(
5884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z,
5888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)w
5889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
5893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__I_3FI
5895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
58962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
58972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
58982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
59042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
59052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
59062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
59102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
59112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
59122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
59162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 4) {
59172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
59182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
59192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < 4 < needed";
59202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
59212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4fv(
5927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
59362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
59372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
59382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
5942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2
5944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
59452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
59462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
59472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
5948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
594917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
595317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
59542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < 4) {
59552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
59562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
59572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < 4 < needed";
59582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
59592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
596017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
596117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
596217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
596317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4fv(
5965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
59682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
59692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
5970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
59732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
59742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
59752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
5976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5978224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLint offset ) */
5979224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void
5980224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glVertexAttribPointer__IIIZII
5981224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jint offset) {
5982224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    glVertexAttribPointer(
5983224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLuint)indx,
5984224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLint)size,
5985224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)type,
5986224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLboolean)normalized,
5987224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLsizei)stride,
598801c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        reinterpret_cast<GLvoid *>(offset)
5989224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    );
5990224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich}
5991224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich
5992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr ) */
5993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I
5995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jobject ptr_buf, jint remaining) {
5996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
599717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *ptr = (GLvoid *) 0;
6000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (ptr_buf) {
6002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        ptr = (GLvoid *) getDirectBufferPointer(_env, ptr_buf);
6003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        if ( ! ptr ) {
6004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            return;
6005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        }
6006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
6007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttribPointerBounds(
6008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
6009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)size,
6010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
6011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)normalized,
6012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)stride,
6013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)ptr,
6014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)remaining
6015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
6016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
6017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
6019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
6020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glViewport__IIII
6021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
6022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glViewport(
6023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
6024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
6025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
6026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
6027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
6028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
6029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic const char *classPathName = "android/opengl/GLES20";
6031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic JNINativeMethod methods[] = {
6033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit },
6034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
6035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glAttachShader", "(II)V", (void *) android_glAttachShader__II },
6036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindAttribLocation", "(IILjava/lang/String;)V", (void *) android_glBindAttribLocation__IILjava_lang_String_2 },
6037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
6038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindFramebuffer", "(II)V", (void *) android_glBindFramebuffer__II },
6039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindRenderbuffer", "(II)V", (void *) android_glBindRenderbuffer__II },
6040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
6041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendColor", "(FFFF)V", (void *) android_glBlendColor__FFFF },
6042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquation", "(I)V", (void *) android_glBlendEquation__I },
6043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquationSeparate", "(II)V", (void *) android_glBlendEquationSeparate__II },
6044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
6045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFuncSeparate", "(IIII)V", (void *) android_glBlendFuncSeparate__IIII },
6046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
6047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
6048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCheckFramebufferStatus", "(I)I", (void *) android_glCheckFramebufferStatus__I },
6049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClear", "(I)V", (void *) android_glClear__I },
6050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
6051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
6052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
6053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
6054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompileShader", "(I)V", (void *) android_glCompileShader__I },
6055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
6056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
6057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
6058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
6059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateProgram", "()I", (void *) android_glCreateProgram__ },
6060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateShader", "(I)I", (void *) android_glCreateShader__I },
6061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCullFace", "(I)V", (void *) android_glCullFace__I },
6062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
6063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
6064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(I[II)V", (void *) android_glDeleteFramebuffers__I_3II },
6065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 },
6066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteProgram", "(I)V", (void *) android_glDeleteProgram__I },
6067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(I[II)V", (void *) android_glDeleteRenderbuffers__I_3II },
6068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 },
6069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteShader", "(I)V", (void *) android_glDeleteShader__I },
6070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
6071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
6072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
6073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
6074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
6075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDetachShader", "(II)V", (void *) android_glDetachShader__II },
6076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisable", "(I)V", (void *) android_glDisable__I },
6077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisableVertexAttribArray", "(I)V", (void *) android_glDisableVertexAttribArray__I },
6078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
6079224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII },
6080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
6081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnable", "(I)V", (void *) android_glEnable__I },
6082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnableVertexAttribArray", "(I)V", (void *) android_glEnableVertexAttribArray__I },
6083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFinish", "()V", (void *) android_glFinish__ },
6084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFlush", "()V", (void *) android_glFlush__ },
6085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferRenderbuffer", "(IIII)V", (void *) android_glFramebufferRenderbuffer__IIII },
6086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferTexture2D", "(IIIII)V", (void *) android_glFramebufferTexture2D__IIIII },
6087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
6088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
6089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
6090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenerateMipmap", "(I)V", (void *) android_glGenerateMipmap__I },
6091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(I[II)V", (void *) android_glGenFramebuffers__I_3II },
6092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenFramebuffers__ILjava_nio_IntBuffer_2 },
6093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(I[II)V", (void *) android_glGenRenderbuffers__I_3II },
6094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenRenderbuffers__ILjava_nio_IntBuffer_2 },
6095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
6096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
6097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveAttrib", "(III[II[II[II[BI)V", (void *) android_glGetActiveAttrib__III_3II_3II_3II_3BI },
6098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveAttrib", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B },
6099dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveAttrib", "(II[II[II)Ljava/lang/String;", (void *) android_glGetActiveAttrib1 },
6100dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveAttrib", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetActiveAttrib2 },
6101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveUniform", "(III[II[II[II[BI)V", (void *) android_glGetActiveUniform__III_3II_3II_3II_3BI },
6102dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveUniform", "(II[II[II)Ljava/lang/String;", (void *) android_glGetActiveUniform1 },
6103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveUniform", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B },
6104dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveUniform", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetActiveUniform2 },
6105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(II[II[II)V", (void *) android_glGetAttachedShaders__II_3II_3II },
6106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
6107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttribLocation", "(ILjava/lang/String;)I", (void *) android_glGetAttribLocation__ILjava_lang_String_2 },
6108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
6109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
6110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
6111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
6112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetError", "()I", (void *) android_glGetError__ },
6113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
6114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
6115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(III[II)V", (void *) android_glGetFramebufferAttachmentParameteriv__III_3II },
6116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 },
6117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
6118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
6119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(II[II)V", (void *) android_glGetProgramiv__II_3II },
6120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramiv__IILjava_nio_IntBuffer_2 },
6121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog },
6122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(II[II)V", (void *) android_glGetRenderbufferParameteriv__II_3II },
6123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 },
6124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(II[II)V", (void *) android_glGetShaderiv__II_3II },
6125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetShaderiv__IILjava_nio_IntBuffer_2 },
6126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog },
6127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(II[II[II)V", (void *) android_glGetShaderPrecisionFormat__II_3II_3II },
6128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
6129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(II[II[BI)V", (void *) android_glGetShaderSource__II_3II_3BI },
6130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(IILjava/nio/IntBuffer;B)V", (void *) android_glGetShaderSource__IILjava_nio_IntBuffer_2B },
6131dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetShaderSource", "(I)Ljava/lang/String;", (void *) android_glGetShaderSource },
6132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
6133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
6134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
6135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
6136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
6137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(II[FI)V", (void *) android_glGetUniformfv__II_3FI },
6138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetUniformfv__IILjava_nio_FloatBuffer_2 },
6139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(II[II)V", (void *) android_glGetUniformiv__II_3II },
6140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformiv__IILjava_nio_IntBuffer_2 },
6141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformLocation", "(ILjava/lang/String;)I", (void *) android_glGetUniformLocation__ILjava_lang_String_2 },
6142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(II[FI)V", (void *) android_glGetVertexAttribfv__II_3FI },
6143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 },
6144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(II[II)V", (void *) android_glGetVertexAttribiv__II_3II },
6145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 },
6146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glHint", "(II)V", (void *) android_glHint__II },
6147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
6148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
6149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsFramebuffer", "(I)Z", (void *) android_glIsFramebuffer__I },
6150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsProgram", "(I)Z", (void *) android_glIsProgram__I },
6151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsRenderbuffer", "(I)Z", (void *) android_glIsRenderbuffer__I },
6152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsShader", "(I)Z", (void *) android_glIsShader__I },
6153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
6154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
6155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLinkProgram", "(I)V", (void *) android_glLinkProgram__I },
6156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
6157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
6158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
6159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReleaseShaderCompiler", "()V", (void *) android_glReleaseShaderCompiler__ },
6160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glRenderbufferStorage", "(IIII)V", (void *) android_glRenderbufferStorage__IIII },
6161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
6162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
6163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(I[IIILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__I_3IIILjava_nio_Buffer_2I },
6164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I },
6165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource },
6166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
6167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFuncSeparate", "(IIII)V", (void *) android_glStencilFuncSeparate__IIII },
6168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
6169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMaskSeparate", "(II)V", (void *) android_glStencilMaskSeparate__II },
6170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
6171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOpSeparate", "(IIII)V", (void *) android_glStencilOpSeparate__IIII },
6172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
6173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
6174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
6175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
6176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
6177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
6178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
6179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
6180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1f", "(IF)V", (void *) android_glUniform1f__IF },
6181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(II[FI)V", (void *) android_glUniform1fv__II_3FI },
6182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform1fv__IILjava_nio_FloatBuffer_2 },
6183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1i", "(II)V", (void *) android_glUniform1i__II },
6184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(II[II)V", (void *) android_glUniform1iv__II_3II },
6185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1iv__IILjava_nio_IntBuffer_2 },
6186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2f", "(IFF)V", (void *) android_glUniform2f__IFF },
6187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(II[FI)V", (void *) android_glUniform2fv__II_3FI },
6188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform2fv__IILjava_nio_FloatBuffer_2 },
6189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2i", "(III)V", (void *) android_glUniform2i__III },
6190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(II[II)V", (void *) android_glUniform2iv__II_3II },
6191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2iv__IILjava_nio_IntBuffer_2 },
6192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3f", "(IFFF)V", (void *) android_glUniform3f__IFFF },
6193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(II[FI)V", (void *) android_glUniform3fv__II_3FI },
6194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform3fv__IILjava_nio_FloatBuffer_2 },
6195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3i", "(IIII)V", (void *) android_glUniform3i__IIII },
6196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(II[II)V", (void *) android_glUniform3iv__II_3II },
6197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3iv__IILjava_nio_IntBuffer_2 },
6198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4f", "(IFFFF)V", (void *) android_glUniform4f__IFFFF },
6199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(II[FI)V", (void *) android_glUniform4fv__II_3FI },
6200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform4fv__IILjava_nio_FloatBuffer_2 },
6201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4i", "(IIIII)V", (void *) android_glUniform4i__IIIII },
6202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(II[II)V", (void *) android_glUniform4iv__II_3II },
6203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4iv__IILjava_nio_IntBuffer_2 },
6204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2fv__IIZ_3FI },
6205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 },
6206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3fv__IIZ_3FI },
6207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 },
6208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4fv__IIZ_3FI },
6209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 },
6210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUseProgram", "(I)V", (void *) android_glUseProgram__I },
6211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glValidateProgram", "(I)V", (void *) android_glValidateProgram__I },
6212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1f", "(IF)V", (void *) android_glVertexAttrib1f__IF },
6213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(I[FI)V", (void *) android_glVertexAttrib1fv__I_3FI },
6214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 },
6215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2f", "(IFF)V", (void *) android_glVertexAttrib2f__IFF },
6216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(I[FI)V", (void *) android_glVertexAttrib2fv__I_3FI },
6217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 },
6218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3f", "(IFFF)V", (void *) android_glVertexAttrib3f__IFFF },
6219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(I[FI)V", (void *) android_glVertexAttrib3fv__I_3FI },
6220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 },
6221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4f", "(IFFFF)V", (void *) android_glVertexAttrib4f__IFFFF },
6222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(I[FI)V", (void *) android_glVertexAttrib4fv__I_3FI },
6223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 },
6224224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glVertexAttribPointer", "(IIIZII)V", (void *) android_glVertexAttribPointer__IIIZII },
6225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttribPointerBounds", "(IIIZILjava/nio/Buffer;I)V", (void *) android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I },
6226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
6227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich};
6228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichint register_android_opengl_jni_GLES20(JNIEnv *_env)
6230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
6231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int err;
6232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
6233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return err;
6234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
6235