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 <airlied@redhat.com>
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"file_format_version": "1.0.0",
|
||||
"ICD": {
|
||||
"library_path": "@libvulkan_radeon_path@",
|
||||
"api_version": "1.1.0"
|
||||
}
|
||||
}
|
@@ -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.@0@.json'.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,
|
||||
)
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"file_format_version": "1.0.0",
|
||||
"ICD": {
|
||||
"library_path": "@install_libdir@/libvulkan_radeon.so",
|
||||
"api_version": "1.1.0"
|
||||
}
|
||||
}
|
47
src/amd/vulkan/radv_icd.py
Normal file
47
src/amd/vulkan/radv_icd.py
Normal file
@@ -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)
|
Reference in New Issue
Block a user