Files
RedBear-OS/local/recipes/libs/vulkan-headers/source/registry/stripAPI.py
T
vasilito ef3f38da8b feat: port Vulkan headers and ICD loader; wire into kwin
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.
2026-08-03 09:10:57 +03:00

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)