renderer: allow rendering to planar targets
This is a major overhaul of the target rendering code, and the renderer code in general (to keep things organized and understandable). The motivation comes from vf_libplacebo, which wants to let users render out subsampled YCbCr content directly. Unfortunately, we're still pretty much forced to upconvert to RGB internally, if only for the sake of things like tone mapping, linear scaling, and so forth. Plus, the entire pl_renderer architecture is very much designed around the idea that there's only one plane currently being rendered. While it's not entirely impossible to change this, it'd be _way_ outside the scope of this already massive change. Due to the major change of a core API, I decided to make the old `pl_tex *fbo` interface merely deprecated, rather than removing it entirely. Due to the increasing unification between `pl_image` and `pl_render_target`, I may choose to merge these into a single `pl_frame` at some point in the future, but that would also imply dropping this bit of backwards compatibility, so I'll postpone that refactor until after the next major release. Pick up a few bugs related to the dithering/compute indirection code while we're at it. Added a new test case to make sure it round trips, even for oddly-sized planes.
parent
89b0cefb
No related branches found
No related tags found
This commit is part of merge request !124. Comments created here will be created in the context of that merge request.
Showing
- meson.build 1 addition, 1 deletionmeson.build
- src/include/libplacebo/renderer.h 27 additions, 6 deletionssrc/include/libplacebo/renderer.h
- src/include/libplacebo/utils/libav_internal.h 38 additions, 0 deletionssrc/include/libplacebo/utils/libav_internal.h
- src/renderer.c 449 additions, 265 deletionssrc/renderer.c
- src/tests/gpu_tests.h 127 additions, 1 deletionsrc/tests/gpu_tests.h
Loading
Please register or sign in to comment