diff options
author | asuonpaa <34128694+asuonpaa@users.noreply.github.com> | 2021-02-20 17:10:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-20 15:10:04 +0000 |
commit | dabae26164714abf951c6815a2b4513260f7c6a4 (patch) | |
tree | 77ab2ae58362a38c76dcea7444794401a6de7ce2 /tools | |
parent | 0db8af9f6be1f7abb8030eaa593409d74476133b (diff) | |
download | amber-dabae26164714abf951c6815a2b4513260f7c6a4.tar.gz |
Add device API version checking for function pointer loading (#943)
Functions from instance extensions promoted to core in a later Vulkan version should only be loaded if the physical device version >= the version.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/update_vk_wrappers.py | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/tools/update_vk_wrappers.py b/tools/update_vk_wrappers.py index 9acfc8e..0fc9f87 100755 --- a/tools/update_vk_wrappers.py +++ b/tools/update_vk_wrappers.py @@ -186,36 +186,40 @@ def main(): outdir = sys.argv[1] srcdir = sys.argv[2] - vkfile = os.path.join(srcdir, 'third_party', 'vulkan-headers', 'registry', 'vk.xml') - incfile = os.path.join(srcdir, 'src', 'vulkan', 'vk-funcs.inc') - - data = read_inc(incfile) - - wrapper_content = '' - header_content = '' - if os.path.isfile(vkfile): - vk_data = read_vk(vkfile) - wrapper_content = gen_wrappers(data, vk_data) - header_content = gen_headers(data, vk_data) - else: - wrapper_content = gen_direct(data) - header_content = gen_direct_headers(data) - - outfile = os.path.join(outdir, 'vk-wrappers.inc') - if os.path.isfile(outfile): - with open(outfile, 'r') as f: - if wrapper_content == f.read(): - return - with open(outfile, 'w') as f: - f.write(wrapper_content) - - hdrfile = os.path.join(outdir, 'vk-wrappers.h') - if os.path.isfile(hdrfile): - with open(hdrfile, 'r') as f: - if header_content == f.read(): - return - with open(hdrfile, 'w') as f: - f.write(header_content) + vulkan_versions = ("1-0", "1-1") + + for vulkan_version in vulkan_versions: + + vkfile = os.path.join(srcdir, 'third_party', 'vulkan-headers', 'registry', 'vk.xml') + incfile = os.path.join(srcdir, 'src', 'vulkan', 'vk-funcs-%s.inc' % vulkan_version) + + data = read_inc(incfile) + + wrapper_content = '' + header_content = '' + if os.path.isfile(vkfile): + vk_data = read_vk(vkfile) + wrapper_content = gen_wrappers(data, vk_data) + header_content = gen_headers(data, vk_data) + else: + wrapper_content = gen_direct(data) + header_content = gen_direct_headers(data) + + outfile = os.path.join(outdir, 'vk-wrappers-%s.inc' % vulkan_version) + if os.path.isfile(outfile): + with open(outfile, 'r') as f: + if wrapper_content == f.read(): + return + with open(outfile, 'w') as f: + f.write(wrapper_content) + + hdrfile = os.path.join(outdir, 'vk-wrappers-%s.h' % vulkan_version) + if os.path.isfile(hdrfile): + with open(hdrfile, 'r') as f: + if header_content == f.read(): + return + with open(hdrfile, 'w') as f: + f.write(header_content) if __name__ == '__main__': |