summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2017-10-11 14:28:24 +0200
committerThierry Reding <treding@nvidia.com>2019-12-04 12:00:09 +0100
commitd7291ac5047591b42b59de56aa22405087a2cc68 (patch)
tree7be51c02f22b5c04f86c587e525c2035153f50d2
parentd102b78756d828afb67656b295bba8ec48ad0998 (diff)
gallium: Add support for dumping framebuffer modifiers
Adds a simple helper that can be used to dump the name of a framebuffer modifier for debug purposes. Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--src/gallium/auxiliary/Makefile.sources2
-rw-r--r--src/gallium/auxiliary/meson.build2
-rw-r--r--src/gallium/auxiliary/util/u_modifier.c70
-rw-r--r--src/gallium/auxiliary/util/u_modifier.h66
4 files changed, 140 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/Makefile.sources b/src/gallium/auxiliary/Makefile.sources
index 46c443b5747..b12391bad44 100644
--- a/src/gallium/auxiliary/Makefile.sources
+++ b/src/gallium/auxiliary/Makefile.sources
@@ -264,6 +264,8 @@ C_SOURCES := \
util/u_linear.h \
util/u_log.c \
util/u_log.h \
+ util/u_modifier.c \
+ util/u_modifier.h \
util/u_network.c \
util/u_network.h \
util/u_pack_color.h \
diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build
index 65e4eda87ef..a0880270a6f 100644
--- a/src/gallium/auxiliary/meson.build
+++ b/src/gallium/auxiliary/meson.build
@@ -284,6 +284,8 @@ files_libgallium = files(
'util/u_linear.h',
'util/u_log.c',
'util/u_log.h',
+ 'util/u_modifier.c',
+ 'util/u_modifier.h',
'util/u_network.c',
'util/u_network.h',
'util/u_pack_color.h',
diff --git a/src/gallium/auxiliary/util/u_modifier.c b/src/gallium/auxiliary/util/u_modifier.c
new file mode 100644
index 00000000000..2fd7f96d298
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_modifier.c
@@ -0,0 +1,70 @@
+/**************************************************************************
+ *
+ * Copyright 2017 NVIDIA Corporation. All right reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#include <drm_fourcc.h>
+
+#include "util/u_modifier.h"
+
+#define UTIL_MODIFIER_DESCRIPTION(_modifier) \
+ { .modifier = DRM_FORMAT_MOD_ ## _modifier, .name = "DRM_FORMAT_MOD_" # _modifier }
+
+#define I915_MODIFIER_DESCRIPTION(_modifier) \
+ { .modifier = I915_FORMAT_MOD_ ## _modifier, .name = "I915_FORMAT_MOD_" # _modifier }
+
+const struct util_modifier_description util_modifier_description_table[] = {
+ UTIL_MODIFIER_DESCRIPTION(INVALID),
+ UTIL_MODIFIER_DESCRIPTION(LINEAR),
+ I915_MODIFIER_DESCRIPTION(X_TILED),
+ I915_MODIFIER_DESCRIPTION(Y_TILED),
+ I915_MODIFIER_DESCRIPTION(Yf_TILED),
+ I915_MODIFIER_DESCRIPTION(Y_TILED_CCS),
+ I915_MODIFIER_DESCRIPTION(Yf_TILED_CCS),
+ UTIL_MODIFIER_DESCRIPTION(SAMSUNG_64_32_TILE),
+ UTIL_MODIFIER_DESCRIPTION(VIVANTE_TILED),
+ UTIL_MODIFIER_DESCRIPTION(VIVANTE_SUPER_TILED),
+ UTIL_MODIFIER_DESCRIPTION(VIVANTE_SPLIT_TILED),
+ UTIL_MODIFIER_DESCRIPTION(VIVANTE_SPLIT_SUPER_TILED),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_TEGRA_TILED),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_16BX2_BLOCK_ONE_GOB),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_16BX2_BLOCK_TWO_GOB),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_16BX2_BLOCK_FOUR_GOB),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_16BX2_BLOCK_EIGHT_GOB),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_16BX2_BLOCK_SIXTEEN_GOB),
+ UTIL_MODIFIER_DESCRIPTION(NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB),
+ UTIL_MODIFIER_DESCRIPTION(BROADCOM_VC4_T_TILED),
+};
+
+const struct util_modifier_description *
+util_modifier_description(uint64_t modifier)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(util_modifier_description_table); i++)
+ if (util_modifier_description_table[i].modifier == modifier)
+ return &util_modifier_description_table[i];
+
+ return NULL;
+}
diff --git a/src/gallium/auxiliary/util/u_modifier.h b/src/gallium/auxiliary/util/u_modifier.h
new file mode 100644
index 00000000000..9882f61f07d
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_modifier.h
@@ -0,0 +1,66 @@
+/**************************************************************************
+ *
+ * Copyright 2017 NVIDIA Corporation. All right reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#ifndef U_MODIFIERS_H
+#define U_MODIFIERS_H
+
+#include "util/u_debug.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct util_modifier_description
+{
+ uint64_t modifier;
+ const char *name;
+};
+
+extern const struct util_modifier_description
+util_modifier_description_table[];
+
+const struct util_modifier_description *
+util_modifier_description(uint64_t modifier);
+
+static inline const char *
+util_modifier_name(uint64_t modifier)
+{
+ const struct util_modifier_description *desc;
+
+ desc = util_modifier_description(modifier);
+ assert(desc);
+
+ if (!desc)
+ return "DRM_FORMAT_MOD_???";
+
+ return desc->name;
+}
+
+#ifdef __cplusplus
+} // extern "C" {
+#endif
+
+#endif /* !U_MODIFIERS_H */