updated opengles library to use cptr
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 9 Mar 2022 02:56:36 +0000 (20:56 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 9 Mar 2022 02:56:36 +0000 (20:56 -0600)
modules/opengles/module.onyx
modules/opengles/onyx_opengles.c
modules/opengles/onyx_opengles.so

index 5abeb7495345fa8065f2573fd830614afa1beade..95b29a7018b64446f3997254b8e55443f26999b1 100644 (file)
@@ -1,5 +1,7 @@
 package opengles
 
+use package core { cptr }
+
 #library "onyx_opengles"
 
 GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void
@@ -108,7 +110,7 @@ GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void
     glSampleCoverage :: (value: GLfloat, invert: GLboolean) -> void ---
     glScissor :: (x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> void ---
     glShaderBinary :: (count: GLsizei, shaders: ^GLuint, binaryformat: GLenum, binary: rawptr, length: GLsizei) -> void ---
-    glShaderSource :: (shader: GLuint, count: GLsizei, string: ^^GLchar, length: ^GLint) -> void ---
+    glShaderSource :: (shader: GLuint, count: GLsizei, string: ^cptr(GLchar), length: ^GLint) -> void ---
     glStencilFunc :: (func: GLenum, ref: GLint, mask: GLuint) -> void ---
     glStencilFuncSeparate :: (face: GLenum, func: GLenum, ref: GLint, mask: GLuint) -> void ---
     glStencilMask :: (mask: GLuint) -> void ---
@@ -217,7 +219,7 @@ GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void
     glClearBufferfi :: (buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> void ---
     glGetStringi :: (name: GLenum, index: GLuint) -> ^GLubyte ---
     glCopyBufferSubData :: (readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> void ---
-    glGetUniformIndices :: (program: GLuint, uniformCount: GLsizei, uniformNames: ^^GLchar, uniformIndices: ^GLuint) -> void ---
+    glGetUniformIndices :: (program: GLuint, uniformCount: GLsizei, uniformNames: ^cptr(GLchar), uniformIndices: ^GLuint) -> void ---
     glGetActiveUniformsiv :: (program: GLuint, uniformCount: GLsizei, uniformIndices: ^GLuint, pname: GLenum, params: ^GLint) -> void ---
     glGetUniformBlockIndex :: (program: GLuint, uniformBlockName: ^GLchar) -> GLuint ---
     glGetActiveUniformBlockiv :: (program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: ^GLint) -> void ---
index c03b479c7861ed16c352b8d42644ca4b395c224b..d6cabd10745f904d296e26b7f78609c113a741e5 100644 (file)
@@ -526,26 +526,20 @@ ONYX_GL_INT_6(glTexStorage3D)
 ONYX_GL_INT_4_PTR(glGetInternalformativ, GLint)
 
 ONYX_DEF(glShaderSource, (INT, INT, PTR, PTR), ()) {
-    GLsizei count = params->data[1].of.i32;
-    int* base_ptr = (int *) ONYX_PTR(params->data[2].of.i32);
-    char** strs = alloca(count * sizeof(char *));
-    for (int i=0; i<count; i++) {
-        strs[i] = (char *) ONYX_PTR(*(base_ptr + i));
-    }
+    GLsizei  count = params->data[1].of.i32;
+    GLchar** sources = ONYX_PTR(params->data[2].of.i32);
+    GLint*   lengths = ONYX_PTR(params->data[3].of.i32);
 
-    glad_glShaderSource(params->data[0].of.i32, count, strs, (GLint *) ONYX_PTR(params->data[3].of.i32));
+    glad_glShaderSource(params->data[0].of.i32, count, sources, lengths);
     return NULL;
 }
 
 ONYX_DEF(glGetUniformIndices, (INT, INT, PTR, PTR), ()) {
-    GLsizei count = params->data[1].of.i32;
-    int* base_ptr = (int *) ONYX_PTR(params->data[2].of.i32);
-    char** strs = alloca(count * sizeof(char *));
-    for (int i=0; i<count; i++) {
-        strs[i] = (char *) ONYX_PTR(*(base_ptr + i));
-    }
+    GLsizei  count = params->data[1].of.i32;
+    GLchar** names = ONYX_PTR(params->data[2].of.i32);
+    GLint*   lengths = ONYX_PTR(params->data[3].of.i32);
     
-    glad_glGetUniformIndices(params->data[0].of.i32, count, (const char *const*) strs, (int *) ONYX_PTR(params->data[3].of.i32));
+    glad_glGetUniformIndices(params->data[0].of.i32, count, (const char *const*) names, lengths);
     return NULL;
 }
 
index 2b34641b14c9c438794dd39ee4952e529eff0345..6015b67ee5adae213bb217c128d55e77277c7aef 100755 (executable)
Binary files a/modules/opengles/onyx_opengles.so and b/modules/opengles/onyx_opengles.so differ