[vlc-devel] [PATCH 05/10] opengl: make FetchLocations() infaillible
Romain Vimont
rom1v at videolabs.io
Thu Jun 4 11:52:13 CEST 2020
If GetUniformLocation() returns -1, then this is an implementation
error.
Assert instead of reporting the error to the caller.
---
modules/video_output/opengl/renderer.c | 8 +-----
modules/video_output/opengl/sampler.c | 38 ++++++++------------------
modules/video_output/opengl/sampler.h | 7 ++---
3 files changed, 16 insertions(+), 37 deletions(-)
diff --git a/modules/video_output/opengl/renderer.c b/modules/video_output/opengl/renderer.c
index c98d2f4b76d8..0f6a7ba73f15 100644
--- a/modules/video_output/opengl/renderer.c
+++ b/modules/video_output/opengl/renderer.c
@@ -281,13 +281,7 @@ opengl_link_program(struct vlc_gl_renderer *renderer)
#undef GET_ULOC
#undef GET_ALOC
- int ret = vlc_gl_sampler_FetchLocations(sampler, program_id);
- assert(ret == VLC_SUCCESS);
- if (ret != VLC_SUCCESS)
- {
- msg_Err(renderer->gl, "Unable to get locations from tex_conv");
- goto error;
- }
+ vlc_gl_sampler_FetchLocations(sampler, program_id);
renderer->program_id = program_id;
diff --git a/modules/video_output/opengl/sampler.c b/modules/video_output/opengl/sampler.c
index 1028c5103a93..e7e4d0b49ef9 100644
--- a/modules/video_output/opengl/sampler.c
+++ b/modules/video_output/opengl/sampler.c
@@ -252,7 +252,7 @@ sampler_yuv_base_init(struct vlc_gl_sampler *sampler, vlc_fourcc_t chroma,
return VLC_SUCCESS;
}
-static int
+static void
sampler_base_fetch_locations(struct vlc_gl_sampler *sampler, GLuint program)
{
struct vlc_gl_sampler_priv *priv = PRIV(sampler);
@@ -263,19 +263,16 @@ sampler_base_fetch_locations(struct vlc_gl_sampler *sampler, GLuint program)
if (priv->yuv_color)
{
priv->uloc.ConvMatrix = vt->GetUniformLocation(program, "ConvMatrix");
- if (priv->uloc.ConvMatrix == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.ConvMatrix != -1);
}
priv->uloc.TransformMatrix =
vt->GetUniformLocation(program, "TransformMatrix");
- if (priv->uloc.TransformMatrix == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.TransformMatrix != -1);
priv->uloc.OrientationMatrix =
vt->GetUniformLocation(program, "OrientationMatrix");
- if (priv->uloc.OrientationMatrix == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.OrientationMatrix != -1);
assert(interop->tex_count < 10); /* to guarantee variable names length */
for (unsigned int i = 0; i < interop->tex_count; ++i)
@@ -284,20 +281,17 @@ sampler_base_fetch_locations(struct vlc_gl_sampler *sampler, GLuint program)
snprintf(name, sizeof(name), "Texture%1u", i);
priv->uloc.Texture[i] = vt->GetUniformLocation(program, name);
- if (priv->uloc.Texture[i] == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.Texture[i] != -1);
snprintf(name, sizeof(name), "TexCoordsMap%1u", i);
priv->uloc.TexCoordsMap[i] = vt->GetUniformLocation(program, name);
- if (priv->uloc.TexCoordsMap[i] == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.TexCoordsMap[i] != -1);
if (interop->tex_target == GL_TEXTURE_RECTANGLE)
{
snprintf(name, sizeof(name), "TexSize%1u", i);
priv->uloc.TexSize[i] = vt->GetUniformLocation(program, name);
- if (priv->uloc.TexSize[i] == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.TexSize[i] != -1);
}
}
@@ -308,8 +302,6 @@ sampler_base_fetch_locations(struct vlc_gl_sampler *sampler, GLuint program)
priv->uloc.pl_vars[i] = vt->GetUniformLocation(program, sv.var.name);
}
#endif
-
- return VLC_SUCCESS;
}
static const GLfloat *
@@ -394,32 +386,26 @@ sampler_base_prepare_shader(const struct vlc_gl_sampler *sampler)
#endif
}
-static int
+static void
sampler_xyz12_fetch_locations(struct vlc_gl_sampler *sampler, GLuint program)
{
struct vlc_gl_sampler_priv *priv = PRIV(sampler);
const opengl_vtable_t *vt = priv->vt;
priv->uloc.Texture[0] = vt->GetUniformLocation(program, "Texture0");
- if (priv->uloc.Texture[0] == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.Texture[0] != -1);
priv->uloc.TransformMatrix =
vt->GetUniformLocation(program, "TransformMatrix");
- if (priv->uloc.TransformMatrix == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.TransformMatrix != -1);
priv->uloc.OrientationMatrix =
vt->GetUniformLocation(program, "OrientationMatrix");
- if (priv->uloc.OrientationMatrix == -1)
- return VLC_EGENERIC;
+ assert(priv->uloc.OrientationMatrix != -1);
priv->uloc.TexCoordsMap[0] =
vt->GetUniformLocation(program, "TexCoordsMap0");
- if (priv->uloc.TexCoordsMap[0] == -1)
- return VLC_EGENERIC;
-
- return VLC_SUCCESS;
+ assert(priv->uloc.TexCoordsMap[0] != -1);
}
static void
diff --git a/modules/video_output/opengl/sampler.h b/modules/video_output/opengl/sampler.h
index 4b0c305c4e71..f26820bfaba3 100644
--- a/modules/video_output/opengl/sampler.h
+++ b/modules/video_output/opengl/sampler.h
@@ -85,9 +85,8 @@ struct vlc_gl_sampler {
*
* \param sampler the sampler
* \param program linked program that will be used by this sampler
- * \return VLC_SUCCESS or a VLC error
*/
- int (*pf_fetch_locations)(struct vlc_gl_sampler *sampler, GLuint program);
+ void (*pf_fetch_locations)(struct vlc_gl_sampler *sampler, GLuint program);
/**
* Callback to prepare the fragment shader
@@ -100,10 +99,10 @@ struct vlc_gl_sampler {
void (*pf_prepare_shader)(const struct vlc_gl_sampler *sampler);
};
-static inline int
+static inline void
vlc_gl_sampler_FetchLocations(struct vlc_gl_sampler *sampler, GLuint program)
{
- return sampler->pf_fetch_locations(sampler, program);
+ sampler->pf_fetch_locations(sampler, program);
}
static inline void
--
2.27.0
More information about the vlc-devel
mailing list