[Mesa-dev] [PATCH] android: vulkan: add support for libmesa_vulkan_{util, wsi}

Mauro Rossi issor.oruam at gmail.com
Sat Feb 25 18:31:43 UTC 2017


The following commits require android porting:

e9dcb17 "vulkan/util: Add generator for enum_to_str functions"
8e03250 "vulkan: Combine wsi and util makefiles"

The following changes are implemented in this patch:

Add src/vulkan/Android.mk to build libmesa_vulkan_util and libmesa_vulkan_wsi
Android.mk: add src/vulkan to SUBDIR to build new modules
intel/vulkan: fix libmesa_vulkan_util,vk_enum_to_str.h dependencies
Add -o OUTPUT_PATH option in src/vulkan/util/gen_enum_to_str.py script
Use -o OUTPUT_PATH option in automake generation rules for vk_enum_to_str.{c,h}

Tested with nougat-x86 32bit and 64bit builds
---
 Android.mk                         |  3 +-
 src/intel/vulkan/Android.mk        |  8 +++--
 src/vulkan/Android.mk              | 70 ++++++++++++++++++++++++++++++++++++++
 src/vulkan/Makefile.am             |  2 +-
 src/vulkan/util/gen_enum_to_str.py | 13 +++++--
 5 files changed, 90 insertions(+), 6 deletions(-)
 create mode 100644 src/vulkan/Android.mk

diff --git a/Android.mk b/Android.mk
index 4168b4d..bb70321 100644
--- a/Android.mk
+++ b/Android.mk
@@ -92,7 +92,8 @@ SUBDIRS := \
 	src/egl \
 	src/amd \
 	src/intel \
-	src/mesa/drivers/dri
+	src/mesa/drivers/dri \
+	src/vulkan
 
 INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS))
 
diff --git a/src/intel/vulkan/Android.mk b/src/intel/vulkan/Android.mk
index 1e53970..a6a7d26 100644
--- a/src/intel/vulkan/Android.mk
+++ b/src/intel/vulkan/Android.mk
@@ -74,7 +74,8 @@ include $(BUILD_STATIC_LIBRARY)
 ANV_INCLUDES := \
 	$(VULKAN_COMMON_INCLUDES) \
 	$(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_anv_entrypoints,,) \
-	$(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_nir,,)/nir
+	$(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_nir,,)/nir \
+	$(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_vulkan_util,,)/util
 
 #
 # libanv for gen7
@@ -172,7 +173,10 @@ LOCAL_C_INCLUDES := \
 	$(ANV_INCLUDES) \
 	$(MESA_TOP)/src/compiler
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+	libmesa_anv_entrypoints \
+	libmesa_genxml \
+	libmesa_vulkan_util
 
 LOCAL_GENERATED_SOURCES += $(intermediates)/anv_entrypoints.c
 
diff --git a/src/vulkan/Android.mk b/src/vulkan/Android.mk
new file mode 100644
index 0000000..4ba5750
--- /dev/null
+++ b/src/vulkan/Android.mk
@@ -0,0 +1,70 @@
+# Copyright © 2017 Mauro Rossi <issor.oruam at gmail.com>
+#
+# 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, sublicense,
+# 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 above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# 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 NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS 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.
+
+LOCAL_PATH := $(call my-dir)
+
+# Import variables
+include $(LOCAL_PATH)/Makefile.sources
+
+#
+# libmesa_vulkan_util
+#
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libmesa_vulkan_util
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir)
+
+LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/include/vulkan
+
+LOCAL_GENERATED_SOURCES := \
+	$(intermediates)/util/vk_enum_to_str.c \
+	$(intermediates)/util/vk_enum_to_str.h
+
+vulkan_api_xml = $(MESA_TOP)/src/vulkan/registry/vk.xml
+
+$(LOCAL_GENERATED_SOURCES): PRIVATE_PYTHON := $(MESA_PYTHON2)
+$(LOCAL_GENERATED_SOURCES): PRIVATE_CUSTOM_TOOL := $(PRIVATE_PYTHON) $(MESA_TOP)/src/vulkan/util/gen_enum_to_str.py -o $(intermediates)/util
+$(LOCAL_GENERATED_SOURCES): $(MESA_TOP)/src/vulkan/util/gen_enum_to_str.py $(vulkan_api_xml)
+	$(transform-generated-source)
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+        $(intermediates)
+
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
+
+#
+# libmesa_vulkan_wsi
+#
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libmesa_vulkan_wsi
+
+LOCAL_SRC_FILES := $(VULKAN_WSI_SOURCES)
+
+LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/include/vulkan
+
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/vulkan/Makefile.am b/src/vulkan/Makefile.am
index 5cdffbf..019da13 100644
--- a/src/vulkan/Makefile.am
+++ b/src/vulkan/Makefile.am
@@ -17,7 +17,7 @@ BUILT_SOURCES = \
 
 util/vk_enum_to_str.c util/vk_enum_to_str.h: util/gen_enum_to_str.py $(vulkan_api_xml)
 	$(MKDIR_GEN)
-	$(PYTHON_GEN) $(srcdir)/util/gen_enum_to_str.py
+	$(PYTHON_GEN) $(srcdir)/util/gen_enum_to_str.py -o $(top_builddir)/src/vulkan/util
 
 libvulkan_util_la_SOURCES = $(VULKAN_UTIL_FILES)
 
diff --git a/src/vulkan/util/gen_enum_to_str.py b/src/vulkan/util/gen_enum_to_str.py
index 4b6fdf3..5d2bc54 100644
--- a/src/vulkan/util/gen_enum_to_str.py
+++ b/src/vulkan/util/gen_enum_to_str.py
@@ -22,6 +22,7 @@
 """Create enum to string functions for vulking using vk.xml."""
 
 from __future__ import print_function
+import argparse
 import os
 import textwrap
 import xml.etree.cElementTree as et
@@ -30,6 +31,14 @@ from mako.template import Template
 
 VK_XML = os.path.join(os.path.dirname(__file__), '..', 'registry', 'vk.xml')
 
+parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
+parser.add_argument('-o', '--output-path', help=textwrap.dedent('''\
+   -o $(top_builddir)/src/vulkan/util for Linux builds
+   -o $(intermediates)/util for Android builds'''),
+   required=True)
+argv = parser.parse_args()
+dst_dir = argv.output_path
+
 COPYRIGHT = textwrap.dedent(u"""\
     * Copyright © 2017 Intel Corporation
     *
@@ -159,8 +168,8 @@ def xml_parser(filename):
 
 def main():
     enums = xml_parser(VK_XML)
-    for template, file_ in [(C_TEMPLATE, 'util/vk_enum_to_str.c'),
-                            (H_TEMPLATE, 'util/vk_enum_to_str.h')]:
+    for template, file_ in [(C_TEMPLATE, os.path.join(dst_dir,'vk_enum_to_str.c')),
+                            (H_TEMPLATE, os.path.join(dst_dir,'vk_enum_to_str.h'))]:
         with open(file_, 'wb') as f:
             f.write(template.render(
                 file=os.path.basename(__file__),
-- 
2.9.3



More information about the mesa-dev mailing list