From: Julien Isorce Date: Wed, 8 May 2019 19:40:50 +0000 (-0700) Subject: st/va: set the visible image dimensions in vlVaDeriveImage X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=98b852cd07a80fa42336031f089bdac6e7c617d3;p=mesa.git st/va: set the visible image dimensions in vlVaDeriveImage This fixes video being rendered incorrectly. User wants height of 360 but internally pipe_video_buffer 's height is 368 in the test below. Test: GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! video/x-raw, width=868, height=360, format=NV12 ! vaapipostproc ! glimagesink Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110443 Signed-off-by: Julien Isorce Reviewed-by: Marek Olšák Reviewed-by: Leo Liu --- diff --git a/src/gallium/state_trackers/va/image.c b/src/gallium/state_trackers/va/image.c index d4b9ce5596d..9e3a49f1996 100644 --- a/src/gallium/state_trackers/va/image.c +++ b/src/gallium/state_trackers/va/image.c @@ -236,10 +236,12 @@ vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image) img->format.fourcc = PipeFormatToVaFourcc(surf->buffer->buffer_format); img->buf = VA_INVALID_ID; - img->width = surf->buffer->width; - img->height = surf->buffer->height; + /* Use the visible dimensions. */ + img->width = surf->templat.width; + img->height = surf->templat.height; img->num_palette_entries = 0; img->entry_bytes = 0; + /* Image data size is computed using internal dimensions. */ w = align(surf->buffer->width, 2); h = align(surf->buffer->height, 2);