[Mesa-dev] [PATCH v3] st/vdpau: change the order in which filters are applied(v3)
Christian König
deathsimple at vodafone.de
Tue Aug 16 08:08:20 UTC 2016
Am 12.08.2016 um 16:02 schrieb Nayan Deshmukh:
> Apply the median and matrix filter before the compostioning
> we apply the deinterlacing first to avoid the extra overhead
> in processing the past and the future surfaces in deinterlacing.
>
> v2: apply the filters on all the surfaces (Christian)
> v3: use get_sampler_view_planes() instead of
> get_sampler_view_components() and iterate over
> VL_MAX_SURFACES (Christian)
>
> Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com>
Reviewed and pushed, thanks for the help.
Christian.
> ---
> src/gallium/state_trackers/vdpau/mixer.c | 28 ++++++++++++++++++----------
> 1 file changed, 18 insertions(+), 10 deletions(-)
>
> diff --git a/src/gallium/state_trackers/vdpau/mixer.c b/src/gallium/state_trackers/vdpau/mixer.c
> index cb0ef03..56b667d 100644
> --- a/src/gallium/state_trackers/vdpau/mixer.c
> +++ b/src/gallium/state_trackers/vdpau/mixer.c
> @@ -240,8 +240,8 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
> struct u_rect rect, clip, *prect, dirty_area;
> unsigned i, layer = 0;
> struct pipe_video_buffer *video_buffer;
> - struct pipe_sampler_view *sampler_view;
> - struct pipe_surface *surface;
> + struct pipe_sampler_view *sampler_view, **sampler_views;
> + struct pipe_surface *surface, **surfaces;
>
> vlVdpVideoMixer *vmixer;
> vlVdpSurface *surf;
> @@ -325,6 +325,22 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
> }
> }
>
> + surfaces = video_buffer->get_surfaces(video_buffer);
> + sampler_views = video_buffer->get_sampler_view_planes(video_buffer);
> +
> + for(i = 0; i < VL_MAX_SURFACES; ++i) {
> + if(sampler_views[i] != NULL && surfaces[i] != NULL) {
> + if (vmixer->noise_reduction.filter)
> + vl_median_filter_render(vmixer->noise_reduction.filter,
> + sampler_views[i], surfaces[i]);
> +
> + if (vmixer->sharpness.filter)
> + vl_matrix_filter_render(vmixer->sharpness.filter,
> + sampler_views[i], surfaces[i]);
> +
> + }
> + }
> +
> prect = RectToPipe(video_source_rect, &rect);
> if (!prect) {
> rect.x0 = 0;
> @@ -394,14 +410,6 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
> else {
> vl_compositor_render(&vmixer->cstate, compositor, surface, &dirty_area, true);
>
> - if (vmixer->noise_reduction.filter)
> - vl_median_filter_render(vmixer->noise_reduction.filter,
> - sampler_view, surface);
> -
> - if (vmixer->sharpness.filter)
> - vl_matrix_filter_render(vmixer->sharpness.filter,
> - sampler_view, surface);
> -
> if (vmixer->bicubic.filter)
> vl_bicubic_filter_render(vmixer->bicubic.filter,
> sampler_view, dst->surface,
More information about the mesa-dev
mailing list