]> git.cworth.org Git - fips/blobdiff - glwrap.c
Fix compilation due to changed signature of glClearNamedBufferSubDataEXT.
[fips] / glwrap.c
index 94966f5142487e402bb646c0d576c0e027c5bb63..76d9ef9bd360fdfa85ecd6e0c14641a3dc380a0e 100644 (file)
--- a/glwrap.c
+++ b/glwrap.c
 
 #include "glwrap.h"
 
-#include "metrics.h"
+#include "context.h"
+
+/* The first appearance of the GLfixed datatype in Mesa was with
+ * glext.h of version 20130624. So we'll assume that any older glext.h
+ * cannot have any function accepting a GLfixed parameter. */
+#if GL_GLEXT_VERSION >= 20130624
+#define HAVE_GLFIXED 1
+#endif
+
+/* As of glext.h version 20131008 some types changed.
+ *
+ * I have no idea why some internalFormats changed from GLenum to
+ * GLint while others changed from GLint to GLenum.
+ *
+ * But, in order to compile with either version, we track these.
+ */
+#if GL_GLEXT_VERSION >= 20131008
+#define GLint_or_enum GLenum
+#define GLenum_or_int GLint
+#else
+#define GLint_or_enum GLint
+#define GLenum_or_int GLenum
+#endif
 
 static void *gl_handle;
 
 /* Switch metrics operation persistently, (until next SWITCH) */
 #define SWITCH_METRICS_OP(op)                  \
-       metrics_counter_stop ();                \
-       metrics_set_current_op (op);            \
-       metrics_counter_start ();
+       context_counter_stop ();                \
+       context_set_current_op (op);            \
+       context_counter_start ();
 
 /* Switch metrics operation temporarily, see RESTORE_METRICS_OP */
 #define SAVE_THEN_SWITCH_METRICS_OP(op)                        \
-       metrics_op_t save = metrics_get_current_op ();  \
+       metrics_op_t save = context_get_current_op ();  \
        SWITCH_METRICS_OP (op);
 
 /* Switch back to metrics operation saved by SAVE_THEN_SWITCH_METRICS_OP */
-#define RESTORE_METRICS_OP(op)                         \
+#define RESTORE_METRICS_OP()                           \
        SWITCH_METRICS_OP (save);
 
 void
@@ -97,6 +119,8 @@ glwrap_lookup (char *name)
                const char *path;
 
                path = getenv ("FIPS_LIBGL");
+               if (! path)
+                       path = getenv ("GLAZE_LIBGL");
                if (path) {
                        gl_handle = dlopen (path, RTLD_LAZY);
 
@@ -113,7 +137,7 @@ glwrap_lookup (char *name)
        ret = dlwrap_real_dlsym (gl_handle, name);
 
        if (ret == NULL) {
-               fprintf (stderr, "Error: glwrap_lookup failed to dlsym %s\n",
+               fprintf (stderr, "fips: Error: glwrap_lookup failed to dlsym %s\n",
                         name);
                exit (1);
        }
@@ -160,6 +184,7 @@ glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
        RESTORE_METRICS_OP ();
 }
 
+#if HAVE_GLFIXED
 void
 glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
 {
@@ -169,6 +194,7 @@ glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
 
        RESTORE_METRICS_OP ();
 }
+#endif
 
 /* METRICS_OP_BUFFER_DATA */
 void
@@ -401,6 +427,7 @@ glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig,
        RESTORE_METRICS_OP ();
 }
 
+#if HAVE_GLFIXED
 void
 glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig,
              GLfixed xmove, GLfixed ymove, const GLubyte *bitmap)
@@ -412,6 +439,7 @@ glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig,
 
        RESTORE_METRICS_OP ();
 }
+#endif
 
 /* METRICS_OP_BLIT_FRAMEBUFFER */
 void
@@ -530,6 +558,7 @@ glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format,
        RESTORE_METRICS_OP ();
 }
 
+#if GL_GLEXT_VERSION < 20131212
 void
 glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat,
                              GLenum format, GLenum type, GLsizeiptr offset,
@@ -542,6 +571,21 @@ glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat,
 
        RESTORE_METRICS_OP ();
 }
+#else
+void
+glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, 
+                              GLsizeiptr offset, GLsizeiptr size, 
+                              GLenum format, GLenum type, 
+                              const void *data)
+{
+       SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
+
+       GLWRAP_DEFER (glClearNamedBufferSubDataEXT, buffer, internalformat, 
+                  offset, size, format, type, data);
+
+       RESTORE_METRICS_OP ();
+}
+#endif
 
 /* METRICS_OP_CLEAR_TEX_IMAGE */
 
@@ -970,7 +1014,8 @@ glTexImage2D (GLenum target, GLint level, GLint internalFormat,
 
 void
 glTexImage2DMultisample (GLenum target, GLsizei samples,
-                        GLint internalformat, GLsizei width, GLsizei height,
+                        GLint_or_enum internalformat,
+                        GLsizei width, GLsizei height,
                         GLboolean fixedsamplelocations)
 {
        SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
@@ -1023,7 +1068,8 @@ glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat,
 }
 
 void
-glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat,
+glTexImage3DMultisample (GLenum target, GLsizei samples,
+                        GLint_or_enum internalformat,
                         GLsizei width, GLsizei height, GLsizei depth,
                         GLboolean fixedsamplelocations)
 {
@@ -1494,7 +1540,8 @@ glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
 
 void
 glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
-                     GLenum internalformat, GLsizei width, GLint border,
+                     GLenum_or_int internalformat,
+                     GLsizei width, GLint border,
                      GLenum format, GLenum type, const GLvoid *pixels)
 {
        SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
@@ -1507,7 +1554,8 @@ glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
 
 void
 glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
-                     GLenum internalformat, GLsizei width, GLsizei height,
+                     GLenum_or_int internalformat,
+                     GLsizei width, GLsizei height,
                      GLint border, GLenum format, GLenum type,
                      const GLvoid *pixels)
 {
@@ -1522,7 +1570,8 @@ glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
 
 void
 glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
-                     GLenum internalformat, GLsizei width, GLsizei height,
+                     GLenum_or_int internalformat,
+                     GLsizei width, GLsizei height,
                      GLsizei depth, GLint border, GLenum format,
                      GLenum type, const GLvoid *pixels)
 {