ef3f38da8b
KWin does an unconditional find_package(Vulkan REQUIRED), and CMake's
FindVulkan needs BOTH Vulkan_INCLUDE_DIR and Vulkan_LIBRARY. Mesa already
builds the Vulkan drivers (libvulkan_intel/_radeon/_lvp) but an ICD is not
the API surface a consumer links against, so kwin could not configure.
vulkan-headers: header-only, but VulkanHeadersConfig.cmake is GENERATED at
install time rather than shipped in the tarball, and Vulkan-Loader
hard-requires it -- a hand copy of include/ satisfies FindVulkan and then
fails the loader. Run upstream's cmake install instead.
vulkan-loader: one real port. vk_loader_platform.h gates the whole POSIX
arm (DIRECTORY_SYMBOL, the dlopen wrappers, manifest search) on an OS list
that predates Redox, so the build collapsed with 'DIRECTORY_SYMBOL'
undeclared. Redox provides dlopen/dlsym and POSIX paths via relibc, so it
belongs in the same arm as Linux; that header is the only file under
loader/ doing OS detection. WSI backends are left off: Red Bear is
Wayland-only and the compositor talks to Mesa's ICDs directly.
Both shadow the untested recipes/wip/libs/graphics/{vulkan-headers,
libvulkan} via the local-over-WIP mechanism, per the WIP ownership rule
that the shipping version lives in local/recipes/.
Verified: kwin now reports
-- Found Vulkan: .../sysroot/lib/libvulkan.so (found version 1.4.321)
kwin also gains its missing kf6-knewstuff dep -- its
find_package(KF6 COMPONENTS NewStuff) is REQUIRED, so without the dep the
framework was never staged into kwin's sysroot.
43 lines
1.7 KiB
Python
Executable File
43 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Copyright 2023-2025 The Khronos Group Inc.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import argparse
|
|
import xml.etree.ElementTree as etree
|
|
from reg import stripNonmatchingAPIs
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(prog='stripAPI',
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
description='''\
|
|
Filters out elements with non-matching explicit 'api' attributes from API XML.
|
|
To remove Vulkan SC-only elements from the combined API XML:
|
|
python3 scripts/stripAPI.py -input xml/vk.xml -output vulkan-only.xml -keepAPI vulkan
|
|
To remove Vulkan-only elements:
|
|
python3 scripts/stripAPI.py -input xml/vk.xml -output vulkansc-only.xml -keepAPI vulkansc
|
|
If you are parsing the XML yourself but using the xml.etree package, the
|
|
equivalent runtime code is:
|
|
import reg
|
|
reg.stripNonmatchingAPIs(tree.getroot(), keepAPI, actuallyDelete=True)
|
|
where 'tree' is an ElementTree created from the XML file using
|
|
etree.parse(filename)''')
|
|
|
|
parser.add_argument('-input', action='store',
|
|
required=True,
|
|
help='Specify input registry XML')
|
|
parser.add_argument('-output', action='store',
|
|
required=True,
|
|
help='Specify output registry XML')
|
|
parser.add_argument('-keepAPI', action='store',
|
|
default=None,
|
|
help='Specify API name whose \'api\' tags are kept')
|
|
|
|
args = parser.parse_args()
|
|
|
|
tree = etree.parse(args.input)
|
|
if args.keepAPI is not None:
|
|
stripNonmatchingAPIs(tree.getroot(), args.keepAPI, actuallyDelete = True)
|
|
tree.write(args.output)
|
|
|