etnaviv: disable integer vertex formats on pre-HALTI2 hardware
authorJonathan Marek <jonathan@marek.ca>
Sun, 8 Dec 2019 16:54:31 +0000 (11:54 -0500)
committerJonathan Marek <jonathan@marek.ca>
Fri, 13 Dec 2019 14:10:28 +0000 (09:10 -0500)
Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
src/gallium/drivers/etnaviv/etnaviv_screen.c

index 823042a1f25d184d452488ced13a6550a0f823b3..cec94cc333d1c191c44c114f4ba484f7b56a953a 100644 (file)
@@ -434,6 +434,18 @@ gpu_supports_render_format(struct etna_screen *screen, enum pipe_format format,
    return true;
 }
 
+static bool
+gpu_supports_vertex_format(struct etna_screen *screen, enum pipe_format format)
+{
+   if (translate_vertex_format_type(format) == ETNA_NO_MATCH)
+      return false;
+
+   if (util_format_is_pure_integer(format))
+      return VIV_FEATURE(screen, chipMinorFeatures4, HALTI2);
+
+   return true;
+}
+
 static bool
 etna_screen_is_format_supported(struct pipe_screen *pscreen,
                                 enum pipe_format format,
@@ -472,7 +484,7 @@ etna_screen_is_format_supported(struct pipe_screen *pscreen,
    }
 
    if (usage & PIPE_BIND_VERTEX_BUFFER) {
-      if (translate_vertex_format_type(format) != ETNA_NO_MATCH)
+      if (gpu_supports_vertex_format(screen, format))
          allowed |= PIPE_BIND_VERTEX_BUFFER;
    }