virgl: factor out format host bits check

This will make it a single location when we want to replace a format.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
Gert Wollny
2019-04-12 09:52:31 +02:00
parent 30eb1fdc51
commit 28dc096e15
+17 -16
View File
@@ -593,6 +593,18 @@ virgl_is_vertex_format_supported(struct pipe_screen *screen,
return TRUE;
}
static boolean
virgl_format_check_bitmask(enum pipe_format format,
uint32_t bitmask[16])
{
int big = format / 32;
int small = format % 32;
if ((bitmask[big] & (1 << small)))
return TRUE;
return FALSE;
}
/**
* Query format support for creating a texture, drawing surface, etc.
* \param format the format to test
@@ -680,12 +692,9 @@ virgl_is_format_supported( struct pipe_screen *screen,
format_desc->block.height != 1)
return FALSE;
{
int big = format / 32;
int small = format % 32;
if (!(vscreen->caps.caps.v1.render.bitmask[big] & (1 << small)))
return FALSE;
}
if (!virgl_format_check_bitmask(format,
vscreen->caps.caps.v1.render.bitmask))
return FALSE;
}
if (bind & PIPE_BIND_DEPTH_STENCIL) {
@@ -728,16 +737,8 @@ virgl_is_format_supported( struct pipe_screen *screen,
return FALSE;
out_lookup:
{
int big = format / 32;
int small = format % 32;
if (!(vscreen->caps.caps.v1.sampler.bitmask[big] & (1 << small)))
return FALSE;
}
/*
* Everything else should be supported by u_format.
*/
return TRUE;
return virgl_format_check_bitmask(format,
vscreen->caps.caps.v1.sampler.bitmask);
}
static void virgl_flush_frontbuffer(struct pipe_screen *screen,