From: Bas Nieuwenhuizen Date: Mon, 1 Jun 2020 22:55:22 +0000 (+0200) Subject: radeonsi: Define gfx10_format in the common header. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b351a507638ff213add8c3c79f6a7f848d09f8e9;p=mesa.git 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 Reviewed-by: Samuel Pitoiset Part-of: --- 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 +#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) {