[Mesa-dev] [PATCH] st/va: also honors interlaced preference when providing a video format
Christian König
christian.koenig at amd.com
Thu Sep 8 07:50:49 UTC 2016
Am 08.09.2016 um 09:34 schrieb Julien Isorce:
> This fixes a crash when using the prefered video format with vaapisink
> on Nvidia hardwares.
> Also caught by the following assert:
> nouveau_vp3_video.c:91: Assertion `templat->interlaced' failed.
>
> TEST= gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12 ! vaapisink
>
> Signed-off-by: Julien Isorce <j.isorce at samsung.com>
> Tested-by: Víctor Manuel Jáquez Leal <vjaquez at igalia.com>
Reviewed-by: Christian König <christian.koenig at amd.com>.
But somebody should double check if that doesn't break transcoding for
AMD GPUs.
We had some problems with that in the past.
Regards,
Christian.
> ---
> src/gallium/state_trackers/va/surface.c | 36 +++++++++++++++++----------------
> 1 file changed, 19 insertions(+), 17 deletions(-)
>
> diff --git a/src/gallium/state_trackers/va/surface.c b/src/gallium/state_trackers/va/surface.c
> index 3ee1cdd..00df69d 100644
> --- a/src/gallium/state_trackers/va/surface.c
> +++ b/src/gallium/state_trackers/va/surface.c
> @@ -632,24 +632,26 @@ vlVaCreateSurfaces2(VADriverContextP ctx, unsigned int format,
>
> memset(&templat, 0, sizeof(templat));
>
> + templat.buffer_format = pscreen->get_video_param(
> + pscreen,
> + PIPE_VIDEO_PROFILE_UNKNOWN,
> + PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
> + PIPE_VIDEO_CAP_PREFERED_FORMAT
> + );
> + templat.interlaced = pscreen->get_video_param(
> + pscreen,
> + PIPE_VIDEO_PROFILE_UNKNOWN,
> + PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
> + PIPE_VIDEO_CAP_PREFERS_INTERLACED
> + );
> +
> if (expected_fourcc) {
> - templat.buffer_format = VaFourccToPipeFormat(expected_fourcc);
> - templat.interlaced = 0;
> - } else {
> - templat.buffer_format = pscreen->get_video_param
> - (
> - pscreen,
> - PIPE_VIDEO_PROFILE_UNKNOWN,
> - PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
> - PIPE_VIDEO_CAP_PREFERED_FORMAT
> - );
> - templat.interlaced = pscreen->get_video_param
> - (
> - pscreen,
> - PIPE_VIDEO_PROFILE_UNKNOWN,
> - PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
> - PIPE_VIDEO_CAP_PREFERS_INTERLACED
> - );
> + enum pipe_format expected_format = VaFourccToPipeFormat(expected_fourcc);
> +
> + if (expected_format != templat.buffer_format || memory_attibute)
> + templat.interlaced = 0;
> +
> + templat.buffer_format = expected_format;
> }
>
> templat.chroma_format = ChromaToPipe(format);
More information about the mesa-dev
mailing list