diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 85b417dc90d..be71c47fb38 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -836,12 +836,21 @@ llvmpipe_is_format_supported(struct pipe_screen *_screen, format != PIPE_FORMAT_ETC1_RGB8) return false; + /* planar not supported natively */ if ((format_desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED || format_desc->layout == UTIL_FORMAT_LAYOUT_PLANAR2 || format_desc->layout == UTIL_FORMAT_LAYOUT_PLANAR3) && target == PIPE_BUFFER) return false; + if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_YUV) { + if (format == PIPE_FORMAT_UYVY || + format == PIPE_FORMAT_YUYV || + format == PIPE_FORMAT_NV12) + return true; + return false; + } + /* * Everything can be supported by u_format * (those without fetch_rgba_float might be not but shouldn't hit that)