[vlc-devel] [PATCH v2 00/21] Refactor OpenGL converters
Romain Vimont
rom1v at videolabs.io
Tue Jan 7 12:41:36 CET 2020
The purpose of this refactor is to minimize the scope of OpenGL converter
modules, to only initialize what is hardware-specific: the _interop_ part.
An _interop_ 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...).
Changes since patchset v1:
- rename "importer" to "interop"
- implement interop for cvpx
- fix matrix multiplication order (OrientationMatrix * TransformMatrix)
- remove vlc_object_t from opengl_tex_converter_t
- rename "glconv" to "glinterop"
- rename module libs from libglconv_* to libglinterop_*
Romain Vimont (21):
opengl: use common fragment shader for Android
opengl: extract interop from converter
opengl: expose software chroma in interop
opengl: remove tex converter usages
opengl: split yuv_base_init()
opengl: use interop for rgb_base_init()
opengl: split xyz12_init()
opengl: extract interop initialization
opengl: init swizzle separately
opengl: expose opengl_interop_init()
opengl: initialize fshader from vout_helper
opengl: refactor generic_init()
opengl: make interop a vlc_object_t
opengl: pass interop to "glconv" modules
opengl: remove vlc_object_t tex converter
opengl: remove pf_fragment_shader_init()
opengl: rename converter_*.c to interop_*.c
opengl: rename "glconv" capability to "glinterop"
opengl: rename libglconv_* to libglinterop_*
opengl: move compatibility defines to gl_common.h
opengl: move interop-specific code to interop.c
modules/hw/nvdec/nvdec_gl.c | 2 +-
modules/video_output/Makefile.am | 50 +--
modules/video_output/opengl/converter.h | 117 +-----
.../video_output/opengl/fragment_shaders.c | 357 +++++-------------
modules/video_output/opengl/gl_common.h | 27 ++
modules/video_output/opengl/internal.h | 9 +-
modules/video_output/opengl/interop.c | 241 ++++++++++++
modules/video_output/opengl/interop.h | 170 +++++++++
...{converter_android.c => interop_android.c} | 122 +++---
.../{converter_cvpx.c => interop_cvpx.c} | 158 ++++----
.../opengl/{converter_sw.c => interop_sw.c} | 195 +++++-----
.../{converter_vaapi.c => interop_vaapi.c} | 123 +++---
.../{converter_vdpau.c => interop_vdpau.c} | 60 +--
modules/video_output/opengl/vout_helper.c | 240 +++++++-----
modules/video_output/opengl/vout_helper.h | 8 +-
modules/video_output/win32/direct3d9.c | 2 +-
16 files changed, 1047 insertions(+), 834 deletions(-)
create mode 100644 modules/video_output/opengl/interop.c
create mode 100644 modules/video_output/opengl/interop.h
rename modules/video_output/opengl/{converter_android.c => interop_android.c} (53%)
rename modules/video_output/opengl/{converter_cvpx.c => interop_cvpx.c} (56%)
rename modules/video_output/opengl/{converter_sw.c => interop_sw.c} (56%)
rename modules/video_output/opengl/{converter_vaapi.c => interop_vaapi.c} (75%)
rename modules/video_output/opengl/{converter_vdpau.c => interop_vdpau.c} (80%)
--
2.25.0.rc0
More information about the vlc-devel
mailing list