[vlc-devel] [PATCH 00/18] Refactor OpenGL converters

Romain Vimont rom1v at videolabs.io
Fri Dec 20 15:48:42 CET 2019

The purpose of this refactor is to minimize the scope of OpenGL converter
modules, to only initialize what is hardware-specific: the _importer_ part.

An _importer_ is responsible to upload picture planes to OpenGL textures, and
keep track of some metadata about the format and context. It is specific to the
input picture format (software, VDPAU, VAAPI, Android, CVPX). It is loaded via
the VLC module mechanism.

The remaining parts, including the generation of the whole fragment shader code
and the callbacks to prepare the shader for drawing every picture, are kept in
the opengl_tex_converter_t. It is now initialized by the "core" (the OpenGL
vout module), i.e. not by hardware-specific "glconv" modules anymore.

This also paves the way to refactor the fragment shader generation and loading
to use modular components (chroma converters, filters, renderers...).

The first commit is a new version of a patch already submitted:

TODO: adapt converter_cvpx (for mac/iphone)

Romain Vimont (18):
  opengl: use common fragment shader for Android
  opengl: extract importer from converter
  opengl: expose software chroma in importer
  opengl: remove tex converter usages
  opengl: split yuv_base_init()
  opengl: use importer for rgb_base_init()
  opengl: split xyz12_init()
  opengl: extract importer initialization
  opengl: init swizzle separately
  opengl: expose opengl_importer_init()
  opengl: initialize fshader from vout_helper
  opengl: refactor generic_init()
  opengl: make importer a vlc_object_t
  opengl: pass importer to "glconv" modules
  opengl: remove pf_fragment_shader_init()
  opengl: rename converters modules to importers
  opengl: move compatibility defines to gl_common.h
  opengl: move importer-specific code to importer.c

 modules/video_output/Makefile.am              |  16 +-
 modules/video_output/opengl/converter.h       | 115 +-----
 .../video_output/opengl/fragment_shaders.c    | 357 +++++-------------
 modules/video_output/opengl/gl_common.h       |  27 ++
 modules/video_output/opengl/importer.c        | 241 ++++++++++++
 modules/video_output/opengl/importer.h        | 170 +++++++++
 ...converter_android.c => importer_android.c} | 120 +++---
 .../opengl/{converter_sw.c => importer_sw.c}  | 190 +++++-----
 .../{converter_vaapi.c => importer_vaapi.c}   | 121 +++---
 .../{converter_vdpau.c => importer_vdpau.c}   |  58 +--
 modules/video_output/opengl/internal.h        |   9 +-
 modules/video_output/opengl/vout_helper.c     | 226 +++++++----
 12 files changed, 926 insertions(+), 724 deletions(-)
 create mode 100644 modules/video_output/opengl/importer.c
 create mode 100644 modules/video_output/opengl/importer.h
 rename modules/video_output/opengl/{converter_android.c => importer_android.c} (54%)
 rename modules/video_output/opengl/{converter_sw.c => importer_sw.c} (59%)
 rename modules/video_output/opengl/{converter_vaapi.c => importer_vaapi.c} (77%)
 rename modules/video_output/opengl/{converter_vdpau.c => importer_vdpau.c} (82%)


More information about the vlc-devel mailing list