From: Gurchetan Singh Date: Wed, 7 Aug 2019 02:15:58 +0000 (-0700) Subject: virgl: check scanout mask X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=42759dc986bfabd60ab3c179e9858fac1b0f369c;p=mesa.git virgl: check scanout mask Otherwise, virgl will report renderable or texturable formats as also scan-out formats. v2: drop host feature check (@kusma) Reviewed-by: Erik Faye-Lund --- diff --git a/src/gallium/drivers/virgl/virgl_hw.h b/src/gallium/drivers/virgl/virgl_hw.h index 94f5987fe32..e23a6194a9d 100644 --- a/src/gallium/drivers/virgl/virgl_hw.h +++ b/src/gallium/drivers/virgl/virgl_hw.h @@ -399,6 +399,7 @@ struct virgl_caps_v2 { uint32_t max_combined_atomic_counter_buffers; uint32_t host_feature_check_version; struct virgl_supported_format_mask supported_readback_formats; + struct virgl_supported_format_mask scanout; }; union virgl_caps { diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c index 3bd6d48091c..f4b7a66003b 100644 --- a/src/gallium/drivers/virgl/virgl_screen.c +++ b/src/gallium/drivers/virgl/virgl_screen.c @@ -738,6 +738,11 @@ virgl_is_format_supported( struct pipe_screen *screen, return false; } + if (bind & PIPE_BIND_SCANOUT) { + if (!virgl_format_check_bitmask(format, caps->v2.scanout.bitmask, false)) + return false; + } + /* * All other operations (sampling, transfer, etc). */ @@ -905,6 +910,7 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c vws->get_caps(vws, &screen->caps); fixup_formats(&screen->caps.caps, &screen->caps.caps.v2.supported_readback_formats); + fixup_formats(&screen->caps.caps, &screen->caps.caps.v2.scanout); screen->refcnt = 1;