Mesa (master): radeonsi: Define gfx10_format in the common header.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 3 00:31:30 UTC 2020


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

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Tue Jun  2 00:55:22 2020 +0200

radeonsi: Define gfx10_format in the common header.

So we don't have to have multiple definitions of the struct when
sharing with radv.

While at it put the table properly in a C file so we don't have to
deal with multiple definitions, and the struct definition isn't
in generated source.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5291>

---

 src/amd/Android.common.mk               |  2 +-
 src/amd/Makefile.sources                |  2 +-
 src/amd/common/gfx10_format_table.h     | 44 +++++++++++++++++++++++++++++++++
 src/amd/common/gfx10_format_table.py    |  5 +++-
 src/amd/common/meson.build              |  8 +++---
 src/gallium/drivers/radeonsi/si_state.c | 11 +--------
 6 files changed, 55 insertions(+), 17 deletions(-)

diff --git a/src/amd/Android.common.mk b/src/amd/Android.common.mk
index 7abbd378b38..982d8b4f6fd 100644
--- a/src/amd/Android.common.mk
+++ b/src/amd/Android.common.mk
@@ -78,7 +78,7 @@ GEN10_FORMAT_TABLE_DEP := \
 
 GEN10_FORMAT_TABLE := $(LOCAL_PATH)/common/gfx10_format_table.py
 
-$(intermediates)/common/gfx10_format_table.h: $(GEN10_FORMAT_TABLE) $(GEN10_FORMAT_TABLE_INPUTS) $(GEN10_FORMAT_TABLE_DEP)
+$(intermediates)/common/gfx10_format_table.c: $(GEN10_FORMAT_TABLE) $(GEN10_FORMAT_TABLE_INPUTS) $(GEN10_FORMAT_TABLE_DEP)
 	@mkdir -p $(dir $@)
 	@echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
 	$(hide) $(MESA_PYTHON2) $(GEN10_FORMAT_TABLE) $(GEN10_FORMAT_TABLE_INPUTS) > $@ || ($(RM) $@; false)
diff --git a/src/amd/Makefile.sources b/src/amd/Makefile.sources
index ce914e0aa85..78e93e5f1b7 100644
--- a/src/amd/Makefile.sources
+++ b/src/amd/Makefile.sources
@@ -69,7 +69,7 @@ AMD_DEBUG_FILES = \
 
 AMD_GENERATED_FILES = \
 	common/amdgfxregs.h \
-	common/gfx10_format_table.h \
+	common/gfx10_format_table.c \
 	common/sid_tables.h
 
 ACO_FILES = \
diff --git a/src/amd/common/gfx10_format_table.h b/src/amd/common/gfx10_format_table.h
new file mode 100644
index 00000000000..2692c817f08
--- /dev/null
+++ b/src/amd/common/gfx10_format_table.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright © 2019 Advanced Micro Devices, Inc.
+ * All Rights 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 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 THE COPYRIGHT HOLDERS, AUTHORS
+ * 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ */
+
+#ifndef GFX10_FORMAT_TABLE_H
+#define GFX10_FORMAT_TABLE_H
+
+#include <stdbool.h>
+#include "pipe/p_format.h"
+
+struct gfx10_format {
+    unsigned img_format:9;
+
+    /* Various formats are only supported with workarounds for vertex fetch,
+     * and some 32_32_32 formats are supported natively, but only for buffers
+     * (possibly with some image support, actually, but no filtering). */
+    bool buffers_only:1;
+};
+
+extern const struct gfx10_format gfx10_format_table[PIPE_FORMAT_COUNT];
+
+#endif /* GFX10_FORMAT_TABLE_H */
diff --git a/src/amd/common/gfx10_format_table.py b/src/amd/common/gfx10_format_table.py
index 43a878bd856..a81e9600141 100644
--- a/src/amd/common/gfx10_format_table.py
+++ b/src/amd/common/gfx10_format_table.py
@@ -105,11 +105,14 @@ HARDCODED = {
 header_template = mako.template.Template("""\
 // DO NOT EDIT -- AUTOMATICALLY GENERATED
 
+#include "gfx10_format_table.h"
+#include "amdgfxregs.h"
+
 #define FMT(_img_format, ...) \
    { .img_format = V_008F0C_IMG_FORMAT_##_img_format, \
      ##__VA_ARGS__ }
 
-static const struct gfx10_format gfx10_format_table[PIPE_FORMAT_COUNT] = {
+const struct gfx10_format gfx10_format_table[PIPE_FORMAT_COUNT] = {
 % for pipe_format, args in formats:
  % if args is not None:
   [${pipe_format}] = FMT(${args}),
diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build
index a1ce30f39f5..0f452bf237f 100644
--- a/src/amd/common/meson.build
+++ b/src/amd/common/meson.build
@@ -36,13 +36,13 @@ amdgfxregs_h = custom_target(
   capture : true,
 )
 
-gfx10_format_table_h = custom_target(
-  'gfx10_format_table.h',
+gfx10_format_table_c = custom_target(
+  'gfx10_format_table.c',
   input : files(
     'gfx10_format_table.py',
     '../../util/format/u_format.csv', '../registers/gfx10-rsrc.json'
   ),
-  output : 'gfx10_format_table.h',
+  output : 'gfx10_format_table.c',
   command : [prog_python, '@INPUT@'],
   capture : true,
   depend_files : ['../registers/regdb.py']
@@ -68,7 +68,7 @@ amd_common_files = files(
 
 libamd_common = static_library(
   'amd_common',
-  [amd_common_files, sid_tables_h, amdgfxregs_h, gfx10_format_table_h],
+  [amd_common_files, sid_tables_h, amdgfxregs_h, gfx10_format_table_c],
   include_directories : [
     inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler, inc_mapi, inc_amd,
   ],
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 470542354eb..df3b53aaec2 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -33,16 +33,7 @@
 #include "util/u_resource.h"
 #include "util/u_upload_mgr.h"
 
-struct gfx10_format {
-   unsigned img_format : 9;
-
-   /* Various formats are only supported with workarounds for vertex fetch,
-    * and some 32_32_32 formats are supported natively, but only for buffers
-    * (possibly with some image support, actually, but no filtering). */
-   bool buffers_only : 1;
-};
-
-#include "amd/common/gfx10_format_table.h"
+#include "gfx10_format_table.h"
 
 static unsigned si_map_swizzle(unsigned swizzle)
 {



More information about the mesa-commit mailing list