glsl: add some debugging

This commit is contained in:
Matthew Waters 2016-06-15 18:10:59 +10:00 committed by Tim-Philipp Müller
parent 072b47d5b8
commit e9ba0b88e7

View file

@ -33,6 +33,21 @@
* @see_also: #GstGLSLStage, #GstGLShader * @see_also: #GstGLSLStage, #GstGLShader
*/ */
#define GST_CAT_DEFAULT gst_glsl_debug
GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
static void
_init_debug (void)
{
static volatile gsize _init = 0;
if (g_once_init_enter (&_init)) {
GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "glsl", 0,
"OpenGL Shading Language");
g_once_init_leave (&_init, 1);
}
}
GQuark GQuark
gst_glsl_error_quark (void) gst_glsl_error_quark (void)
{ {
@ -255,6 +270,8 @@ gst_glsl_version_profile_from_string (const gchar * string,
GstGLSLProfile profile = GST_GLSL_PROFILE_NONE; GstGLSLProfile profile = GST_GLSL_PROFILE_NONE;
gint i; gint i;
_init_debug ();
if (!string) if (!string)
goto error; goto error;
@ -265,6 +282,7 @@ gst_glsl_version_profile_from_string (const gchar * string,
if (str[0] == '#') { if (str[0] == '#') {
if (!(version_s = if (!(version_s =
(gchar *) _check_valid_version_preprocessor_string (version_s))) { (gchar *) _check_valid_version_preprocessor_string (version_s))) {
GST_WARNING ("Invalid preprocesser directive detected: %s", version_s);
g_free (str); g_free (str);
goto error; goto error;
} }
@ -277,6 +295,8 @@ gst_glsl_version_profile_from_string (const gchar * string,
i++; i++;
/* wrong version length */ /* wrong version length */
if (i != 3) { if (i != 3) {
GST_WARNING ("version number has the wrong number of digits: %s",
version_s);
g_free (str); g_free (str);
goto error; goto error;
} }
@ -293,13 +313,24 @@ gst_glsl_version_profile_from_string (const gchar * string,
g_free (str); g_free (str);
/* check whether the parsed data is valid */ /* check whether the parsed data is valid */
if (!version) if (!version) {
GST_WARNING ("Could not map the version number to a valid GLSL version:");
goto error; goto error;
if (!_is_valid_version_profile (version, profile)) }
if (!_is_valid_version_profile (version, profile)) {
GST_WARNING ("Invalid version/profile combination specified: %s %s",
gst_glsl_version_to_string (version),
gst_glsl_profile_to_string (profile));
goto error; goto error;
}
/* got a profile when none was expected */ /* got a profile when none was expected */
if (version <= GST_GLSL_VERSION_150 && profile != GST_GLSL_PROFILE_NONE) if (version <= GST_GLSL_VERSION_150 && profile != GST_GLSL_PROFILE_NONE) {
GST_WARNING
("Found a profile (%s) with a version (%s) that does not support "
"profiles", gst_glsl_version_to_string (version),
gst_glsl_profile_to_string (profile));
goto error; goto error;
}
_fixup_version_profile (&version, &profile); _fixup_version_profile (&version, &profile);
@ -329,6 +360,8 @@ _gst_glsl_shader_string_find_version (const gchar * str)
gboolean newline = TRUE; gboolean newline = TRUE;
gint i = 0; gint i = 0;
_init_debug ();
/* search for #version while allowing for preceeding comments/whitespace as /* search for #version while allowing for preceeding comments/whitespace as
* permitted by the GLSL specification */ * permitted by the GLSL specification */
while (str && str[i] != '\0' && i < 1024) { while (str && str[i] != '\0' && i < 1024) {
@ -366,8 +399,10 @@ _gst_glsl_shader_string_find_version (const gchar * str)
} }
if (str[i] == '#') { if (str[i] == '#') {
if (newline && _check_valid_version_preprocessor_string (&str[i])) if (newline && _check_valid_version_preprocessor_string (&str[i])) {
GST_DEBUG ("found #version declaration at index %i", i);
return &str[i]; return &str[i];
}
break; break;
} }
@ -376,6 +411,8 @@ _gst_glsl_shader_string_find_version (const gchar * str)
i++; i++;
} }
GST_DEBUG ("no #version declaration found in the first 1K");
return NULL; return NULL;
} }
@ -410,6 +447,8 @@ gst_gl_version_to_glsl_version (GstGLAPI gl_api, gint maj, gint min)
{ {
g_return_val_if_fail (gl_api != GST_GL_API_NONE, 0); g_return_val_if_fail (gl_api != GST_GL_API_NONE, 0);
_init_debug ();
if (gl_api & GST_GL_API_GLES2) { if (gl_api & GST_GL_API_GLES2) {
if (maj == 2 && min == 0) if (maj == 2 && min == 0)
return 100; return 100;
@ -417,6 +456,7 @@ gst_gl_version_to_glsl_version (GstGLAPI gl_api, gint maj, gint min)
if (maj == 3 && min >= 0 && min <= 2) if (maj == 3 && min >= 0 && min <= 2)
return maj * 100 + min * 10; return maj * 100 + min * 10;
GST_WARNING ("unknown GLES version");
return 0; return 0;
} }
@ -436,9 +476,11 @@ gst_gl_version_to_glsl_version (GstGLAPI gl_api, gint maj, gint min)
if (maj == 2 && min == 0) if (maj == 2 && min == 0)
return 110; return 110;
GST_WARNING ("unknown GL version");
return 0; return 0;
} }
GST_WARNING ("unknown GL API");
return 0; return 0;
} }
@ -737,6 +779,8 @@ _gst_glsl_mangle_shader (const gchar * str, guint shader_type,
{ {
gchar *tmp, *tmp2; gchar *tmp, *tmp2;
_init_debug ();
_mangle_version_profile_from_gl_api (gl_api, gl_major, gl_minor, version, _mangle_version_profile_from_gl_api (gl_api, gl_major, gl_minor, version,
profile); profile);
tmp = _mangle_texture_access (str, from, to, gl_api, gl_major, gl_minor); tmp = _mangle_texture_access (str, from, to, gl_api, gl_major, gl_minor);