summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2014-07-24 09:39:37 +0800
committerChia-I Wu <[email protected]>2014-07-24 09:54:20 +0800
commitc1a1a627c47f7d6eca1c36afc81ca4584e965963 (patch)
tree586781edea94ccf8c88f2dc1c3c292991def59cc
parent2126541b0b6c15aa82c2ffb78ecc09d33a07ae53 (diff)
ilo: use native 3-component vertex formats on GEN7.5+
GEN7.5 gains support for those formats natively.
-rw-r--r--src/gallium/drivers/ilo/ilo_format.h3
-rw-r--r--src/gallium/drivers/ilo/ilo_resource.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/ilo/ilo_format.h b/src/gallium/drivers/ilo/ilo_format.h
index 7d84c60a953..dfa682d8efa 100644
--- a/src/gallium/drivers/ilo/ilo_format.h
+++ b/src/gallium/drivers/ilo/ilo_format.h
@@ -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
diff --git a/src/gallium/drivers/ilo/ilo_resource.c b/src/gallium/drivers/ilo/ilo_resource.c
index 359c635b335..04dcf8d7faf 100644
--- a/src/gallium/drivers/ilo/ilo_resource.c
+++ b/src/gallium/drivers/ilo/ilo_resource.c
@@ -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