[gtk/matthiasc/glshader-node] gsk: Add some shader debug spew
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/glshader-node] gsk: Add some shader debug spew
- Date: Wed, 23 Sep 2020 20:19:17 +0000 (UTC)
commit a3ea3f94dcd43be411315676eaae28cf408a0bc0
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Sep 23 15:40:57 2020 -0400
gsk: Add some shader debug spew
When we're done extracting uniform info from the glsl,
print out what we've found for GSK_DEBUG=shaders. If
something goes wrong, this will be useful.
gsk/gskglshader.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
---
diff --git a/gsk/gskglshader.c b/gsk/gskglshader.c
index 2b5ae745aa..b3ffde383b 100644
--- a/gsk/gskglshader.c
+++ b/gsk/gskglshader.c
@@ -111,6 +111,7 @@
#include "config.h"
#include "gskglshader.h"
#include "gskglshaderprivate.h"
+#include "gskdebugprivate.h"
static GskGLUniformType
uniform_type_from_glsl (const char *str)
@@ -133,6 +134,39 @@ uniform_type_from_glsl (const char *str)
return GSK_GLUNIFORM_TYPE_NONE;
}
+static const char *
+uniform_type_name (GskGLUniformType type)
+{
+ switch (type)
+ {
+ case GSK_GLUNIFORM_TYPE_FLOAT:
+ return "float";
+
+ case GSK_GLUNIFORM_TYPE_INT:
+ return "int";
+
+ case GSK_GLUNIFORM_TYPE_UINT:
+ return "uint";
+
+ case GSK_GLUNIFORM_TYPE_BOOL:
+ return "bool";
+
+ case GSK_GLUNIFORM_TYPE_VEC2:
+ return "vec2";
+
+ case GSK_GLUNIFORM_TYPE_VEC3:
+ return "vec3";
+
+ case GSK_GLUNIFORM_TYPE_VEC4:
+ return "vec4";
+
+ case GSK_GLUNIFORM_TYPE_NONE:
+ default:
+ g_assert_not_reached ();
+ return NULL;
+ }
+}
+
static int
uniform_type_size (GskGLUniformType type)
{
@@ -334,6 +368,24 @@ gsk_gl_shader_constructed (GObject *object)
g_match_info_free (match_info);
shader->n_required_textures = max_texture_seen;
+
+ if (GSK_DEBUG_CHECK(SHADERS))
+ {
+ GString *s;
+
+ s = g_string_new ("");
+ for (int i = 0; i < shader->uniforms->len; i++)
+ {
+ GskGLUniform *u = &g_array_index (shader->uniforms, GskGLUniform, i);
+ if (i > 0)
+ g_string_append (s, ", ");
+ g_string_append_printf (s, "%s %s", uniform_type_name (u->type), u->name);
+ }
+ g_message ("Shader constructed: %d textures, %d uniforms (%s)",
+ shader->n_required_textures, shader->uniforms->len,
+ s->str);
+ g_string_free (s, TRUE);
+ }
}
#define SPACE_RE "[ \\t]+" // Don't use \s, we don't want to match newlines
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]