Mesa (main): r600: explicitly advertise index buffer format support

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jun 4 18:08:39 UTC 2021


Module: Mesa
Branch: main
Commit: aea35a5ac246f92026a6a05bb8862b9a5acd1e7b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=aea35a5ac246f92026a6a05bb8862b9a5acd1e7b

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Thu Jun  3 08:58:19 2021 -0400

r600: explicitly advertise index buffer format support

Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11132>

---

 src/gallium/drivers/r600/evergreen_state.c |  5 +++++
 src/gallium/drivers/r600/r600_formats.h    | 13 +++++++++++++
 src/gallium/drivers/r600/r600_state.c      |  5 +++++
 3 files changed, 23 insertions(+)

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))



More information about the mesa-commit mailing list