aboutsummaryrefslogtreecommitdiffstats
path: root/make/config/jogl/gl-impl-CustomCCode-gl4bc.c
blob: 8da179fdeaf6dcfda1d7fa3bd1e4d09a001196de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: void dispatch_glBufferData(int target, long size, java.nio.Buffer data, int usage)
 *     C function: void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *  data, GLenum usage);
 */
JNIEXPORT void JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glBufferData(JNIEnv *env, jobject _unused, jint target, jlong size, jobject data, jint data_byte_offset, jboolean data_is_nio, jint usage, jlong procAddress) {
  typedef void (APIENTRY*_local_PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const GLvoid *  data, GLenum usage);
  _local_PFNGLBUFFERDATAPROC ptr_glBufferData;
  GLvoid * _data_ptr = NULL;
  if ( NULL != data ) {
    _data_ptr = (GLvoid *) ( JNI_TRUE == data_is_nio ?  (*env)->GetDirectBufferAddress(env, data) :  (*env)->GetPrimitiveArrayCritical(env, data, NULL) );  }
  ptr_glBufferData = (_local_PFNGLBUFFERDATAPROC) (intptr_t) procAddress;
  assert(ptr_glBufferData != NULL);
  (* ptr_glBufferData) ((GLenum) target, (GLsizeiptr) size, (GLvoid *) (((char *) _data_ptr) + data_byte_offset), (GLenum) usage);
  if ( JNI_FALSE == data_is_nio && NULL != data ) {
    (*env)->ReleasePrimitiveArrayCritical(env, data, _data_ptr, JNI_ABORT);  }
}

/** FIXME Add for OpenGL 4.4: glBufferStorage */

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: void dispatch_glNamedBufferDataEXT(int buffer, long size, java.nio.Buffer data, int usage)
 *     C function: void glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const GLvoid *  data, GLenum usage);
 */
JNIEXPORT void JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glNamedBufferDataEXT(JNIEnv *env, jobject _unused, jint buffer, jlong size, jobject data, jint data_byte_offset, jboolean data_is_nio, jint usage, jlong procAddress) {
  typedef void (APIENTRY*_local_PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, const GLvoid *  data, GLenum usage);
  _local_PFNGLNAMEDBUFFERDATAEXTPROC ptr_glNamedBufferDataEXT;
  GLvoid * _data_ptr = NULL;
  if ( NULL != data ) {
    _data_ptr = (GLvoid *) ( JNI_TRUE == data_is_nio ?  (*env)->GetDirectBufferAddress(env, data) :  (*env)->GetPrimitiveArrayCritical(env, data, NULL) );  }
  ptr_glNamedBufferDataEXT = (_local_PFNGLNAMEDBUFFERDATAEXTPROC) (intptr_t) procAddress;
  assert(ptr_glNamedBufferDataEXT != NULL);
  (* ptr_glNamedBufferDataEXT) ((GLuint) buffer, (GLsizeiptr) size, (GLvoid *) (((char *) _data_ptr) + data_byte_offset), (GLenum) usage);
  if ( JNI_FALSE == data_is_nio && NULL != data ) {
    (*env)->ReleasePrimitiveArrayCritical(env, data, _data_ptr, JNI_ABORT);  }
}

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: boolean dispatch_glUnmapBuffer(int target)
 *     C function: GLboolean glUnmapBuffer(GLenum target);
 */
JNIEXPORT jboolean JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glUnmapBuffer(JNIEnv *env, jobject _unused, jint target, jlong procAddress) {
  typedef GLboolean (APIENTRY*_local_PFNGLUNMAPBUFFERPROC)(GLenum target);
  _local_PFNGLUNMAPBUFFERPROC ptr_glUnmapBuffer;
  GLboolean _res;
  ptr_glUnmapBuffer = (_local_PFNGLUNMAPBUFFERPROC) (intptr_t) procAddress;
  assert(ptr_glUnmapBuffer != NULL);
  _res = (* ptr_glUnmapBuffer) ((GLenum) target);
  return _res;
}

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: boolean dispatch_glUnmapNamedBufferEXT(int buffer)
 *     C function: GLboolean glUnmapNamedBufferEXT(GLuint buffer);
 */
JNIEXPORT jboolean JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glUnmapNamedBufferEXT(JNIEnv *env, jobject _unused, jint buffer, jlong procAddress) {
  typedef GLboolean (APIENTRY*_local_PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer);
  _local_PFNGLUNMAPNAMEDBUFFEREXTPROC ptr_glUnmapNamedBufferEXT;
  GLboolean _res;
  ptr_glUnmapNamedBufferEXT = (_local_PFNGLUNMAPNAMEDBUFFEREXTPROC) (intptr_t) procAddress;
  assert(ptr_glUnmapNamedBufferEXT != NULL);
  _res = (* ptr_glUnmapNamedBufferEXT) ((GLuint) buffer);
  return _res;
}

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl *    Java method: long dispatch_glMapBuffer(int target, int access)
 *     C function: void * glMapBuffer(GLenum target, GLenum access);
 */
JNIEXPORT jlong JNICALL 
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glMapBuffer(JNIEnv *env, jobject _unused, jint target, jint access, jlong glProcAddress) {
  typedef void *(APIENTRY*_local_PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
  _local_PFNGLMAPBUFFERPROC ptr_glMapBuffer;
  void * _res;
  ptr_glMapBuffer = (_local_PFNGLMAPBUFFERPROC) (intptr_t) glProcAddress;
  assert(ptr_glMapBuffer != NULL);
  _res = (* ptr_glMapBuffer) ((GLenum) target, (GLenum) access);
  return (jlong) (intptr_t) _res;
}

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: java.nio.ByteBuffer dispatch_glMapBufferRange(int target, long offset, long length, int access)
 *     C function: void *  glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
 */
JNIEXPORT jlong JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glMapBufferRange(JNIEnv *env, jobject _unused, jint target, jlong offset, jlong length, jint access, jlong procAddress) {
  typedef void *  (APIENTRY*_local_PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
  _local_PFNGLMAPBUFFERRANGEPROC ptr_glMapBufferRange;
  void *  _res;
  ptr_glMapBufferRange = (_local_PFNGLMAPBUFFERRANGEPROC) (intptr_t) procAddress;
  assert(ptr_glMapBufferRange != NULL);
  _res = (* ptr_glMapBufferRange) ((GLenum) target, (GLintptr) offset, (GLsizeiptr) length, (GLbitfield) access);
  return (jlong) (intptr_t) _res;
}

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: long dispatch_glMapNamedBufferEXT(int target, int access)
 *     C function: void * glMapNamedBufferEXT(GLenum target, GLenum access);
 */
JNIEXPORT jlong JNICALL 
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glMapNamedBufferEXT(JNIEnv *env, jobject _unused, jint target, jint access, jlong glProcAddress) {
  typedef void *(APIENTRY*_local_PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
  _local_PFNGLMAPNAMEDBUFFEREXTPROC ptr_glMapNamedBufferEXT;
  void * _res;
  ptr_glMapNamedBufferEXT = (_local_PFNGLMAPNAMEDBUFFEREXTPROC) (intptr_t) glProcAddress;
  assert(ptr_glMapNamedBufferEXT != NULL);
  _res = (* ptr_glMapNamedBufferEXT) ((GLuint) target, (GLenum) access);
  return (jlong) (intptr_t) _res;
}

/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: java.nio.ByteBuffer dispatch_glMapNamedBufferRangeEXT(int buffer, long offset, long length, int access)
 *     C function: void *  glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
 */
JNIEXPORT jlong JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_dispatch_1glMapNamedBufferRangeEXT(JNIEnv *env, jobject _unused, jint buffer, jlong offset, jlong length, jint access, jlong procAddress) {
  typedef void *(APIENTRY*_local_PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
  _local_PFNGLMAPNAMEDBUFFERRANGEEXTPROC ptr_glMapNamedBufferRangeEXT;
  void *  _res;
  ptr_glMapNamedBufferRangeEXT = (_local_PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (intptr_t) procAddress;
  assert(ptr_glMapNamedBufferRangeEXT != NULL);
  _res = (* ptr_glMapNamedBufferRangeEXT) ((GLuint) buffer, (GLintptr) offset, (GLsizeiptr) length, (GLbitfield) access);
  return (jlong) (intptr_t) _res;
}


/*   Java->C glue code:
 *   Java package: jogamp.opengl.gl4.GL4bcImpl
 *    Java method: ByteBuffer newDirectByteBuffer(long addr, long capacity);
 *     C function: jobject newDirectByteBuffer(jlong addr, jlong capacity);
 */
JNIEXPORT jobject JNICALL
Java_jogamp_opengl_gl4_GL4bcImpl_newDirectByteBuffer(JNIEnv *env, jobject _unused, jlong addr, jlong capacity) {
  return (*env)->NewDirectByteBuffer(env, (void*) (intptr_t) addr, capacity);
}