frontends/va: fix crash during grayscale rendering
authorSathishkumar S <sathishkumar.sundararaju@amd.com>
Fri, 2 Dec 2022 14:16:48 +0000 (19:46 +0530)
committerMarge Bot <emma+marge@anholt.net>
Tue, 13 Dec 2022 15:37:18 +0000 (15:37 +0000)
crash is observed as format is assumed to be yuv and buffer plane
order is undefined for monochrome. luma only format is not to be
considered yuv format. It has to be rendered with rgb=rrr.

Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com>
Reviewed-by: Thong Thai <thong.thai@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20165>

src/gallium/frontends/va/surface.c

index a4adf13246f1b0deb8f9963b89c48b6308fbe17e..e7aec0b0baa4fc0b54fd66bf0a917735ee878fa3 100644 (file)
@@ -370,7 +370,8 @@ vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface_id, void* draw, short s
    vl_compositor_clear_layers(&drv->cstate);
 
    if (format == PIPE_FORMAT_B8G8R8A8_UNORM || format == PIPE_FORMAT_B8G8R8X8_UNORM ||
-       format == PIPE_FORMAT_R8G8B8A8_UNORM || format == PIPE_FORMAT_R8G8B8X8_UNORM) {
+       format == PIPE_FORMAT_R8G8B8A8_UNORM || format == PIPE_FORMAT_R8G8B8X8_UNORM ||
+       format == PIPE_FORMAT_L8_UNORM || format == PIPE_FORMAT_Y8_400_UNORM) {
       struct pipe_sampler_view **views;
 
       views = surf->buffer->get_sampler_view_planes(surf->buffer);