diff --git a/gst-libs/gst/gl/glprototypes/shaders.h b/gst-libs/gst/gl/glprototypes/shaders.h index 817e4798e3..6d828dbac2 100644 --- a/gst-libs/gst/gl/glprototypes/shaders.h +++ b/gst-libs/gst/gl/glprototypes/shaders.h @@ -362,3 +362,13 @@ GST_GL_EXT_FUNCTION (void, UniformMatrix3x4fv, GST_GL_EXT_FUNCTION (void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) GST_GL_EXT_END () + +GST_GL_EXT_BEGIN (bind_frag_data, + GST_GL_API_OPENGL | GST_GL_API_OPENGL3, + 3, 0, + 255, 255, + "\0", + "\0") +GST_GL_EXT_FUNCTION (void, BindFragDataLocation, + (GLuint program, GLuint index, const GLchar * name)) +GST_GL_EXT_END () diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c index 9d96784aef..9f092369a7 100644 --- a/gst-libs/gst/gl/gstglshader.c +++ b/gst-libs/gst/gl/gstglshader.c @@ -1306,3 +1306,23 @@ gst_gl_shader_bind_attribute_location (GstGLShader * shader, GLuint index, gl->BindAttribLocation (priv->program_handle, index, name); } + +void +gst_gl_shader_bind_frag_data_location (GstGLShader * shader, + guint index, const gchar * name) +{ + GstGLShaderPrivate *priv; + GstGLFuncs *gl; + + g_return_if_fail (shader != NULL); + if (!_ensure_program (shader)) + g_return_if_fail (shader->priv->program_handle); + priv = shader->priv; + gl = shader->context->gl_vtable; + g_return_if_fail (gl->BindFragDataLocation); + + GST_TRACE_OBJECT (shader, "binding program %i frag data \'%s\' location %i", + (int) priv->program_handle, name, index); + + gl->BindFragDataLocation (priv->program_handle, index, name); +} diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h index 21410e27cb..2200b89fcb 100644 --- a/gst-libs/gst/gl/gstglshader.h +++ b/gst-libs/gst/gl/gstglshader.h @@ -104,6 +104,7 @@ void gst_gl_shader_set_uniform_matrix_4x3fv (GstGLShader *shader, const gchar *n gint gst_gl_shader_get_attribute_location (GstGLShader *shader, const gchar *name); void gst_gl_shader_bind_attribute_location (GstGLShader * shader, guint index, const gchar * name); +void gst_gl_shader_bind_frag_data_location (GstGLShader * shader, guint index, const gchar * name); G_END_DECLS