[vlc-devel] [PATCH 30/41] opengl: only use sampler from fragment_shaders.c

Romain Vimont rom1v at videolabs.io
Fri Feb 7 17:42:16 CET 2020


The renderer instance is not needed anymore.
---
 .../video_output/opengl/fragment_shaders.c    | 47 +++++++++----------
 modules/video_output/opengl/internal.h        |  2 +-
 modules/video_output/opengl/renderer.c        |  4 +-
 3 files changed, 24 insertions(+), 29 deletions(-)

diff --git a/modules/video_output/opengl/fragment_shaders.c b/modules/video_output/opengl/fragment_shaders.c
index aa435fbb52..6661a3746d 100644
--- a/modules/video_output/opengl/fragment_shaders.c
+++ b/modules/video_output/opengl/fragment_shaders.c
@@ -131,12 +131,10 @@ init_conv_matrix(float conv_matrix_out[],
 }
 
 static int
-renderer_yuv_base_init(struct vlc_gl_renderer *renderer, vlc_fourcc_t chroma,
-                       const vlc_chroma_description_t *desc,
-                       video_color_space_t yuv_space)
+sampler_yuv_base_init(struct vlc_gl_sampler *sampler, vlc_fourcc_t chroma,
+                      const vlc_chroma_description_t *desc,
+                      video_color_space_t yuv_space)
 {
-    struct vlc_gl_sampler *sampler = renderer->sampler;
-
     /* The current implementation always converts from limited to full range. */
     const video_color_range_t range = COLOR_RANGE_LIMITED;
     float *matrix = sampler->conv_matrix;
@@ -355,10 +353,8 @@ sampler_xyz12_prepare_shader(const struct vlc_gl_sampler *sampler)
 }
 
 static char *
-xyz12_shader_init(struct vlc_gl_renderer *renderer)
+xyz12_shader_init(struct vlc_gl_sampler *sampler)
 {
-    struct vlc_gl_sampler *sampler = renderer->sampler;
-
     sampler->pf_fetch_locations = sampler_xyz12_fetch_locations;
     sampler->pf_prepare_shader = sampler_xyz12_prepare_shader;
 
@@ -454,12 +450,11 @@ opengl_init_swizzle(const struct vlc_gl_interop *interop,
 }
 
 char *
-opengl_fragment_shader_init(struct vlc_gl_renderer *renderer, GLenum tex_target,
+opengl_fragment_shader_init(struct vlc_gl_sampler *sampler, GLenum tex_target,
                             vlc_fourcc_t chroma, video_color_space_t yuv_space)
 {
-    struct vlc_gl_sampler *sampler = renderer->sampler;
     struct vlc_gl_interop *interop = sampler->interop;
-    const opengl_vtable_t *vt = renderer->vt;
+    const opengl_vtable_t *vt = sampler->vt;
 
     const char *swizzle_per_tex[PICTURE_PLANE_MAX] = { NULL, };
     const bool is_yuv = vlc_fourcc_IsYUV(chroma);
@@ -470,11 +465,11 @@ opengl_fragment_shader_init(struct vlc_gl_renderer *renderer, GLenum tex_target,
         return NULL;
 
     if (chroma == VLC_CODEC_XYZ12)
-        return xyz12_shader_init(renderer);
+        return xyz12_shader_init(sampler);
 
     if (is_yuv)
     {
-        ret = renderer_yuv_base_init(renderer, chroma, desc, yuv_space);
+        ret = sampler_yuv_base_init(sampler, chroma, desc, yuv_space);
         if (ret != VLC_SUCCESS)
             return NULL;
         ret = opengl_init_swizzle(interop, swizzle_per_tex, chroma, desc);
@@ -518,32 +513,32 @@ opengl_fragment_shader_init(struct vlc_gl_renderer *renderer, GLenum tex_target,
     if (sampler->pl_sh) {
         struct pl_shader *sh = sampler->pl_sh;
         struct pl_color_map_params color_params = pl_color_map_default_params;
-        color_params.intent = var_InheritInteger(renderer->gl, "rendering-intent");
-        color_params.tone_mapping_algo = var_InheritInteger(renderer->gl, "tone-mapping");
-        color_params.tone_mapping_param = var_InheritFloat(renderer->gl, "tone-mapping-param");
+        color_params.intent = var_InheritInteger(sampler->gl, "rendering-intent");
+        color_params.tone_mapping_algo = var_InheritInteger(sampler->gl, "tone-mapping");
+        color_params.tone_mapping_param = var_InheritFloat(sampler->gl, "tone-mapping-param");
 #    if PL_API_VER >= 10
-        color_params.desaturation_strength = var_InheritFloat(renderer->gl, "desat-strength");
-        color_params.desaturation_exponent = var_InheritFloat(renderer->gl, "desat-exponent");
-        color_params.desaturation_base = var_InheritFloat(renderer->gl, "desat-base");
+        color_params.desaturation_strength = var_InheritFloat(sampler->gl, "desat-strength");
+        color_params.desaturation_exponent = var_InheritFloat(sampler->gl, "desat-exponent");
+        color_params.desaturation_base = var_InheritFloat(sampler->gl, "desat-base");
 #    else
-        color_params.tone_mapping_desaturate = var_InheritFloat(renderer->gl, "tone-mapping-desat");
+        color_params.tone_mapping_desaturate = var_InheritFloat(sampler->gl, "tone-mapping-desat");
 #    endif
-        color_params.gamut_warning = var_InheritBool(renderer->gl, "tone-mapping-warn");
+        color_params.gamut_warning = var_InheritBool(sampler->gl, "tone-mapping-warn");
 
         struct pl_color_space dst_space = pl_color_space_unknown;
-        dst_space.primaries = var_InheritInteger(renderer->gl, "target-prim");
-        dst_space.transfer = var_InheritInteger(renderer->gl, "target-trc");
+        dst_space.primaries = var_InheritInteger(sampler->gl, "target-prim");
+        dst_space.transfer = var_InheritInteger(sampler->gl, "target-trc");
 
         pl_shader_color_map(sh, &color_params,
                 vlc_placebo_ColorSpace(&interop->fmt),
                 dst_space, NULL, false);
 
         struct pl_shader_obj *dither_state = NULL;
-        int method = var_InheritInteger(renderer->gl, "dither-algo");
+        int method = var_InheritInteger(sampler->gl, "dither-algo");
         if (method >= 0) {
 
             unsigned out_bits = 0;
-            int override = var_InheritInteger(renderer->gl, "dither-depth");
+            int override = var_InheritInteger(sampler->gl, "dither-depth");
             if (override > 0)
                 out_bits = override;
             else
@@ -589,7 +584,7 @@ opengl_fragment_shader_init(struct vlc_gl_renderer *renderer, GLenum tex_target,
         interop->fmt.primaries == COLOR_PRIMARIES_BT2020)
     {
         // no warning for HLG because it's more or less backwards-compatible
-        msg_Warn(renderer->gl, "VLC needs to be built with support for libplacebo "
+        msg_Warn(sampler->gl, "VLC needs to be built with support for libplacebo "
                  "in order to display wide gamut or HDR signals correctly.");
     }
 #endif
diff --git a/modules/video_output/opengl/internal.h b/modules/video_output/opengl/internal.h
index f4ed495252..a6e4101663 100644
--- a/modules/video_output/opengl/internal.h
+++ b/modules/video_output/opengl/internal.h
@@ -29,7 +29,7 @@ opengl_interop_init_impl(struct vlc_gl_interop *interop, GLenum tex_target,
                          vlc_fourcc_t chroma, video_color_space_t yuv_space);
 
 char *
-opengl_fragment_shader_init(struct vlc_gl_renderer *rendeer,
+opengl_fragment_shader_init(struct vlc_gl_sampler *sampler,
                             GLenum, vlc_fourcc_t, video_color_space_t);
 int
 opengl_interop_generic_init(struct vlc_gl_interop *interop, bool);
diff --git a/modules/video_output/opengl/renderer.c b/modules/video_output/opengl/renderer.c
index 81bde470ee..b620d0d0a9 100644
--- a/modules/video_output/opengl/renderer.c
+++ b/modules/video_output/opengl/renderer.c
@@ -268,10 +268,10 @@ BuildVertexShader(const struct vlc_gl_renderer *renderer)
 static char *
 BuildFragmentShader(struct vlc_gl_renderer *renderer)
 {
-    const struct vlc_gl_sampler *sampler = renderer->sampler;
+    struct vlc_gl_sampler *sampler = renderer->sampler;
     const struct vlc_gl_interop *interop = sampler->interop;
     char *vlc_texture =
-        opengl_fragment_shader_init(renderer, interop->tex_target,
+        opengl_fragment_shader_init(sampler, interop->tex_target,
                                     interop->sw_fmt.i_chroma,
                                     interop->sw_fmt.space);
     if (!vlc_texture)
-- 
2.25.0



More information about the vlc-devel mailing list