ilo: use native 3-component vertex formats on GEN7.5+
authorChia-I Wu <olvaffe@gmail.com>
Thu, 24 Jul 2014 01:39:37 +0000 (09:39 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Thu, 24 Jul 2014 01:54:20 +0000 (09:54 +0800)
GEN7.5 gains support for those formats natively.

src/gallium/drivers/ilo/ilo_format.h
src/gallium/drivers/ilo/ilo_resource.c

index 7d84c60a95343ff31cd8b05ef0f67820ddefe98a..dfa682d8efa7eba85cbbf553ebc08b65358a33d4 100644 (file)
@@ -93,6 +93,9 @@ ilo_translate_format(const struct ilo_dev_info *dev,
       }
       break;
    case PIPE_BIND_VERTEX_BUFFER:
+      if (dev->gen >= ILO_GEN(7.5))
+         return ilo_translate_color_format(dev, format);
+
       /*
        * Some 3-component formats are not supported as vertex element formats.
        * But since we move between vertices using vb->stride, we should be
index 359c635b3356177c582ab3d084481ce50de5bae8..04dcf8d7faf511e39912efbb947890d28b77b5b4 100644 (file)
@@ -1419,6 +1419,7 @@ buf_destroy(struct ilo_buffer *buf)
 static struct pipe_resource *
 buf_create(struct pipe_screen *screen, const struct pipe_resource *templ)
 {
+   const struct ilo_screen *is = ilo_screen(screen);
    struct ilo_buffer *buf;
 
    buf = CALLOC_STRUCT(ilo_buffer);
@@ -1442,7 +1443,8 @@ buf_create(struct pipe_screen *screen, const struct pipe_resource *templ)
    if (templ->bind & PIPE_BIND_SAMPLER_VIEW)
       buf->bo_size = align(buf->bo_size, 256) + 16;
 
-   if (templ->bind & PIPE_BIND_VERTEX_BUFFER) {
+   if ((templ->bind & PIPE_BIND_VERTEX_BUFFER) &&
+        is->dev.gen < ILO_GEN(7.5)) {
       /*
        * As noted in ilo_translate_format(), we treat some 3-component formats
        * as 4-component formats to work around hardware limitations.  Imagine