vulkan/registry: Feed vk_android_native_buffer.xml to gen_enum_to_str.py
authorChad Versace <chadversary@chromium.org>
Tue, 15 Aug 2017 23:48:38 +0000 (16:48 -0700)
committerChad Versace <chadversary@chromium.org>
Mon, 18 Sep 2017 21:26:54 +0000 (14:26 -0700)
Tested on Android and Fedora.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/vulkan/Android.mk
src/vulkan/Makefile.am
src/vulkan/util/gen_enum_to_str.py

index e19a33d..47c5c51 100644 (file)
@@ -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)
index c897a07..c92748c 100644 (file)
@@ -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)
 
index bc72c18..df326d0 100644 (file)
@@ -58,6 +58,7 @@ C_TEMPLATE = Template(textwrap.dedent(u"""\
      */
 
     #include <vulkan/vulkan.h>
+    #include <vulkan/vk_android_native_buffer.h>
     #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 <vulkan/vulkan.h>
+    #include <vulkan/vk_android_native_buffer.h>
 
     % 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__':