aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2018-03-09 00:47:26 +0100
committerBas Nieuwenhuizen <[email protected]>2018-03-09 07:53:39 +0100
commitb6347807a92d8fcf9acbaeb1af2f0aae15d78b3a (patch)
treea72317f8a45aaba5abfe5a3e7362e9ae4fbeca62
parent6878c9aabc6077e6de75b269fdfb8ff423d05042 (diff)
radv: Generate icd files.
If the api version is too low, the loader clamps the application requested version to the advertized version, which messes with which extensions are enabled. Reviewed-by: Dave Airlie <[email protected]>
-rw-r--r--src/amd/vulkan/dev_icd.json.in7
-rw-r--r--src/amd/vulkan/meson.build34
-rw-r--r--src/amd/vulkan/radeon_icd.json.in7
-rw-r--r--src/amd/vulkan/radv_icd.py47
4 files changed, 70 insertions, 25 deletions
diff --git a/src/amd/vulkan/dev_icd.json.in b/src/amd/vulkan/dev_icd.json.in
deleted file mode 100644
index dfd032cdfb7..00000000000
--- a/src/amd/vulkan/dev_icd.json.in
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_format_version": "1.0.0",
- "ICD": {
- "library_path": "@libvulkan_radeon_path@",
- "api_version": "1.1.0"
- }
-}
diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build
index 98051560a52..61aa8c4fde9 100644
--- a/src/amd/vulkan/meson.build
+++ b/src/amd/vulkan/meson.build
@@ -134,18 +134,30 @@ libvulkan_radeon = shared_library(
install : true,
)
-radv_data = configuration_data()
-radv_data.set('install_libdir', join_paths(get_option('prefix'), get_option('libdir')))
-radv_data.set('libvulkan_radeon_path', libvulkan_radeon.full_path())
-
-configure_file(
- configuration : radv_data,
- input : 'radeon_icd.json.in',
+radeon_icd = custom_target(
+ 'radeon_icd',
+ input : 'radv_icd.py',
output : 'radeon_icd.@[email protected]'.format(host_machine.cpu()),
+ command : [
+ prog_python2, '@INPUT@',
+ '--lib-path', join_paths(get_option('prefix'), get_option('libdir')),
+ '--out', '@OUTPUT@',
+ ],
+ depend_files : files('radv_extensions.py'),
+ build_by_default : true,
install_dir : with_vulkan_icd_dir,
+ install : true,
)
-configure_file(
- configuration : radv_data,
- input : 'dev_icd.json.in',
- output : 'dev_icd.json'
+
+radv_dev_icd = custom_target(
+ 'radv_dev_icd',
+ input : 'radv_icd.py',
+ output : 'dev_icd.json',
+ command : [
+ prog_python2, '@INPUT@', '--lib-path', meson.current_build_dir(),
+ '--out', '@OUTPUT@'
+ ],
+ depend_files : files('radv_extensions.py'),
+ build_by_default : true,
+ install : false,
)
diff --git a/src/amd/vulkan/radeon_icd.json.in b/src/amd/vulkan/radeon_icd.json.in
deleted file mode 100644
index a99cb80ee92..00000000000
--- a/src/amd/vulkan/radeon_icd.json.in
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_format_version": "1.0.0",
- "ICD": {
- "library_path": "@install_libdir@/libvulkan_radeon.so",
- "api_version": "1.1.0"
- }
-}
diff --git a/src/amd/vulkan/radv_icd.py b/src/amd/vulkan/radv_icd.py
new file mode 100644
index 00000000000..78ed379bd22
--- /dev/null
+++ b/src/amd/vulkan/radv_icd.py
@@ -0,0 +1,47 @@
+# Copyright 2017 Intel Corporation
+#
+# 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 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 NON-INFRINGEMENT.
+# IN NO EVENT SHALL VMWARE 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.
+
+import json
+import os.path
+
+from radv_extensions import *
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--out', help='Output json file.', required=True)
+ parser.add_argument('--lib-path', help='Path to libvulkan_radeon.so')
+ args = parser.parse_args()
+
+ path = 'libvulkan_radeon.so'
+ if args.lib_path:
+ path = os.path.join(args.lib_path, path)
+
+ json_data = {
+ 'file_format_version': '1.0.0',
+ 'ICD': {
+ 'library_path': path,
+ 'api_version': str(MAX_API_VERSION),
+ },
+ }
+
+ with open(args.out, 'w') as f:
+ json.dump(json_data, f, indent = 4, sort_keys=True)