anv: Feed vk_android_native_buffer.xml to generators (v2)
authorChad Versace <chadversary@chromium.org>
Tue, 22 Aug 2017 23:26:03 +0000 (16:26 -0700)
committerChad Versace <chadversary@chromium.org>
Mon, 18 Sep 2017 21:26:54 +0000 (14:26 -0700)
Feed the XML to anv_extensions.py and anv_entrypoints_gen.py.
Do it on all platforms, not just Android. Tested on Android and Fedora.

We always parse the Android XML, regardless of target platform, to
help reduce the chance that people working on non-Android break the
Android build.

v2:
  - Squash in Tapani's changes to Android.*.mk.

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

index 17ae4b071b3a918d162250e2479e7aa5b3ecbe39..a15d916942501de668c391cdc2b3963cf691fcdc 100644 (file)
@@ -65,7 +65,8 @@ $(intermediates)/vulkan/dummy.c:
 $(intermediates)/vulkan/anv_entrypoints.h: $(intermediates)/vulkan/dummy.c
        $(VK_ENTRYPOINTS_SCRIPT) \
                --outdir $(dir $@) \
-               --xml $(MESA_TOP)/src/vulkan/registry/vk.xml
+               --xml $(MESA_TOP)/src/vulkan/registry/vk.xml \
+               --xml $(MESA_TOP)/src/vulkan/registry/vk_android_native_buffer.xml
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := \
         $(intermediates)
@@ -214,12 +215,14 @@ $(intermediates)/vulkan/anv_entrypoints.c:
        @mkdir -p $(dir $@)
        $(VK_ENTRYPOINTS_SCRIPT) \
                --xml $(MESA_TOP)/src/vulkan/registry/vk.xml \
+               --xml $(MESA_TOP)/src/vulkan/registry/vk_android_native_buffer.xml \
                --outdir $(dir $@)
 
 $(intermediates)/vulkan/anv_extensions.c:
        @mkdir -p $(dir $@)
        $(VK_EXTENSIONS_SCRIPT) \
                --xml $(MESA_TOP)/src/vulkan/registry/vk.xml \
+               --xml $(MESA_TOP)/src/vulkan/registry/vk_android_native_buffer.xml \
                --out $@
 
 LOCAL_SHARED_LIBRARIES := libdrm
index fa9b6ba7245a605b302d81a5d7aaf32088ac2682..8a19f96096a1b7171fc01205ead21709e7af00fe 100644 (file)
 # rules must be outside of any AM_CONDITIONALs. Otherwise they will be commented
 # out and we'll fail at `make dist'
 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
 
 vulkan/anv_entrypoints.c: vulkan/anv_entrypoints_gen.py \
-                         vulkan/anv_extensions.py $(vulkan_api_xml)
+                         vulkan/anv_extensions.py \
+                         $(vulkan_api_xml) \
+                         $(vk_android_native_buffer_xml)
        $(MKDIR_GEN)
        $(AM_V_GEN)$(PYTHON2) $(srcdir)/vulkan/anv_entrypoints_gen.py \
-               --xml $(vulkan_api_xml) --outdir $(builddir)/vulkan
+               --xml $(vulkan_api_xml) \
+               --xml $(vk_android_native_buffer_xml) \
+               --outdir $(builddir)/vulkan
 vulkan/anv_entrypoints.h: vulkan/anv_entrypoints.c
 
-vulkan/anv_extensions.c: vulkan/anv_extensions.py $(vulkan_api_xml)
+vulkan/anv_extensions.c: vulkan/anv_extensions.py \
+                        $(vulkan_api_xml) \
+                        $(vk_android_native_buffer_xml)
        $(MKDIR_GEN)
        $(AM_V_GEN)$(PYTHON2) $(srcdir)/vulkan/anv_extensions.py \
-               --xml $(vulkan_api_xml) --out $@
+               --xml $(vulkan_api_xml) \
+               --xml $(vk_android_native_buffer_xml) \
+               --out $@
 
 BUILT_SOURCES += $(VULKAN_GENERATED_FILES)
 CLEANFILES += \
index 4dfde064ca779a1fa0515638401b34525cc84ae7..0284d1025929a8e09a0b4f9e14fddcf7ddde2bac 100644 (file)
@@ -136,8 +136,18 @@ def _init_exts_from_xml(xml):
         ext_name = ext_elem.attrib['name']
         if ext_name not in ext_name_map:
             continue
-        ext = ext_name_map[ext_name]
 
+        # Workaround for VK_ANDROID_native_buffer. Its <extension> element in
+        # vk.xml lists it as supported="disabled" and provides only a stub
+        # definition.  Its <extension> element in Mesa's custom
+        # vk_android_native_buffer.xml, though, lists it as
+        # supported='android-vendor' and fully defines the extension. We want
+        # to skip the <extension> element in vk.xml.
+        if ext_elem.attrib['supported'] == 'disabled':
+            assert ext_name == 'VK_ANDROID_native_buffer'
+            continue
+
+        ext = ext_name_map[ext_name]
         ext.type = ext_elem.attrib['type']
 
 _TEMPLATE = Template(COPYRIGHT + """