summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2014-06-04 10:52:56 +0200
committerRui Matos <tiagomatos@gmail.com>2014-06-04 10:52:56 +0200
commit3ac563307ef033553a0d666797c40ef7c1770cff (patch)
tree9478f7a1b320012113fbfc9e013d5d0a5a559b92
parent24956fadcc41af45259f137be33be243edf5c3d4 (diff)
downloadmutter-wip/xtoglsync.tar.gz
debug outputwip/xtoglsync
-rw-r--r--src/compositor/meta-sync-ring.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/compositor/meta-sync-ring.c b/src/compositor/meta-sync-ring.c
index d29d13e1c..648c4e4d7 100644
--- a/src/compositor/meta-sync-ring.c
+++ b/src/compositor/meta-sync-ring.c
@@ -115,6 +115,9 @@ static GLsync (*meta_gl_import_sync) (GLenum external_sync_type,
GLintptr external_sync,
GLbitfield flags);
+static GLenum (*meta_gl_get_error) (void);
+static GLboolean (*meta_gl_is_sync) (GLsync sync);
+
static MetaSyncRing *
meta_sync_ring_get (void)
{
@@ -192,12 +195,53 @@ load_required_symbols (void)
if (!load_gl_symbol ("glImportSyncEXT", (void **) &meta_gl_import_sync))
goto out;
+ if (!load_gl_symbol ("glGetError", (void **) &meta_gl_get_error))
+ goto out;
+ if (!load_gl_symbol ("glIsSync", (void **) &meta_gl_is_sync))
+ goto out;
+
success = TRUE;
out:
return success;
}
static void
+print_gl_error (void)
+{
+ GLenum e;
+ switch (e = meta_gl_get_error ())
+ {
+ case GL_NO_ERROR:
+ meta_warning ("GL_NO_ERROR\n");
+ break;
+ case GL_INVALID_ENUM:
+ meta_warning ("GL_INVALID_ENUM\n");
+ break;
+ case GL_INVALID_VALUE:
+ meta_warning ("GL_INVALID_VALUE\n");
+ break;
+ case GL_INVALID_OPERATION:
+ meta_warning ("GL_INVALID_OPERATION\n");
+ break;
+ case GL_INVALID_FRAMEBUFFER_OPERATION:
+ meta_warning ("GL_INVALID_FRAMEBUFFER_OPERATION\n");
+ break;
+ case GL_OUT_OF_MEMORY:
+ meta_warning ("GL_OUT_OF_MEMORY\n");
+ break;
+ case GL_STACK_OVERFLOW:
+ meta_warning ("GL_STACK_OVERFLOW\n");
+ break;
+ case GL_STACK_UNDERFLOW:
+ meta_warning ("GL_STACK_UNDERFLOW\n");
+ break;
+ default:
+ meta_warning ("GL error 0x%x\n", e);
+ break;
+ }
+}
+
+static void
meta_sync_insert (MetaSync *self)
{
g_return_if_fail (self->state == META_SYNC_STATE_READY);
@@ -279,7 +323,9 @@ meta_sync_new (Display *xdisplay)
self->xdisplay = xdisplay;
self->xfence = XSyncCreateFence (xdisplay, DefaultRootWindow (xdisplay), FALSE);
+ meta_warning ("created X fence 0x%x\n", self->xfence);
self->glsync = meta_gl_import_sync (GL_SYNC_X11_FENCE_EXT, self->xfence, 0);
+ print_gl_error ();
self->xcounter = XSyncCreateCounter (xdisplay, SYNC_VALUE_ZERO);
@@ -379,6 +425,8 @@ meta_sync_ring_init (MetaDisplay *display)
if (!meta_display_has_sync (display))
return FALSE;
+ print_gl_error ();
+
XSyncIntToValue (&SYNC_VALUE_ZERO, 0);
XSyncIntToValue (&SYNC_VALUE_ONE, 1);