diff options
author | David Schleef <ds@schleef.org> | 2007-12-16 00:16:46 +0000 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2007-12-16 00:16:46 +0000 |
commit | 1fab43e619a4d0de7d7edba66b5ed5ec60f99652 (patch) | |
tree | 1a29b657d5d702e26497f707a0800ec76c6d5934 /sys/glsink/glextensions.c | |
parent | 601b1f640bc499060330a17c921e296823da9e3f (diff) | |
download | gst-plugins-bad-1fab43e619a4d0de7d7edba66b5ed5ec60f99652.tar.gz gst-plugins-bad-1fab43e619a4d0de7d7edba66b5ed5ec60f99652.tar.bz2 gst-plugins-bad-1fab43e619a4d0de7d7edba66b5ed5ec60f99652.zip |
sys/glsink/: Add vblank synchronization. Isn't really working on my driver. :(
Original commit message from CVS:
* sys/glsink/Makefile.am:
* sys/glsink/glextensions.c:
* sys/glsink/glextensions.h:
* sys/glsink/glvideo.c:
Add vblank synchronization. Isn't really working on my
driver. :(
Diffstat (limited to 'sys/glsink/glextensions.c')
-rw-r--r-- | sys/glsink/glextensions.c | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/sys/glsink/glextensions.c b/sys/glsink/glextensions.c new file mode 100644 index 00000000..31b862e3 --- /dev/null +++ b/sys/glsink/glextensions.c @@ -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)); |