Hi, This patch series implements high-quality scaling for all generations back to Ironlake. HQ scaling works both through vaPutSurface() flags or through filter flags in a VPP pipeline.
The convolution kernel used for VA_FILTER_SCALING_HQ is based on Lanczos: 3 lobes in either side for luma samples, and 2 lobes in either side for chroma samples. The 8x8 sharp filter is enabled in this case. Additional optimizations were made to avoid recalculation of AVS coefficients for each frame if scaling params have not changed. Notes: this series was only tested on Ivybridge as a quick but confident enough experiment. More testing is needed, especially on other platforms. Fully adaptive mode is not programmed yet. Patched sources available for convenience here: <https://github.com/gbeauchesne/libva-intel-driver/tree/18.vpp.avs> Regards, Gwenole Beauchesne (8): vpp: fix adaptive filter for all channels flag (< Haswell). vpp: fix AVS coefficients for Broadwell. vpp: factor out calculation of AVS coefficients. vpp: add support for high-quality scaling. vpp: validate AVS filter coefficients for debugging purposes. vpp: cache calculation of AVS coefficients. vpp: drop internal postprocessing (PP_xxx) flags. vpp: enable advanced video scaling in VPP pipelines too. src/Makefile.am | 2 + src/gen75_vpp_vebox.c | 11 +- src/gen8_post_processing.c | 141 ++++++++++++------- src/gen8_render.c | 6 +- src/i965_output_dri.c | 18 +-- src/i965_post_processing.c | 342 ++++++++++++++++++++++++++++----------------- src/i965_post_processing.h | 21 ++- src/i965_render.c | 12 +- src/i965_structs.h | 82 +++++++++-- src/i965_vpp_avs.c | 243 ++++++++++++++++++++++++++++++++ src/i965_vpp_avs.h | 109 +++++++++++++++ 11 files changed, 767 insertions(+), 220 deletions(-) create mode 100644 src/i965_vpp_avs.c create mode 100644 src/i965_vpp_avs.h -- 1.9.1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
