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 <erik.faye-lund@collabora.com>
This commit is contained in:
Gurchetan Singh
2019-08-06 19:15:58 -07:00
parent 3da029ac1a
commit 42759dc986
2 changed files with 7 additions and 0 deletions
+1
View File
@@ -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 {
+6
View File
@@ -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;