[037/906] * sys/glsink/Makefile.am: * sys/glsink/glextensions.c: * sys/glsink/glexten...
authorDavid Schleef <ds@schleef.org>
Sun, 16 Dec 2007 00:16:46 +0000 (00:16 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:31:15 +0000 (19:31 +0000)
gst-libs/gst/gl/glextensions.c [new file with mode: 0644]
gst-libs/gst/gl/glextensions.h [new file with mode: 0644]

diff --git a/gst-libs/gst/gl/glextensions.c b/gst-libs/gst/gl/glextensions.c
new file mode 100644 (file)
index 0000000..31b862e
--- /dev/null
@@ -0,0 +1,124 @@
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <GL/glx.h>
+#include <GL/glxext.h>
+#include <string.h>
+
+#include "glextensions.h"
+
+int
+gl_have_extension (const char *name)
+{
+  const char *s;
+
+  s = (const char *) glGetString (GL_EXTENSIONS);
+  if (s == NULL)
+    return FALSE;
+
+  if (strstr (s, name))
+    return TRUE;
+  return FALSE;
+}
+
+extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
+
+#define DEFINE_FUNC_RET(name,return_type,prototype,args) \
+return_type name prototype \
+{ \
+  static return_type (*func) prototype; \
+  if (func == NULL) { \
+    func = (void *) glXGetProcAddressARB ((unsigned char *) #name); \
+  } \
+  return func args; \
+}
+
+#define DEFINE_FUNC(name,prototype,args) \
+void name prototype \
+{ \
+  static void (*func) prototype; \
+  if (func == NULL) { \
+    func = (void *) glXGetProcAddressARB ((unsigned char *) #name); \
+  } \
+  func args; \
+}
+
+DEFINE_FUNC_RET (glCreateShaderObjectARB, GLhandleARB,
+    (GLenum shaderType), (shaderType));
+#if 0
+typedef GLhandleARB type_glCreateShaderObjectARB (GLenum shaderType);
+GLhandleARB
+glCreateShaderObjectARB (GLenum shaderType)
+{
+  type_glCreateShaderObjectARB *func;
+
+  if (func == NULL) {
+    func = (type_glCreateShaderObjectARB *)
+        glXGetProcAddress ((unsigned char *) "glCreateShaderObjectARB");
+  }
+  return (*func) (shaderType);
+}
+#endif
+
+DEFINE_FUNC (glShaderSourceARB,
+    (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string,
+        const GLint * length), (shaderObj, count, string, length));
+
+DEFINE_FUNC (glUniform2fARB,
+    (GLint location, GLfloat val1, GLfloat val2), (location, val1, val2));
+
+DEFINE_FUNC_RET (glGetUniformLocationARB, GLint,
+    (GLhandleARB programObj, const GLcharARB * name), (programObj, name));
+
+DEFINE_FUNC (glUniform1iARB, (GLint location, GLint val), (location, val));
+
+DEFINE_FUNC (glGetObjectParameterivARB, (GLhandleARB object, GLenum pname,
+        GLint * params), (object, pname, params));
+
+DEFINE_FUNC (glCompileShaderARB, (GLhandleARB shader), (shader));
+
+DEFINE_FUNC (glGetInfoLogARB, (GLhandleARB object, GLsizei maxLength,
+        GLsizei * length, GLcharARB * infoLog), (object, maxLength, length,
+        infoLog));
+
+DEFINE_FUNC_RET (glCreateProgramObjectARB, GLhandleARB, (void), ());
+
+DEFINE_FUNC (glAttachObjectARB, (GLhandleARB program, GLhandleARB shader),
+    (program, shader));
+
+DEFINE_FUNC (glLinkProgramARB, (GLhandleARB program), (program));
+
+DEFINE_FUNC (glUseProgramObjectARB, (GLhandleARB program), (program));
+
+DEFINE_FUNC (glPixelDataRangeNV, (GLenum target, GLsizei length, void *pointer),
+    (target, length, pointer));
+
+DEFINE_FUNC_RET (glXGetSyncValuesOML, Bool,
+    (Display * display, GLXDrawable drawable, int64_t * ust, int64_t * msc,
+        int64_t * sbc), (display, drawable, ust, msc, sbc));
+
+DEFINE_FUNC_RET (glXGetMscRateOML, Bool,
+    (Display * display, GLXDrawable drawable, int32_t * numerator,
+        int32_t * denominator), (display, drawable, numerator, denominator));
+
+DEFINE_FUNC_RET (glXSwapBuffersMscOML, int64_t,
+    (Display * display, GLXDrawable drawable, int64_t target_msc,
+        int64_t divisor, int64_t remainder), (display, drawable, target_msc,
+        divisor, remainder));
+
+DEFINE_FUNC_RET (glXWaitForMscOML, Bool,
+    (Display * display, GLXDrawable drawable, int64_t target_msc,
+        int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc,
+        int64_t * sbc), (display, drawable, target_msc, divisor, remainder, ust,
+        msc, sbc));
+
+DEFINE_FUNC_RET (glXWaitForSbcOML, Bool,
+    (Display * display, GLXDrawable drawable, int64_t target_sbc, int64_t * ust,
+        int64_t * msc, int64_t * sbc), (display, drawable, target_sbc, ust, msc,
+        sbc));
+
+DEFINE_FUNC_RET (glXSwapIntervalSGI, int, (int interval), (interval));
+
+DEFINE_FUNC_RET (glXSwapIntervalMESA, int, (unsigned int interval), (interval));
diff --git a/gst-libs/gst/gl/glextensions.h b/gst-libs/gst/gl/glextensions.h
new file mode 100644 (file)
index 0000000..fd3f8ea
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef __GST_GLEXTENSIONS_H__
+#define __GST_GLEXTENSIONS_H__
+
+#include <GL/gl.h>
+#include <glib.h>
+
+int gl_have_extension (const char *name);
+
+GLhandleARB glCreateShaderObjectARB (GLenum shaderType);
+void glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length);
+void glUniform2fARB (GLint location, GLfloat val1, GLfloat val2);
+GLint glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
+void glUniform1iARB (GLint location, GLint val);
+void glCompileShaderARB (GLhandleARB shader);
+void glGetObjectParameterivARB (GLhandleARB object, GLenum pname, GLint *params);
+void glGetInfoLogARB (GLhandleARB object, GLsizei maxLength, GLsizei *length,
+    GLcharARB *infoLog);
+GLhandleARB glCreateProgramObjectARB (void);
+void glAttachObjectARB (GLhandleARB program, GLhandleARB shader);
+void glLinkProgramARB (GLhandleARB program);
+void glUseProgramObjectARB (GLhandleARB program);
+void glPixelDataRangeNV(GLenum target, GLsizei length, void *pointer);
+void glActiveTexture(GLenum target);
+Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
+Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
+int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
+Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
+Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
+int glXSwapIntervalSGI (int);
+int glXSwapIntervalMESA (unsigned int);
+
+
+#endif
+