mirror of
https://git.yoctoproject.org/poky
synced 2026-04-28 06:32:34 +02:00
gstreamer1.0-plugins-bad: Add glBindFragDataLocation in glshader
There are some cases where it's needed for binding in/out variables in shaders. (From OE-Core rev: 2ddbc4fac1d5e84428c503b48e5015ac506a962f) Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
352acc90c4
commit
a933b784ec
@@ -0,0 +1,77 @@
|
||||
From 38221080181229d520522a20bcb1663ca19f7aff Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Waters <matthew@centricular.com>
|
||||
Date: Thu, 31 Mar 2016 19:25:32 +1100
|
||||
Subject: [PATCH 2/3] glshader: add glBindFragDataLocation
|
||||
|
||||
There are some cases where it's needed for binding in/out variables in shaders.
|
||||
e.g. glsl 150 (gl 3.2) doesn't support the 'layout (location = ?)' specifiers in
|
||||
the shader source so we have to bind them ourselves.
|
||||
|
||||
Upstream-Status: Backport [1.9.1]
|
||||
---
|
||||
gst-libs/gst/gl/glprototypes/shaders.h | 10 ++++++++++
|
||||
gst-libs/gst/gl/gstglshader.c | 20 ++++++++++++++++++++
|
||||
gst-libs/gst/gl/gstglshader.h | 1 +
|
||||
3 files changed, 31 insertions(+)
|
||||
|
||||
diff --git a/gst-libs/gst/gl/glprototypes/shaders.h b/gst-libs/gst/gl/glprototypes/shaders.h
|
||||
index 817e479..6d828db 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 9d96784..9f09236 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 21410e2..2200b89 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
|
||||
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -15,6 +15,7 @@ SRC_URI = " \
|
||||
file://0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch \
|
||||
file://0003-glcolorconvert-implement-multiple-render-targets-for.patch \
|
||||
file://0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch \
|
||||
file://0005-glshader-add-glBindFragDataLocation.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "83abc2e70684e7b195f18ca2992ef6e8"
|
||||
SRC_URI[sha256sum] = "d7995317530c8773ec088f94d9320909d41da61996b801ebacce9a56af493f97"
|
||||
|
||||
Reference in New Issue
Block a user