summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-03-11 10:08:40 +1000
committerDave Airlie <airlied@redhat.com>2015-06-16 12:34:25 +1000
commitd9e2f487b79913365ec4f88eca82b03dfeb8614a (patch)
tree0fb12a8bf7e692a32d55da6a2c8e3caec4080502
parent06127da5cb865034c11b513082f268220eec1b4a (diff)
virgl: add support for ARB_vertex_type_10f_11f_11f_rev
-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) {