summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/virgl/virgl_screen.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index 394d026143a..25eec05989a 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -290,6 +290,7 @@ static boolean
virgl_is_vertex_format_supported(struct pipe_screen *screen,
enum pipe_format format)
{
+ struct virgl_screen *vscreen = virgl_screen(screen);
const struct util_format_description *format_desc;
int i;
@@ -297,6 +298,15 @@ virgl_is_vertex_format_supported(struct pipe_screen *screen,
if (!format_desc)
return FALSE;
+ if (format == PIPE_FORMAT_R11G11B10_FLOAT) {
+ int vformat = VIRGL_FORMAT_R11G11B10_FLOAT;
+ int big = vformat / 32;
+ int small = vformat % 32;
+ if (!(vscreen->caps.caps.v1.vertexbuffer.bitmask[big] & (1 << small)))
+ return FALSE;
+ return TRUE;
+ }
+
/* Find the first non-VOID channel. */
for (i = 0; i < 4; i++) {
if (format_desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) {