From 2d1fac119fa0d1fccae086605b43b426312b257a Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Tue, 15 Aug 2017 16:48:38 -0700 Subject: [PATCH] vulkan/registry: Feed vk_android_native_buffer.xml to gen_enum_to_str.py MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Tested on Android and Fedora. Reviewed-by: Tapani Pälli --- src/vulkan/Android.mk | 9 +++++++-- src/vulkan/Makefile.am | 9 +++++++-- src/vulkan/util/gen_enum_to_str.py | 20 +++++++++++++++++++- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/vulkan/Android.mk b/src/vulkan/Android.mk index e19a33dd4f9..47c5c510819 100644 --- a/src/vulkan/Android.mk +++ b/src/vulkan/Android.mk @@ -44,11 +44,16 @@ LOCAL_GENERATED_SOURCES := $(addprefix $(intermediates)/, \ LOCAL_SRC_FILES := $(VULKAN_UTIL_FILES) vulkan_api_xml = $(MESA_TOP)/src/vulkan/registry/vk.xml +vk_android_native_buffer_xml = $(MESA_TOP)/src/vulkan/registry/vk_android_native_buffer.xml -$(LOCAL_GENERATED_SOURCES): $(MESA_TOP)/src/vulkan/util/gen_enum_to_str.py $(vulkan_api_xml) +$(LOCAL_GENERATED_SOURCES): $(MESA_TOP)/src/vulkan/util/gen_enum_to_str.py \ + $(vulkan_api_xml) $(vk_android_native_buffer_xml) @echo "target Generated: $(PRIVATE_MODULE) <= $(notdir $(@))" @mkdir -p $(dir $@) - $(hide) $(MESA_PYTHON2) $(MESA_TOP)/src/vulkan/util/gen_enum_to_str.py --xml $(vulkan_api_xml) --outdir $(dir $@) + $(hide) $(MESA_PYTHON2) $(MESA_TOP)/src/vulkan/util/gen_enum_to_str.py \ + --xml $(vulkan_api_xml) \ + --xml $(vk_android_native_buffer_xml) \ + --outdir $(dir $@) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(intermediates) diff --git a/src/vulkan/Makefile.am b/src/vulkan/Makefile.am index c897a07d6a8..c92748cb8a1 100644 --- a/src/vulkan/Makefile.am +++ b/src/vulkan/Makefile.am @@ -4,6 +4,7 @@ noinst_LTLIBRARIES = libvulkan_wsi.la libvulkan_util.la vulkan_includedir = $(includedir)/vulkan vulkan_api_xml = $(top_srcdir)/src/vulkan/registry/vk.xml +vk_android_native_buffer_xml = $(top_srcdir)/src/vulkan/registry/vk_android_native_buffer.xml MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D) PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS) @@ -18,9 +19,13 @@ VULKAN_UTIL_SOURCES = \ BUILT_SOURCES = \ $(VULKAN_UTIL_GENERATED_FILES) -util/vk_enum_to_str.c util/vk_enum_to_str.h: util/gen_enum_to_str.py $(vulkan_api_xml) +util/vk_enum_to_str.c util/vk_enum_to_str.h: util/gen_enum_to_str.py \ + $(vulkan_api_xml) $(vk_android_native_buffer_xml) $(MKDIR_GEN) - $(PYTHON_GEN) $(srcdir)/util/gen_enum_to_str.py --xml $(vulkan_api_xml) --outdir $(top_builddir)/src/vulkan/util + $(PYTHON_GEN) $(srcdir)/util/gen_enum_to_str.py \ + --xml $(vulkan_api_xml) \ + --xml $(vk_android_native_buffer_xml) \ + --outdir $(top_builddir)/src/vulkan/util libvulkan_util_la_SOURCES = $(VULKAN_UTIL_SOURCES) diff --git a/src/vulkan/util/gen_enum_to_str.py b/src/vulkan/util/gen_enum_to_str.py index bc72c189943..df326d0a998 100644 --- a/src/vulkan/util/gen_enum_to_str.py +++ b/src/vulkan/util/gen_enum_to_str.py @@ -58,6 +58,7 @@ C_TEMPLATE = Template(textwrap.dedent(u"""\ */ #include + #include #include "util/macros.h" #include "vk_enum_to_str.h" @@ -68,8 +69,17 @@ C_TEMPLATE = Template(textwrap.dedent(u"""\ { switch(input) { % for v in enum.values: + % if v in FOREIGN_ENUM_VALUES: + + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wswitch" + % endif case ${v}: return "${v}"; + % if v in FOREIGN_ENUM_VALUES: + #pragma GCC diagnostic pop + + % endif % endfor default: unreachable("Undefined enum value."); @@ -89,6 +99,7 @@ H_TEMPLATE = Template(textwrap.dedent(u"""\ #define MESA_VK_ENUM_TO_STR_H #include + #include % for enum in enums: const char * vk_${enum.name[2:]}_to_str(${enum.name} input); @@ -97,6 +108,12 @@ H_TEMPLATE = Template(textwrap.dedent(u"""\ #endif"""), output_encoding='utf-8') +# These enums are defined outside their respective enum blocks, and thus cause +# -Wswitch warnings. +FOREIGN_ENUM_VALUES = [ + "VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID", +] + class EnumFactory(object): """Factory for creating enums.""" @@ -175,7 +192,8 @@ def main(): f.write(template.render( file=os.path.basename(__file__), enums=efactory.registry.values(), - copyright=COPYRIGHT)) + copyright=COPYRIGHT, + FOREIGN_ENUM_VALUES=FOREIGN_ENUM_VALUES)) if __name__ == '__main__': -- 2.30.2