Hi Leo, Christian and Julien, I tested the patch with Vaapi Encoding and Transcoding, it seems working fine. We are using "VAAPI_DISABLE_INTERLACE" env, so interlaced is always disabled.
Regards, Boyuan -----Original Message----- From: Liu, Leo Sent: September-08-16 9:50 AM To: Koenig, Christian; Julien Isorce; mesa-dev@lists.freedesktop.org Cc: mesa-sta...@lists.freedesktop.org; Zhang, Boyuan; Julien Isorce Subject: Re: [PATCH] st/va: also honors interlaced preference when providing a video format On 09/08/2016 03:50 AM, Christian König wrote: > 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.iso...@samsung.com> >> Tested-by: Víctor Manuel Jáquez Leal <vjaq...@igalia.com> > > Reviewed-by: Christian König <christian.koe...@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. VA-API encode use "VAAPI_DISABLE_INTERLACE" env for making sure not interlaced, but better to double check. Boyuan, can you test on this patch? Regards, Leo > > 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); > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev