cogl: Remove no-op cogl_shader_compile and cogl_shader_get_info_log

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1024
This commit is contained in:
Adam Jackson 2020-01-16 15:15:34 -05:00 committed by Georges Basile Stavracas Neto
parent 1981449776
commit 5c704e3f81
7 changed files with 7 additions and 158 deletions

View File

@ -367,24 +367,12 @@ clutter_shader_effect_try_static_source (ClutterShaderEffect *self)
CLUTTER_NOTE (SHADER, "Compiling shader effect"); CLUTTER_NOTE (SHADER, "Compiling shader effect");
cogl_shader_compile (class_priv->shader); class_priv->program = cogl_create_program ();
if (cogl_shader_is_compiled (class_priv->shader)) cogl_program_attach_shader (class_priv->program,
{ class_priv->shader);
class_priv->program = cogl_create_program ();
cogl_program_attach_shader (class_priv->program, cogl_program_link (class_priv->program);
class_priv->shader);
cogl_program_link (class_priv->program);
}
else
{
gchar *log_buf = cogl_shader_get_info_log (class_priv->shader);
g_warning (G_STRLOC ": Unable to compile the GLSL shader: %s", log_buf);
g_free (log_buf);
}
} }
priv->shader = cogl_object_ref (class_priv->shader); priv->shader = cogl_object_ref (class_priv->shader);
@ -902,23 +890,11 @@ clutter_shader_effect_set_shader_source (ClutterShaderEffect *effect,
CLUTTER_NOTE (SHADER, "Compiling shader effect"); CLUTTER_NOTE (SHADER, "Compiling shader effect");
cogl_shader_compile (priv->shader); priv->program = cogl_create_program ();
if (cogl_shader_is_compiled (priv->shader)) cogl_program_attach_shader (priv->program, priv->shader);
{
priv->program = cogl_create_program ();
cogl_program_attach_shader (priv->program, priv->shader); cogl_program_link (priv->program);
cogl_program_link (priv->program);
}
else
{
gchar *log_buf = cogl_shader_get_info_log (priv->shader);
g_warning (G_STRLOC ": Unable to compile the GLSL shader: %s", log_buf);
g_free (log_buf);
}
return TRUE; return TRUE;
} }

View File

@ -418,7 +418,6 @@ cogl_pipeline_get_user_program (CoglPipeline *pipeline);
* "!!ARBfp1.0\n" * "!!ARBfp1.0\n"
* "MOV result.color,fragment.color;\n" * "MOV result.color,fragment.color;\n"
* "END\n"); * "END\n");
* cogl_shader_compile (shader);
* *
* program = cogl_create_program (); * program = cogl_create_program ();
* cogl_program_attach_shader (program, shader); * cogl_program_attach_shader (program, shader);

View File

@ -404,7 +404,6 @@ cogl_material_set_point_size (CoglMaterial *material,
* "!!ARBfp1.0\n" * "!!ARBfp1.0\n"
* "MOV result.color,fragment.color;\n" * "MOV result.color,fragment.color;\n"
* "END\n"); * "END\n");
* cogl_shader_compile (shader);
* *
* program = cogl_create_program (); * program = cogl_create_program ();
* cogl_program_attach_shader (program, shader); * cogl_program_attach_shader (program, shader);

View File

@ -124,19 +124,6 @@ cogl_shader_source (CoglHandle handle,
shader->source = g_strdup (source); shader->source = g_strdup (source);
} }
void
cogl_shader_compile (CoglHandle handle)
{
/* XXX: For GLSL we don't actually compile anything until the shader
* gets used so we have an opportunity to add some boilerplate to
* the shader.
*
* At the end of the day this is obviously a badly designed API
* given that we are having to lie to the user. It was a mistake to
* so thinly wrap the OpenGL shader API and the current plan is to
* replace it with a pipeline snippets API. */
}
void void
_cogl_shader_compile_real (CoglHandle handle, _cogl_shader_compile_real (CoglHandle handle,
CoglPipeline *pipeline) CoglPipeline *pipeline)
@ -208,33 +195,6 @@ _cogl_shader_compile_real (CoglHandle handle,
} }
} }
char *
cogl_shader_get_info_log (CoglHandle handle)
{
if (!cogl_is_shader (handle))
return NULL;
/* XXX: This API doesn't really do anything!
*
* This API is purely for compatibility
*
* The reason we don't do anything is because a shader needs to
* be associated with a CoglPipeline for Cogl to be able to
* compile and link anything.
*
* The way this API was originally designed as a very thin wrapper
* over the GL api was a mistake and it's now very difficult to
* make the API work in a meaningful way given how the rest of Cogl
* has evolved.
*
* The CoglShader API is mostly deprecated by CoglSnippets and so
* these days we do the bare minimum to support the existing users
* of it until they are able to migrate to the snippets api.
*/
return g_strdup ("");
}
CoglShaderType CoglShaderType
cogl_shader_get_type (CoglHandle handle) cogl_shader_get_type (CoglHandle handle)
{ {
@ -251,35 +211,3 @@ cogl_shader_get_type (CoglHandle handle)
shader = handle; shader = handle;
return shader->type; return shader->type;
} }
gboolean
cogl_shader_is_compiled (CoglHandle handle)
{
#if defined (HAVE_COGL_GL) || defined (HAVE_COGL_GLES2)
if (!cogl_is_shader (handle))
return FALSE;
/* XXX: This API doesn't really do anything!
*
* This API is purely for compatibility and blatantly lies to the
* user about whether their shader has been compiled.
*
* I suppose we could say we're stretching the definition of
* "compile" and are deferring any related errors to be "linker"
* errors.
*
* The reason we don't do anything is because a shader needs to
* be associated with a CoglPipeline for Cogl to be able to
* compile and link anything.
*
* The CoglShader API is mostly deprecated by CoglSnippets and so
* these days we do the bare minimum to support the existing users
* of it until they are able to migrate to the snippets api.
*/
return TRUE;
#else
return FALSE;
#endif
}

View File

@ -281,37 +281,6 @@ void
cogl_shader_source (CoglHandle shader, cogl_shader_source (CoglHandle shader,
const char *source); const char *source);
/**
* cogl_shader_compile:
* @handle: #CoglHandle for a shader.
*
* Compiles the shader, no return value, but the shader is now ready
* for linking into a program. Note that calling this function is
* optional. If it is not called then the shader will be automatically
* compiled when it is linked.
* Deprecated: 1.16: Use #CoglSnippet api
*/
COGL_DEPRECATED_FOR (cogl_snippet_)
void
cogl_shader_compile (CoglHandle handle);
/**
* cogl_shader_get_info_log:
* @handle: #CoglHandle for a shader.
*
* Retrieves the information log for a coglobject, can be used in conjunction
* with cogl_shader_get_parameteriv() to retrieve the compiler warnings/error
* messages that caused a shader to not compile correctly, mainly useful for
* debugging purposes.
*
* Return value: a newly allocated string containing the info log. Use
* g_free() to free it
* Deprecated: 1.16: Use #CoglSnippet api
*/
COGL_DEPRECATED_FOR (cogl_snippet_)
char *
cogl_shader_get_info_log (CoglHandle handle);
/** /**
* cogl_shader_get_type: * cogl_shader_get_type:
* @handle: #CoglHandle for a shader. * @handle: #CoglHandle for a shader.
@ -326,19 +295,6 @@ COGL_DEPRECATED_FOR (cogl_snippet_)
CoglShaderType CoglShaderType
cogl_shader_get_type (CoglHandle handle); cogl_shader_get_type (CoglHandle handle);
/**
* cogl_shader_is_compiled:
* @handle: #CoglHandle for a shader.
*
* Retrieves whether a shader #CoglHandle has been compiled
*
* Return value: %TRUE if the shader object has sucessfully be compiled
* Deprecated: 1.16: Use #CoglSnippet api
*/
COGL_DEPRECATED_FOR (cogl_snippet_)
gboolean
cogl_shader_is_compiled (CoglHandle handle);
/** /**
* cogl_create_program: * cogl_create_program:
* *

View File

@ -69,14 +69,6 @@ paint (TestState *state)
" cogl_color_out = cogl_color_in;\n" " cogl_color_out = cogl_color_in;\n"
" cogl_tex_coord_out[0] = cogl_tex_coord_in;\n" " cogl_tex_coord_out[0] = cogl_tex_coord_in;\n"
"}\n"); "}\n");
cogl_shader_compile (shader);
if (!cogl_shader_is_compiled (shader))
{
char *log = cogl_shader_get_info_log (shader);
g_warning ("Shader compilation failed:\n%s", log);
g_free (log);
g_assert_not_reached ();
}
program = cogl_create_program (); program = cogl_create_program ();
cogl_program_attach_shader (program, shader); cogl_program_attach_shader (program, shader);

View File

@ -196,7 +196,6 @@ set_shader_num (int new_no)
shader = cogl_create_shader (COGL_SHADER_TYPE_FRAGMENT); shader = cogl_create_shader (COGL_SHADER_TYPE_FRAGMENT);
cogl_shader_source (shader, shaders[new_no].source); cogl_shader_source (shader, shaders[new_no].source);
cogl_shader_compile (shader);
program = cogl_create_program (); program = cogl_create_program ();
cogl_program_attach_shader (program, shader); cogl_program_attach_shader (program, shader);