summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600
diff options
context:
space:
mode:
authorErik Faye-Lund <erik.faye-lund@collabora.com>2021-06-03 08:58:19 -0400
committerMarge Bot <eric+marge@anholt.net>2021-06-04 17:57:03 +0000
commitaea35a5ac246f92026a6a05bb8862b9a5acd1e7b (patch)
tree9bea7f6131f0552cf1e106f07b38b2f297b1af92 /src/gallium/drivers/r600
parentde9c66d74979f71844036db132d61d99504d4029 (diff)
r600: explicitly advertise index buffer format support
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11132>
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r--src/gallium/drivers/r600/evergreen_state.c5
-rw-r--r--src/gallium/drivers/r600/r600_formats.h13
-rw-r--r--src/gallium/drivers/r600/r600_state.c5
3 files changed, 23 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index f76b1e331a8..83a521102af 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -307,6 +307,11 @@ bool evergreen_is_format_supported(struct pipe_screen *screen,
retval |= PIPE_BIND_VERTEX_BUFFER;
}
+ if (usage & PIPE_BIND_INDEX_BUFFER &&
+ r600_is_index_format_supported(format)) {
+ retval |= PIPE_BIND_INDEX_BUFFER;
+ }
+
if ((usage & PIPE_BIND_LINEAR) &&
!util_format_is_compressed(format) &&
!(usage & PIPE_BIND_DEPTH_STENCIL))
diff --git a/src/gallium/drivers/r600/r600_formats.h b/src/gallium/drivers/r600/r600_formats.h
index 6c94a24700b..3ff12ddf8c7 100644
--- a/src/gallium/drivers/r600/r600_formats.h
+++ b/src/gallium/drivers/r600/r600_formats.h
@@ -122,4 +122,17 @@ static inline bool r600_is_vertex_format_supported(enum pipe_format format)
return true;
}
+static inline bool r600_is_index_format_supported(enum pipe_format format)
+{
+ switch (format) {
+ case PIPE_FORMAT_R8_UINT:
+ case PIPE_FORMAT_R16_UINT:
+ case PIPE_FORMAT_R32_UINT:
+ return true;
+
+ default:
+ return false;
+ }
+}
+
#endif
diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c
index 6eb2bd42b1c..3448eb482ba 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -236,6 +236,11 @@ bool r600_is_format_supported(struct pipe_screen *screen,
retval |= PIPE_BIND_VERTEX_BUFFER;
}
+ if (usage & PIPE_BIND_INDEX_BUFFER &&
+ r600_is_index_format_supported(format)) {
+ retval |= PIPE_BIND_INDEX_BUFFER;
+ }
+
if ((usage & PIPE_BIND_LINEAR) &&
!util_format_is_compressed(format) &&
!(usage & PIPE_BIND_DEPTH_STENCIL))