mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 00:31:13 +00:00
glsl: add some debugging
This commit is contained in:
parent
072b47d5b8
commit
e9ba0b88e7
1 changed files with 48 additions and 4 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue