diff options
Diffstat (limited to 'src/gallium/drivers/virgl/virgl_screen.c')
-rw-r--r-- | src/gallium/drivers/virgl/virgl_screen.c | 10 |
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) { |