Giter VIP home page Giter VIP logo

khronosgroup / openxr-sdk-source Goto Github PK

View Code? Open in Web Editor NEW
622.0 60.0 234.0 10.24 MB

Sources for OpenXR loader, basic API layers, and example code.

Home Page: https://khronos.org/openxr

License: Apache License 2.0

CMake 6.00% C++ 29.29% C 7.61% Objective-C 1.49% Python 52.35% GLSL 0.04% Shell 1.21% Makefile 1.07% Ruby 0.60% PowerShell 0.15% Roff 0.20%
openxr openxr-loader openxr-sdk xr vr virtual-reality augmented-reality openxr-sample openxr-layers

openxr-sdk-source's Introduction

OpenXR™ Software Development Kit (SDK) Sources Project

This repository contains source code and build scripts for implementations of the OpenXR loader, validation layers, and code samples.

The authoritative public repository is located at https://github.com/KhronosGroup/OpenXR-SDK-Source/. It hosts the public Issue tracker, and accepts patches (Pull Requests) from the general public.

If you want to simply write an application using OpenXR (the headers and loader), with minimum dependencies, see https://github.com/KhronosGroup/OpenXR-SDK/. That project is based on this one, but contains all generated files pre-generated, removing the requirement for Python or build-time file generation, and omits the samples, tests, and API layers, as they are not typically built as a part of an application.

Directory Structure

  • BUILDING.md - Instructions for building the projects
  • README.md - This file
  • COPYING.md - Copyright and licensing information
  • CODE_OF_CONDUCT.md - Code of Conduct
  • external/ - External code for projects in the repo
  • include/ - OpenXR platform include file
  • specification/ - xr.xml file
  • src/ - Source code for various projects
  • src/api_layer - Sample code for developing API layers
  • src/loader - OpenXR loader code
  • src/tests - various test code (if looking for sample code start with hello_xr/)

Currently the best sample code is in src/tests/hello_xr/. More will be added in the future.

Building

See BUILDING.md

Note about git blame

We are tracking "bulk commits" in the .git-blame-ignore-revs file, for better git blame output. Sadly it appears that web interfaces do not yet handle this file, but you can if using the command line. See --ignore-revs-file docs for details, and this blog post about ignore-revs for some useful usage details.

openxr-sdk-source's People

Contributors

aaronfranke avatar aeikum avatar akien-mga avatar biswa96 avatar bjornbytes avatar brainrom avatar brent-insko-intel avatar brycehutchings avatar chrdavis avatar christophhaag avatar daveh-lunarg avatar dependabot[bot] avatar iesser avatar jherico avatar kiruyamomochi avatar matthieucoquet avatar ph5 avatar ralith avatar rbessems avatar robbiesri avatar rpavlik avatar russell-taylor avatar samanthabowen avatar sdegrande avatar stevesmithepic avatar svillar avatar utzcoz avatar yl-msft avatar zhangxy988 avatar zheqimicrosoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openxr-sdk-source's Issues

Change exception handling to be on by default?

@zheqiMicrosoft looking for your input here.

I'm documenting and cleaning up some things, and I realized I think I made my optional exception handling too dangerous. There's a define XRLOADER_ENABLE_EXCEPTION_HANDLING that you must enable except in two conditions (excerpt from in-progress note in docs):

  • Due to a project policy, you're using a custom standard-library build
    that has exception throwing disabled.
    (The loader itself does not throw any exceptions but it uses standard
    library functionality that may throw.)
  • You're developing or debugging the loader and want exceptions to go
    uncaught to trigger a debugger.

However, if somebody doesn't use CMake, it's easy to forget to fail to define something, so it seems like the better, safer default is to catch exceptions unless XRLOADER_DISABLE_EXCEPTION_HANDLING is defined.

I imagine for your uses, you could probably add that define in to your alternate build system, but I wanted to find out for sure before I made a PR.

Exporting some filesystem-related symbols on Linux

Here's the total list of exported symbols from a build on Debian Buster (10): (computed with some mangling of dpkg-gensymbols output)

 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __gnu_cxx::__to_xstring<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>(int (*)(char*, unsigned long, char const*, __va_list_tag*), unsigned long, char const*, ...)"
 (c++)"__gnu_cxx::stdio_filebuf<char, std::char_traits<char> >::stdio_filebuf(int, std::_Ios_Openmode, unsigned long)"
 (c++)"__gnu_cxx::stdio_filebuf<char, std::char_traits<char> >::stdio_filebuf(int, std::_Ios_Openmode, unsigned long)"
 (c++)"__gnu_cxx::stdio_filebuf<char, std::char_traits<char> >::~stdio_filebuf()"
 (c++)"__gnu_cxx::stdio_filebuf<char, std::char_traits<char> >::~stdio_filebuf()"
 (c++)"__gnu_cxx::stdio_filebuf<char, std::char_traits<char> >::~stdio_filebuf()"
 (c++)"std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_find_before_node(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long) const"
 (c++)"std::filesystem::__cxx11::filesystem_error::what() const"
 (c++)"std::filesystem::__cxx11::directory_iterator::operator*() const"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::depth() const"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::operator*() const"
 (c++)"std::filesystem::__cxx11::path::parent_path() const"
 (c++)"std::filesystem::__cxx11::path::has_filename() const"
 (c++)"std::filesystem::__cxx11::path::has_root_name() const"
 (c++)"std::filesystem::__cxx11::path::has_root_path() const"
 (c++)"std::filesystem::__cxx11::path::relative_path() const"
 (c++)"std::filesystem::__cxx11::path::root_directory() const"
 (c++)"std::filesystem::__cxx11::path::has_parent_path() const"
 (c++)"std::filesystem::__cxx11::path::lexically_normal() const"
 (c++)"std::filesystem::__cxx11::path::_M_find_extension() const"
 (c++)"std::filesystem::__cxx11::path::has_relative_path() const"
 (c++)"std::filesystem::__cxx11::path::has_root_directory() const"
 (c++)"std::filesystem::__cxx11::path::lexically_relative(std::filesystem::__cxx11::path const&) const"
 (c++)"std::filesystem::__cxx11::path::lexically_proximate(std::filesystem::__cxx11::path const&) const"
 (c++)"std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const"
 (c++)"std::filesystem::__cxx11::path::root_name() const"
 (c++)"std::filesystem::__cxx11::path::root_path() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::what() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::directory_iterator::operator*() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::depth() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::operator*() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::parent_path() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::has_filename() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::has_root_name() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::has_root_path() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::relative_path() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::root_directory() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::has_parent_path() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_M_find_extension() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::has_relative_path() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::has_root_directory() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::compare(std::experimental::filesystem::v1::__cxx11::path const&) const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::root_name() const"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::root_path() const"
 (c++)"std::__codecvt_abstract_base<wchar_t, char, __mbstate_t>::in(__mbstate_t&, char const*, char const*, char const*&, wchar_t*, wchar_t*, wchar_t*&) const"
 (c++)"std::__codecvt_abstract_base<wchar_t, char, __mbstate_t>::out(__mbstate_t&, wchar_t const*, wchar_t const*, wchar_t const*&, char*, char*, char*&) const"
 (c++)"std::ctype<char>::do_widen(char) const"
 (c++)"std::pair<std::__detail::_Node_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, false, true>, bool> std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_emplace<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(std::integral_constant<bool, true>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)"
 (c++)"std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, true>*, unsigned long)"
 (c++)"std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::~_Hashtable()"
 (c++)"std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::~_Hashtable()"
 (c++)"std::filesystem::equivalent(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::equivalent(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::remove_all(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::remove_all(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::permissions(std::filesystem::__cxx11::path const&, std::filesystem::perms, std::filesystem::perm_options)"
 (c++)"std::filesystem::permissions(std::filesystem::__cxx11::path const&, std::filesystem::perms, std::filesystem::perm_options, std::error_code&)"
 (c++)"std::filesystem::resize_file(std::filesystem::__cxx11::path const&, unsigned long)"
 (c++)"std::filesystem::resize_file(std::filesystem::__cxx11::path const&, unsigned long, std::error_code&)"
 (c++)"std::filesystem::copy_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::copy_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::current_path[abi:cxx11](std::error_code&)"
 (c++)"std::filesystem::current_path[abi:cxx11]()"
 (c++)"std::filesystem::current_path(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::current_path(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::do_copy_file(char const*, char const*, std::filesystem::copy_options_existing_file, stat*, stat*, std::error_code&)"
 (c++)"std::filesystem::read_symlink(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::read_symlink(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::fs_err_concat(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
 (c++)"std::filesystem::create_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::create_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::symlink_status(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::symlink_status(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::hard_link_count(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::hard_link_count(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::last_write_time(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::last_write_time(std::filesystem::__cxx11::path const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >)"
 (c++)"std::filesystem::last_write_time(std::filesystem::__cxx11::path const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::error_code&)"
 (c++)"std::filesystem::last_write_time(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::create_directory(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::create_directory(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::create_directory(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::create_directory(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::create_hard_link(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::create_hard_link(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::weakly_canonical(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::weakly_canonical(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::create_directories(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::create_directories(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::temp_directory_path[abi:cxx11](std::error_code&)"
 (c++)"std::filesystem::temp_directory_path[abi:cxx11]()"
 (c++)"std::filesystem::create_directory_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::create_directory_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::copy(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::filesystem::copy_options)"
 (c++)"std::filesystem::copy(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::filesystem::copy_options, std::error_code&)"
 (c++)"std::filesystem::space(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::space(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::remove(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::remove(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::rename(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::rename(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::status(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::status(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::__cxx11::hash_value(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::__cxx11::filesystem_error::_M_gen_what()"
 (c++)"std::filesystem::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code)"
 (c++)"std::filesystem::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::filesystem::__cxx11::path const&, std::error_code)"
 (c++)"std::filesystem::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::error_code)"
 (c++)"std::filesystem::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code)"
 (c++)"std::filesystem::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::filesystem::__cxx11::path const&, std::error_code)"
 (c++)"std::filesystem::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::error_code)"
 (c++)"std::filesystem::__cxx11::filesystem_error::~filesystem_error()"
 (c++)"std::filesystem::__cxx11::filesystem_error::~filesystem_error()"
 (c++)"std::filesystem::__cxx11::filesystem_error::~filesystem_error()"
 (c++)"std::filesystem::__cxx11::directory_iterator::increment(std::error_code&)"
 (c++)"std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)"
 (c++)"std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)"
 (c++)"std::filesystem::__cxx11::directory_iterator::operator++()"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::pop(std::error_code&)"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::pop()"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::increment(std::error_code&)"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::recursive_directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::recursive_directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::operator=(std::filesystem::__cxx11::recursive_directory_iterator&&)"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::operator=(std::filesystem::__cxx11::recursive_directory_iterator const&)"
 (c++)"std::filesystem::__cxx11::recursive_directory_iterator::operator++()"
 (c++)"std::filesystem::__cxx11::_Dir::advance(bool, std::error_code&)"
 (c++)"std::filesystem::__cxx11::_Dir::~_Dir()"
 (c++)"std::filesystem::__cxx11::_Dir::~_Dir()"
 (c++)"std::filesystem::__cxx11::path::_M_split_cmpts()"
 (c++)"std::filesystem::__cxx11::path::_S_convert_loc(char const*, char const*, std::locale const&)"
 (c++)"std::filesystem::__cxx11::path::_M_add_filename(unsigned long, unsigned long)"
 (c++)"std::filesystem::__cxx11::path::_M_add_root_dir(unsigned long)"
 (c++)"std::filesystem::__cxx11::path::remove_filename()"
 (c++)"std::filesystem::__cxx11::path::_M_add_root_name(unsigned long)"
 (c++)"std::filesystem::__cxx11::path::replace_filename(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::__cxx11::path::replace_extension(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::__cxx11::path::_M_trim()"
 (c++)"std::filesystem::__cxx11::path::path(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::__cxx11::path::path(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::__cxx11::path::~path()"
 (c++)"std::filesystem::__cxx11::path::~path()"
 (c++)"std::filesystem::__cxx11::path::operator=(std::filesystem::__cxx11::path&&)"
 (c++)"std::filesystem::__cxx11::path::operator/=(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::absolute(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::absolute(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::is_empty(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::is_empty(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::relative(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::relative(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::_Dir_base::advance(bool, std::error_code&)"
 (c++)"std::filesystem::_Dir_base::_Dir_base(char const*, bool, std::error_code&)"
 (c++)"std::filesystem::_Dir_base::_Dir_base(char const*, bool, std::error_code&)"
 (c++)"std::filesystem::canonical(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::canonical(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::copy_file(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::filesystem::copy_options)"
 (c++)"std::filesystem::copy_file(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::filesystem::copy_options, std::error_code&)"
 (c++)"std::filesystem::file_size(std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::file_size(std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::filesystem::proximate(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)"
 (c++)"std::filesystem::proximate(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&)"
 (c++)"std::_Deque_base<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::_M_initialize_map(unsigned long)"
 (c++)"std::_Deque_base<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::_M_initialize_map(unsigned long)"
 (c++)"std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0>::~codecvt_utf8()"
 (c++)"std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0>::~codecvt_utf8()"
 (c++)"std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0>::~codecvt_utf8()"
 (c++)"std::experimental::filesystem::v1::equivalent(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::equivalent(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::remove_all(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::remove_all(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::permissions(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::perms)"
 (c++)"std::experimental::filesystem::v1::permissions(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::perms, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::resize_file(std::experimental::filesystem::v1::__cxx11::path const&, unsigned long)"
 (c++)"std::experimental::filesystem::v1::resize_file(std::experimental::filesystem::v1::__cxx11::path const&, unsigned long, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::copy_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::copy_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::current_path[abi:cxx11](std::error_code&)"
 (c++)"std::experimental::filesystem::v1::current_path[abi:cxx11]()"
 (c++)"std::experimental::filesystem::v1::current_path(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::current_path(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::read_symlink(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::read_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::create_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::create_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::symlink_status(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::symlink_status(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::hard_link_count(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::hard_link_count(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::last_write_time(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::last_write_time(std::experimental::filesystem::v1::__cxx11::path const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >)"
 (c++)"std::experimental::filesystem::v1::last_write_time(std::experimental::filesystem::v1::__cxx11::path const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::last_write_time(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::system_complete(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::system_complete(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::create_directory(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::create_directory(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::create_directory(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::create_directory(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::create_hard_link(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::create_hard_link(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::create_directories(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::create_directories(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::temp_directory_path[abi:cxx11](std::error_code&)"
 (c++)"std::experimental::filesystem::v1::temp_directory_path[abi:cxx11]()"
 (c++)"std::experimental::filesystem::v1::create_directory_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::create_directory_symlink(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::copy(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::copy_options)"
 (c++)"std::experimental::filesystem::v1::copy(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::copy_options, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::space(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::space(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::remove(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::remove(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::rename(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::rename(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::hash_value(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::_M_gen_what()"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::error_code)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::filesystem_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::error_code)"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::~filesystem_error()"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::~filesystem_error()"
 (c++)"std::experimental::filesystem::v1::__cxx11::filesystem_error::~filesystem_error()"
 (c++)"std::experimental::filesystem::v1::__cxx11::directory_iterator::increment(std::error_code&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::directory_iterator::directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)"
 (c++)"std::experimental::filesystem::v1::__cxx11::directory_iterator::directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)"
 (c++)"std::experimental::filesystem::v1::__cxx11::directory_iterator::operator++()"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::pop(std::error_code&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::pop()"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::increment(std::error_code&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::recursive_directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::recursive_directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::operator=(std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator&&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::operator=(std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::operator++()"
 (c++)"std::experimental::filesystem::v1::__cxx11::_Dir::advance(bool, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::_Dir::~_Dir()"
 (c++)"std::experimental::filesystem::v1::__cxx11::_Dir::~_Dir()"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_S_convert_loc(char const*, char const*, std::locale const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_M_add_filename(unsigned long, unsigned long)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_M_add_root_dir(unsigned long)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::remove_filename()"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_M_add_root_name(unsigned long)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::replace_filename(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::replace_extension(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::preferred_separator"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_M_trim()"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::path(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::path(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::~path()"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::~path()"
 (c++)"std::experimental::filesystem::v1::absolute(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::is_empty(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::is_empty(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::canonical(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::canonical(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::canonical(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::copy_file(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::copy_options)"
 (c++)"std::experimental::filesystem::v1::copy_file(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::copy_options, std::error_code&)"
 (c++)"std::experimental::filesystem::v1::file_size(std::experimental::filesystem::v1::__cxx11::path const&)"
 (c++)"std::experimental::filesystem::v1::file_size(std::experimental::filesystem::v1::__cxx11::path const&, std::error_code&)"
 (c++)"std::_Sp_counted_ptr<decltype(nullptr), (__gnu_cxx::_Lock_policy)2>::_M_dispose()"
 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()"
 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_Cmpt* std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt const*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >, std::experimental::filesystem::v1::__cxx11::path::_Cmpt*>(__gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt const*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >, __gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt const*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >, std::experimental::filesystem::v1::__cxx11::path::_Cmpt*)"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::_M_destroy()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::_M_destroy()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::_M_destroy()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::_M_destroy()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()"
 (c++)"std::filesystem::__cxx11::_Dir& std::deque<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir> >::emplace_back<std::filesystem::__cxx11::_Dir>(std::filesystem::__cxx11::_Dir&&)"
 (c++)"std::deque<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir> >::_M_pop_back_aux()"
 (c++)"void std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::_M_insert_aux<std::filesystem::__cxx11::path::iterator>(std::_Deque_iterator<std::filesystem::__cxx11::path, std::filesystem::__cxx11::path&, std::filesystem::__cxx11::path*>, std::filesystem::__cxx11::path::iterator, std::filesystem::__cxx11::path::iterator, unsigned long)"
 (c++)"std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::_M_reallocate_map(unsigned long, bool)"
 (c++)"void std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::_M_range_insert_aux<std::filesystem::__cxx11::path::iterator>(std::_Deque_iterator<std::filesystem::__cxx11::path, std::filesystem::__cxx11::path&, std::filesystem::__cxx11::path*>, std::filesystem::__cxx11::path::iterator, std::filesystem::__cxx11::path::iterator, std::forward_iterator_tag)"
 (c++)"std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::_M_new_elements_at_back(unsigned long)"
 (c++)"std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::_M_new_elements_at_front(unsigned long)"
 (c++)"std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::~deque()"
 (c++)"std::deque<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >::~deque()"
 (c++)"std::experimental::filesystem::v1::__cxx11::_Dir& std::deque<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir> >::emplace_back<std::experimental::filesystem::v1::__cxx11::_Dir>(std::experimental::filesystem::v1::__cxx11::_Dir&&)"
 (c++)"std::deque<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir> >::_M_pop_back_aux()"
 (c++)"void std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::_M_insert_aux<std::experimental::filesystem::v1::__cxx11::path::iterator>(std::_Deque_iterator<std::experimental::filesystem::v1::__cxx11::path, std::experimental::filesystem::v1::__cxx11::path&, std::experimental::filesystem::v1::__cxx11::path*>, std::experimental::filesystem::v1::__cxx11::path::iterator, std::experimental::filesystem::v1::__cxx11::path::iterator, unsigned long)"
 (c++)"std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::_M_reallocate_map(unsigned long, bool)"
 (c++)"void std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::_M_range_insert_aux<std::experimental::filesystem::v1::__cxx11::path::iterator>(std::_Deque_iterator<std::experimental::filesystem::v1::__cxx11::path, std::experimental::filesystem::v1::__cxx11::path&, std::experimental::filesystem::v1::__cxx11::path*>, std::experimental::filesystem::v1::__cxx11::path::iterator, std::experimental::filesystem::v1::__cxx11::path::iterator, std::forward_iterator_tag)"
 (c++)"std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::_M_new_elements_at_back(unsigned long)"
 (c++)"std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::_M_new_elements_at_front(unsigned long)"
 (c++)"std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::~deque()"
 (c++)"std::deque<std::experimental::filesystem::v1::__cxx11::path, std::allocator<std::experimental::filesystem::v1::__cxx11::path> >::~deque()"
 (c++)"std::filesystem::__cxx11::path::_Cmpt& std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::filesystem::__cxx11::path::_Type, unsigned long&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::filesystem::__cxx11::path::_Type&&, unsigned long&)"
 (c++)"void std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::filesystem::__cxx11::path::_Type, unsigned long&>(__gnu_cxx::__normal_iterator<std::filesystem::__cxx11::path::_Cmpt*, std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::filesystem::__cxx11::path::_Type&&, unsigned long&)"
 (c++)"void std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::filesystem::__cxx11::path::_Type, int>(__gnu_cxx::__normal_iterator<std::filesystem::__cxx11::path::_Cmpt*, std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::filesystem::__cxx11::path::_Type&&, int&&)"
 (c++)"std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> >::~vector()"
 (c++)"std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> >::~vector()"
 (c++)"std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> >::operator=(std::vector<std::filesystem::__cxx11::path::_Cmpt, std::allocator<std::filesystem::__cxx11::path::_Cmpt> > const&)"
 (c++)"std::experimental::filesystem::v1::__cxx11::path::_Cmpt& std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::experimental::filesystem::v1::__cxx11::path::_Type, unsigned long&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::experimental::filesystem::v1::__cxx11::path::_Type&&, unsigned long&)"
 (c++)"void std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::experimental::filesystem::v1::__cxx11::path::_Type, unsigned long&>(__gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::experimental::filesystem::v1::__cxx11::path::_Type&&, unsigned long&)"
 (c++)"void std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::experimental::filesystem::v1::__cxx11::path::_Type, int>(__gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::experimental::filesystem::v1::__cxx11::path::_Type&&, int&&)"
 (c++)"std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::_M_erase(__gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >)"
 (c++)"std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::~vector()"
 (c++)"std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::~vector()"
 (c++)"std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::operator=(std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > const&)"
 (c++)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)"
 (c++)"std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_default_append(unsigned long)"
 (c++)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<char (&) [128]>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char (&) [128])"
 (c++)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
 (c++)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)"
 (c++)"std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::reserve(unsigned long)"
 (c++)"std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~vector()"
 (c++)"std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~vector()"
 (c++)"std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::operator=(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)"
 (c++)"void std::vector<char const*, std::allocator<char const*> >::_M_realloc_insert<char const (&) [128]>(__gnu_cxx::__normal_iterator<char const**, std::vector<char const*, std::allocator<char const*> > >, char const (&) [128])"
 (c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned long, bool)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)"
 (c++)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::forward_iterator_tag)"
 (c++)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)"
 (c++)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux(unsigned long, unsigned long, unsigned long, char)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::swap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize(unsigned long, char)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append(char const*, unsigned long)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned long, unsigned long, char const*, unsigned long)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> >(char const*, std::allocator<char> const&)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> >(char const*, std::allocator<char> const&)"
 (c++)"std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_replace(unsigned long, unsigned long, wchar_t const*, unsigned long)"
 (c++)"std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::resize(unsigned long, wchar_t)"
 (c++)"std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_create(unsigned long&, unsigned long)"
 (c++)"std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_mutate(unsigned long, unsigned long, wchar_t const*, unsigned long)"
 (c++)"std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf()"
 (c++)"std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf()"
 (c++)"std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf()"
 (c++)"void std::_Destroy<std::_Deque_iterator<std::filesystem::__cxx11::path, std::filesystem::__cxx11::path&, std::filesystem::__cxx11::path*> >(std::_Deque_iterator<std::filesystem::__cxx11::path, std::filesystem::__cxx11::path&, std::filesystem::__cxx11::path*>, std::_Deque_iterator<std::filesystem::__cxx11::path, std::filesystem::__cxx11::path&, std::filesystem::__cxx11::path*>)"
 (c++)"void std::_Destroy<std::_Deque_iterator<std::experimental::filesystem::v1::__cxx11::path, std::experimental::filesystem::v1::__cxx11::path&, std::experimental::filesystem::v1::__cxx11::path*> >(std::_Deque_iterator<std::experimental::filesystem::v1::__cxx11::path, std::experimental::filesystem::v1::__cxx11::path&, std::experimental::filesystem::v1::__cxx11::path*>, std::_Deque_iterator<std::experimental::filesystem::v1::__cxx11::path, std::experimental::filesystem::v1::__cxx11::path&, std::experimental::filesystem::v1::__cxx11::path*>)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)"
 (c++)"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
 (c++)"typeinfo for __gnu_cxx::stdio_filebuf<char, std::char_traits<char> >"
 (c++)"typeinfo for std::filesystem::__cxx11::filesystem_error"
 (c++)"typeinfo for std::experimental::filesystem::v1::__cxx11::filesystem_error"
 (c++)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo for std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0>"
 (c++)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo for std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo for std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo for std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo for std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo for std::bad_alloc"
 (c++)"typeinfo for std::exception"
 (c++)"typeinfo name for __gnu_cxx::stdio_filebuf<char, std::char_traits<char> >"
 (c++)"typeinfo name for std::filesystem::__cxx11::filesystem_error"
 (c++)"typeinfo name for std::experimental::filesystem::v1::__cxx11::filesystem_error"
 (c++)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo name for std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0>"
 (c++)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo name for std::_Sp_make_shared_tag"
 (c++)"typeinfo name for std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo name for std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo name for std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo name for std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"typeinfo name for std::bad_alloc"
 (c++)"typeinfo name for std::exception"
 (c++)"vtable for __gnu_cxx::stdio_filebuf<char, std::char_traits<char> >"
 (c++)"vtable for std::filesystem::__cxx11::filesystem_error"
 (c++)"vtable for std::experimental::filesystem::v1::__cxx11::filesystem_error"
 (c++)"vtable for std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0>"
 (c++)"vtable for std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::filesystem::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"vtable for std::_Sp_counted_ptr_inplace<std::filesystem::__cxx11::_Dir, std::allocator<std::filesystem::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"vtable for std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack, std::allocator<std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::_Dir_stack>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"vtable for std::_Sp_counted_ptr_inplace<std::experimental::filesystem::v1::__cxx11::_Dir, std::allocator<std::experimental::filesystem::v1::__cxx11::_Dir>, (__gnu_cxx::_Lock_policy)2>"
 (c++)"std::_Sp_make_shared_tag::_S_ti()::__tag"
 xrAcquireSwapchainImage
 xrApplyHapticFeedback
 xrAttachSessionActionSets
 xrBeginFrame
 xrBeginSession
 xrCreateAction
 xrCreateActionSet
 xrCreateActionSpace
 xrCreateInstance
 xrCreateReferenceSpace
 xrCreateSession
 xrCreateSwapchain
 xrDestroyAction
 xrDestroyActionSet
 xrDestroyInstance
 xrDestroySession
 xrDestroySpace
 xrDestroySwapchain
 xrEndFrame
 xrEndSession
 xrEnumerateApiLayerProperties
 xrEnumerateBoundSourcesForAction
 xrEnumerateEnvironmentBlendModes
 xrEnumerateInstanceExtensionProperties
 xrEnumerateReferenceSpaces
 xrEnumerateSwapchainFormats
 xrEnumerateSwapchainImages
 xrEnumerateViewConfigurationViews
 xrEnumerateViewConfigurations
 xrGetActionStateBoolean
 xrGetActionStateFloat
 xrGetActionStatePose
 xrGetActionStateVector2f
 xrGetCurrentInteractionProfile
 xrGetInputSourceLocalizedName
 xrGetInstanceProcAddr
 xrGetInstanceProperties
 xrGetReferenceSpaceBoundsRect
 xrGetSystem
 xrGetSystemProperties
 xrGetViewConfigurationProperties
 xrLocateSpace
 xrLocateViews
 xrPathToString
 xrPollEvent
 xrReleaseSwapchainImage
 xrRequestExitSession
 xrResultToString
 xrStopHapticFeedback
 xrStringToPath
 xrStructureTypeToString
 xrSuggestInteractionProfileBindings
 xrSyncActions
 xrWaitFrame
 xrWaitSwapchainImage

messenger callbacks having return values ignored in validation layer

Found with clang-tidy:

OpenXR-SDK-Source/src/api_layers/core_validation.cpp:270:34: warning: Value stored to 'ret_val' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
                        XrBool32 ret_val = messenger_create_info->userCallback(debug_utils_severity,

It's not being used because this call (and many including it) are void return. I think it should at least abort the loop, though.

Fairly low priority.

cc @daveh-lunarg

Linux XCB compat

Hmm. When I pull this into the internal repo with CI, it fails during the xcb-backend build of the exported source. (Don't know why it doesn't fail with the normal source)

FAILED: /usr/bin/c++   -DOPENXR_HAVE_COMMON_CONFIG -DOS_LINUX_XCB_GLX -DXR_OS_LINUX -DXR_USE_GRAPHICS_API_OPENGL -DXR_USE_PLATFORM_XCB -DXR_USE_TIMESPEC -I../src/../include -I../src -Isrc/tests/hello_xr -I../src/common -I../include -Iinclude -I../external/include -fPIE   -Wall -std=gnu++14 -MMD -MT src/tests/hello_xr/CMakeFiles/hello_xr.dir/graphicsplugin_opengl.cpp.o -MF src/tests/hello_xr/CMakeFiles/hello_xr.dir/graphicsplugin_opengl.cpp.o.d -o src/tests/hello_xr/CMakeFiles/hello_xr.dir/graphicsplugin_opengl.cpp.o -c ../src/tests/hello_xr/graphicsplugin_opengl.cpp
In file included from ../src/tests/hello_xr/graphicsplugin_opengl.cpp:9:0:
../src/common/xr_linear.h:24:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic ignored "-Wunused-function"
 ^
../src/tests/hello_xr/graphicsplugin_opengl.cpp: In member function ‘virtual void {anonymous}::OpenGLGraphicsPlugin::InitializeDevice(XrInstance, XrSystemId)’:
../src/tests/hello_xr/graphicsplugin_opengl.cpp:124:55: error: ‘struct ksGpuContext’ has no member named ‘connection’
         m_graphicsBinding.connection = window.context.connection;
                                                       ^
../src/tests/hello_xr/graphicsplugin_opengl.cpp:125:57: error: ‘struct ksGpuContext’ has no member named ‘screenNumber’
         m_graphicsBinding.screenNumber = window.context.screenNumber;
                                                         ^
../src/tests/hello_xr/graphicsplugin_opengl.cpp:126:55: error: ‘struct ksGpuContext’ has no member named ‘fbconfigid’
         m_graphicsBinding.fbconfigid = window.context.fbconfigid;
                                                       ^
../src/tests/hello_xr/graphicsplugin_opengl.cpp:129:55: error: invalid conversion from ‘GLXContext {aka __GLXcontextRec*}’ to ‘xcb_glx_context_t {aka unsigned int}’ [-fpermissive]
         m_graphicsBinding.glxContext = window.context.glxContext;
                                                       ^

I'll dig into it further tomorrow.

Originally posted by @rpavlik in #144 (comment)

SDK won't build using embedded python

The existing SDK CMake code uses python to generate a number of artifacts, but also uses the PYTHONPATH environment variable to ensure that common modules can be loaded.

However, while trying to create an openxr port for vcpkg, I've discovered that vcpkg provides an embedded version of python. Embedded versions of python from version 3.5.1 and on ignore the PYTHONPATH variable and this is apparently by design.

I'm investigating what needs to happen to make the OpenXR build work with either a conventional Python3 installation or an embedded one.

hello_xr VkResult failure

After following these instructions to compile Monado as a runtime for openxr. As I noted there, I used vulkan-devel from the AUR in arch linux. I have gotten the following error when trying to run hello_xr with Vulkan:

VkResult failure [ERROR_EXTENSION_NOT_PRESENT]
    Origin: vkCreateInstance(&instInfo, nullptr, &m_vkInstance)
    Source: /home/sonata/mon/src/OpenXR-SDK/src/tests/hello_xr/graphicsplugin_vulkan.cpp:1154

Using -g openGL

compositor_check_vulkan_caps - Failed to create VkInstance: VK_ERROR_EXTENSION_NOT_PRESENT
XR_ERROR_INITIALIZATION_FAILED in xrCreateSession:  failed create a compositor
[12:21:27.946][Error  ] XrResult failure [-6]
    Origin: xrCreateSession(m_instance, &createInfo, &m_session)
    Source: /home/sonata/programs/git_repos/OpenXR-SDK/src/tests/hello_xr/openxr_program.cpp:367

Also of note is that if I follow the OpenXR build instructions here then when trying to run hello_xr I get a different error:

[12:24:08.306][Error  ] Unsupported graphics API 'Vulkan'

Validation layer: null pointer deref when struct contains handle

In the generated code below, there is no check for non-null value before performing value->actionSet

XrResult ValidateXrStruct(GenValidUsageXrInstanceInfo *instance_info, const std::string &command_name,
                          std::vector<GenValidUsageXrObjectInfo>& objects_info, bool check_members,
                          const XrActiveActionSet* value) {
    XrResult xr_result = XR_SUCCESS;
    // If we are not to check the rest of the members, just return here.
    if (!check_members || XR_SUCCESS != xr_result) {
        return xr_result;
    }
    {
        // writeValidateInlineHandleValidation
        ValidateXrHandleResult handle_result = VerifyXrActionSetHandle(&value->actionSet);
        if (handle_result != VALIDATE_XR_HANDLE_SUCCESS) {
            // Not a valid handle or NULL (which is not valid in this case)
            std::ostringstream oss;
            oss << "Invalid XrActionSet handle \"actionSet\" ";
            oss << HandleToHexString(value->actionSet);
            CoreValidLogMessage(instance_info, "VUID-XrActiveActionSet-actionSet-parameter",
                                VALID_USAGE_DEBUG_SEVERITY_ERROR, command_name,
                                objects_info, oss.str());
            return XR_ERROR_HANDLE_INVALID;
        }
    }
    // Everything checked out properly
    return xr_result;
}

C++ wrapper header a la vulkan.hpp

Tracking issue for an "openxr.hpp"

I've done some work on this related to trying things out with symbol loading and dispatch. It's now pretty good (partially based on the code from Vulkan.hpp, but not sharing generation code), but still has gaps.

Here's the (generated code that I committed) header: https://github.com/rpavlik/OpenXR-SDK-Source/blob/openxr-hpp/include/openxr/openxr.hpp

Generation uses scripts/templates in here: https://github.com/rpavlik/OpenXR-SDK-Source/tree/openxr-hpp/src/scripts

FWIW, the doxygen output for the header is currently actually pretty reasonable.

I should probably split this into a separate repo, but it arose as a bit of a hack so it didn't start from blank.

cc @jherico

Loader breaks on unexpected structure

I think we should be able to pass any kind of struct in to any function on the next chain, at least through the loader, but I can't:

Error [GENERAL | xrCreateInstance | OpenXR-Loader] : VUID-XrInstanceCreateInfo-next-next: unexpected struct in 'next' chain.
Error [GENERAL | xrCreateInstance | OpenXR-Loader] : VUID-xrCreateInstance-info-parameter: something wrong with XrInstanceCreateInfo contents
Error [GENERAL | xrCreateInstance | OpenXR-Loader] : LoaderInstance::CreateInstance chained CreateInstance call failed

This was prompted by this test: https://gitlab.freedesktop.org/monado/utilities/xr-system-tests/blob/master/tests/functions/xrCreateInstance.cpp#L53 which throws an XrActionCreateInfo in the XrInstanceCreateInfo chain.

xrGetInstanceProcAddr fails with null instance getting xrCreateInstance etc

Per the spec, there are 3 functions for which it's legal to call get proc addr with a null instance. If you just use the exported function of xrCreateInstance, you're fine, but if you use xrGetInstanceProcAddr to retrieve that function pointer for some reason, you get:

Error [SPEC | xrGetInstanceProcAddr | VUID-xrGetInstanceProcAddr-instance-parameter] : XR_NULL_HANDLE for instance but query for xrEnumerateInstanceExtensionProperties requires a valid instance
-------------------------------------------------------------------------------
xrGetInstanceProcAddr
       When: providing a null instance
       Then: Request for xrEnumerateInstanceExtensionProperties should succeed
-------------------------------------------------------------------------------
../tests/functions/xrGetInstanceProcAddr.cpp:14
...............................................................................

../tests/functions/xrGetInstanceProcAddr.cpp:15: FAILED:
  REQUIRE( XrResultCode{XR_SUCCESS} == XrResultCode{xrGetInstanceProcAddr(nullptr, "xrEnumerateInstanceExtensionProperties", &pfn)} )
with expansion:
  XR_SUCCESS == XR_ERROR_HANDLE_INVALID

Error [SPEC | xrGetInstanceProcAddr | VUID-xrGetInstanceProcAddr-instance-parameter] : XR_NULL_HANDLE for instance but query for xrEnumerateApiLayerProperties requires a valid instance
-------------------------------------------------------------------------------
xrGetInstanceProcAddr
       When: providing a null instance
       Then: Request for xrEnumerateApiLayerProperties should succeed
-------------------------------------------------------------------------------
../tests/functions/xrGetInstanceProcAddr.cpp:18
...............................................................................

../tests/functions/xrGetInstanceProcAddr.cpp:19: FAILED:
  REQUIRE( XrResultCode{XR_SUCCESS} == XrResultCode{xrGetInstanceProcAddr(nullptr, "xrEnumerateApiLayerProperties", &pfn)} )
with expansion:
  XR_SUCCESS == XR_ERROR_HANDLE_INVALID

Error [SPEC | xrGetInstanceProcAddr | VUID-xrGetInstanceProcAddr-instance-parameter] : XR_NULL_HANDLE for instance but query for xrCreateInstance requires a valid instance
-------------------------------------------------------------------------------
xrGetInstanceProcAddr
       When: providing a null instance
       Then: Request for xrCreateInstance should succeed
-------------------------------------------------------------------------------
../tests/functions/xrGetInstanceProcAddr.cpp:22
...............................................................................

../tests/functions/xrGetInstanceProcAddr.cpp:23: FAILED:
  REQUIRE( XrResultCode{XR_SUCCESS} == XrResultCode{xrGetInstanceProcAddr(nullptr, "xrCreateInstance", &pfn)} )
with expansion:
  XR_SUCCESS == XR_ERROR_HANDLE_INVALID

cc @daveh-lunarg

how to use Extension?

Extension is a library?Or a interface implement by myself.In the document The OpenXR Specification Chapter 12 List of Extensions.These Extensions all ready exist in my system?If all ready exist,where are there?How to use these Extensions all ready exist and how to "develop" myself Extensions ?

VisualStudio should prefer std::filesystem to std::experimental::filesystem

VS has long had a bug with incorrect setting of __cplusplus macro, which causes the loader (and potentially other projects) to select the experimental flavor of std::filesystem. This blog post describes how to force VS2017 to report an accurate __cplusplus value.

The cmake .sln generator should be updated to add the two required compiler switches (/Zc:__cplusplus and /std:c++17)

hello_xr

Hi, i have compiled and installed the SDK, and actually i had installed the headers. When i try to compile the helo_xr example, i get an error from this line(openxr_program.cpp):

#include <common/xr_linear.h>

The paths are rigt, as VSCode get the autocomplete when writing the line.
Should i be missing something?

Deployment story for layers on Windows?

Was working on some CI things, and I realized I don't actually know the deployment story (and thus, a reasonable layout) of the layers on Windows. (for the loader, I just matched the vulkan one which is a mostly-linuxy-layout with "32" suffixes.)

cc @daveh-lunarg

MinGW support

  • No d3d12 on mingw - easy fix, I already have a patch ready.
  • This error, which is a missing cast?
2019-12-10T18:03:11.6315794Z In file included from ../src/loader/api_layer_interface.hpp:28,
2019-12-10T18:03:11.6316889Z                  from ../src/loader/api_layer_interface.cpp:20:
2019-12-10T18:03:11.6317372Z ../src/loader/loader_platform.hpp: In function 'void* LoaderPlatformLibraryGetProcAddr(LoaderPlatformLibraryHandle, const string&)':
2019-12-10T18:03:11.6317824Z ../src/loader/loader_platform.hpp:174:26: error: invalid conversion from 'FARPROC' {aka 'long long int (*)()'} to 'void*' [-fpermissive]
2019-12-10T18:03:11.6329319Z      return GetProcAddress(library, name.c_str());
2019-12-10T18:03:11.6329882Z             ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~

excepción de Microsoft C++: wxr::XrResultException en la ubicación de la memoria 0x0000004B1712EB90.

When running the samples_win32 program, Windows Mixed Reality does not start even though Mixed Reality OpenXR Runtime indicates that it is installed and active.

At the end of the execution it indicates the following error:

Exception produced in 0x00007FFFBE2F9129 in BasicXrApp_win32.exe: Microsoft C ++ exception: wxr :: XrResultException in memory location 0x0000004B1712EB90.

For what is this?
Can you help me?

hello_xr does not find active_runtime.json

I successfully compiled all the repository but had a runtime error when executing hello_xr example:

$ ./hello_xr -g OpenGL
[13:27:19.145][Info   ] Press any key to shutdown...
Error [GENERAL |  | OpenXR-Loader] : RuntimeManifestFile::createIfValid failed to open /usr/local/share/openxr/0/active_runtime.json.  Does it exist?
Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - failed to find a valid runtime
Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed to find default runtime with RuntimeInterface::LoadRuntime()
Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed querying extension properties
[13:27:19.155][Error  ] XrResult failure [-13]
    Origin: xrEnumerateInstanceExtensionProperties(layerName, 0, &instanceExtensionCount, nullptr)
    Source: ../src/tests/hello_xr/openxr_program.cpp:148

It looks that the file /usr/local/share/openxr/0/active_runtime.json is missing on my system.
Is there some hardcoded path somewhere or maybe OpenXR is trying to create the file without access?

Exported symbols from loader

When reviewing the loader docs, I decided to dump the list of exported symbols from the loader, when built as a dynamic library on Windows. More than I expected showed up - in particular, note the first few:

  • _LoaderGenTermXrResultToString@16
  • _LoaderGenTermXrStructureTypeToString@16
  • _LoaderXrTermCreateApiLayerInstance@12
  • _LoaderXrTermCreateDebugUtilsMessengerEXT@16
  • _LoaderXrTermCreateInstance@8
  • _LoaderXrTermDestroyDebugUtilsMessengerEXT@8
  • _LoaderXrTermDestroyInstance@8
  • _LoaderXrTermGetInstanceProcAddr@16
  • _LoaderXrTermSetDebugUtilsObjectNameEXT@12
  • _LoaderXrTermSubmitDebugUtilsMessageEXT@28
  • _xrAcquireSwapchainImage@16
  • _xrApplyHapticFeedback@20
  • _xrBeginFrame@12
  • _xrBeginSession@12
  • _xrConvertTimeToTimespecTimeKHR@20
  • _xrConvertTimeToWin32PerformanceCounterKHR@20
  • _xrConvertTimespecTimeToTimeKHR@16
  • _xrConvertWin32PerformanceCounterToTimeKHR@16
  • _xrCreateAction@16
  • _xrCreateActionSet@16
  • _xrCreateActionSpace@16
  • _xrCreateDebugUtilsMessengerEXT@16
  • _xrCreateInstance@8
  • _xrCreateReferenceSpace@16
  • _xrCreateSession@16
  • _xrCreateSwapchain@16
  • _xrDestroyAction@8
  • _xrDestroyActionSet@8
  • _xrDestroyDebugUtilsMessengerEXT@8
  • _xrDestroyInstance@8
  • _xrDestroySession@8
  • _xrDestroySpace@8
  • _xrDestroySwapchain@8
  • _xrEndFrame@12
  • _xrEndSession@8
  • _xrEnumerateApiLayerProperties@12
  • _xrEnumerateEnvironmentBlendModes@28
  • _xrEnumerateInstanceExtensionProperties@16
  • _xrEnumerateReferenceSpaces@20
  • _xrEnumerateSwapchainFormats@20
  • _xrEnumerateSwapchainImages@20
  • _xrEnumerateViewConfigurationViews@32
  • _xrEnumerateViewConfigurations@28
  • _xrGetActionStateBoolean@20
  • _xrGetActionStatePose@20
  • _xrGetActionStateVector1f@20
  • _xrGetActionStateVector2f@20
  • _xrGetBoundSourcesForAction@20
  • _xrGetCurrentInteractionProfile@20
  • _xrGetD3D10GraphicsRequirementsKHR@20
  • _xrGetD3D11GraphicsRequirementsKHR@20
  • _xrGetD3D12GraphicsRequirementsKHR@20
  • _xrGetInputSourceLocalizedName@36
  • _xrGetInstanceProcAddr@16
  • _xrGetInstanceProperties@12
  • _xrGetOpenGLGraphicsRequirementsKHR@20
  • _xrGetReferenceSpaceBoundsRect@16
  • _xrGetSystem@16
  • _xrGetSystemProperties@20
  • _xrGetViewConfigurationProperties@24
  • _xrGetVisibilityMaskKHR@24
  • _xrGetVulkanDeviceExtensionsKHR@28
  • _xrGetVulkanGraphicsDeviceKHR@24
  • _xrGetVulkanGraphicsRequirementsKHR@20
  • _xrGetVulkanInstanceExtensionsKHR@28
  • _xrLocateSpace@28
  • _xrLocateViews@28
  • _xrPathToString@28
  • _xrPerfSettingsSetPerformanceLevelEXT@16
  • _xrPollEvent@12
  • _xrReleaseSwapchainImage@12
  • _xrResultToString@16
  • _xrSessionBeginDebugUtilsLabelRegionEXT@12
  • _xrSessionEndDebugUtilsLabelRegionEXT@8
  • _xrSessionInsertDebugUtilsLabelEXT@12
  • _xrSetDebugUtilsObjectNameEXT@12
  • _xrSetInteractionProfileSuggestedBindings@12
  • _xrStopHapticFeedback@16
  • _xrStringToPath@16
  • _xrStructureTypeToString@16
  • _xrSubmitDebugUtilsMessageEXT@28
  • _xrSyncActionData@16
  • _xrThermalGetTemperatureTrendEXT@24
  • _xrWaitFrame@16
  • _xrWaitSwapchainImage@12

cc @daveh-lunarg

Error when building on OBS on i686?

This is the error specifically:

[  128s] make[3]: Leaving directory '/usr/src/packages/BUILD/obj-i686-linux-gnu'
[  128s] /usr/src/packages/BUILD/src/common/gfxwrapper_opengl.c:461:24: error: conflicting types for 'glBufferSubData'
[  128s]  PFNGLBUFFERSUBDATAPROC glBufferSubData;
[  128s]                         ^~~~~~~~~~~~~~~
[  128s] In file included from /usr/src/packages/BUILD/src/common/gfxwrapper_opengl.c:1:
[  128s] /usr/src/packages/BUILD/src/common/gfxwrapper_opengl.h:491:34: note: previous declaration of 'glBufferSubData' was here
[  128s]  extern PFNGLBUFFERSUBDATAARBPROC glBufferSubData;
[  128s]                                   ^~~~~~~~~~~~~~~

See https://build.opensuse.org/package/live_build_log/home:rpavlik:monado/openxr-sdk-source/Debian_10/i586

how to set XR_API_LAYER_PATH environmental variable?

My OS is windows,I set XR_API_LAYER_PATH like this

"D:\OpenXR-SDK-Source-master\build\src\tests\loader_test\resources\layers\XrApiLayer_test.json"

bool FileSysUtilsPathExists(const std::string& path) { return (1 == PathFileExistsW(utf8_to_wide(path).c_str())); } return false,I can not load the test apilayer.

And then I set XR_API_LAYER_PATH like this "D:\OpenXR-SDK-Source-master\build\src\tests\loader_test\resources\layers" I get INVALID_HANDLE_VALUE at here

bool FileSysUtilsFindFilesInPath(const std::string& path, std::vector<std::string>& files) {
    WIN32_FIND_DATAW file_data;
    HANDLE file_handle = FindFirstFileW(utf8_to_wide(path).c_str(), &file_data);
    if (file_handle != INVALID_HANDLE_VALUE) {
        do {
            if (!(file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
                files.push_back(wide_to_utf8(file_data.cFileName));
            }
        } while (FindNextFileW(file_handle, &file_data));
        return true;
    }
    return false;
}

the problem is when I pass my path to function "CopyIncludedPaths" ,this function change my path append "\" behind it.What ever I set XR_API_LAYER_PATH environmental variable is a json file path or a directory .And how should I set XR_API_LAYER_PATH environmental variable?

Unable to build SDK

Hi, I'm following the BUILDING.md file and am unable to build the SDK.
(Windows 64-bit, VS 2017)

cmake -G "Visual Studio 15 Win64" ....

-- Could NOT find VulkanHeaders (missing: VulkanHeaders_INCLUDE_DIR)
-- Could NOT find VulkanRegistry (missing: VulkanRegistry_DIR)
-- Could NOT find Vulkan (missing: Vulkan_LIBRARY Vulkan_INCLUDE_DIR)
-- Could NOT find glslc, using precompiled .spv files
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

Verify or fix std::map bracket operator insertions

There are a few instances in the loader code where a std::map is accessed via bracket operator

foo = map[key]

where it appears uncertain whether the key already exists in the map. These should be changed to or guarded by .find() operations, to prevent an inadvertent insertion of the key into the map.

Tracks WG gitlab issue # 943

Linux active runtime search

The draft loader design document (#27) states:

On Linux, the active runtime information is contained inside a JSON-formatted file located under the folder:

/usr/local/share/openxr/<major_api_version>`

I propose a different strategy: select the first openxr/$VERSION/active_runtime.json found by searching first $XDG_CONFIG_HOME, then the elements of $XDG_CONFIG_DIRS, in order. If an environment variable is not set or the process is SUID, the freedesktop.org fallback values are used, unless a more appropriate fallback is specified by the target environment.

This has a number of advantages:

  • Flexibility: a user who wishes to configure a default runtime other than the one configured globally can do so by placing a file in $XDG_CONFIG_HOME/openxr/$VERSION/active_runtime.json without requiring elevated privileges.
  • Convention: /usr/local is not a standard prefix for packages installed through the system's package manager, and runtime packages targeting that location are unlikely to be supported by major distributions. It is also not a standard prefix for administrator-controlled configuration files associated with system infrastructure such as a package-manager-installed OpenXR runtime or loader.
  • Portability: Not all distributions implement the filesystem hierarchy standard. For example, /usr/local does not exist on NixOS, and indeed no NixOS packages may write to /usr at all. Such environments provide XDG environment variables identifying the correct locations, allowing precompiled binaries to Just Work even if they were not specifically targeted to the environment. Such environments can also override the fallback paths in their packaging of the OpenXR loader.

loader test failure

I've been trying to figure out why I persistently get this issue in the loader test:

    Starting TestEnumLayers
        No explicit layers layer count check: Passed: 2 layers available.
        No explicit layers layer props query: Passed
           - XR_APILAYER_LUNARG_api_dump
           - XR_APILAYER_LUNARG_core_validation
        Simple explicit layers layer count check: Failed, expected count 8 (2 seen earlier plus 6 we added), got 6

After enabling more debug output, etc. I discovered that it's actually only enumerating the json files in the XR_API_LAYER_PATH environment var: that is, when XR_API_LAYER_PATH is set, it's not looking in the system environment variable anymore. (This appears to be correct according to the loader spec, anyway.)

Is this actually a bug in the test?

Fix loader tests

It looks like there are some loader tests but they definitely aren't being run right now. This should be resolved.

C# support

I am trying to figure out how to use the SDK in a C# project, however, it doesn't look like the pre-built DLLs support C# (i.e. they cannot be added as a reference to a C# project).

There also isn't any included .cs wrapper file that declares the DLLImports for the various functions.

Is this something that will be added at some point? Or am I missing some easy way to get this to work with my C# project?

Thanks!

Validation layer: fall through/loss of error in two-call idiom

The generated code for two-call idiom calls is producing a static analysis warning "Value stored to 'xr_result' is never read". which is because it's just falling through after setting xr_result instead of returning it or otherwise accumulating the error.

The code in question looks like:

        // Optional array must be non-NULL when viewCapacityInput is non-zero
        if (0 != viewCapacityInput && nullptr == views) {
            CoreValidLogMessage(gen_instance_info, "VUID-xrEnumerateViewConfigurationViews-views-parameter",
                                VALID_USAGE_DEBUG_SEVERITY_ERROR, "xrEnumerateViewConfigurationViews",
                                objects_info,
                                "Command xrEnumerateViewConfigurationViews param views is NULL, but viewCapacityInput is greater than 0");
            xr_result = XR_ERROR_VALIDATION_FAILURE;
        }
        // Non-optional pointer/array variable that needs to not be NULL
        if (nullptr == viewCountOutput) {
            CoreValidLogMessage(gen_instance_info, "VUID-xrEnumerateViewConfigurationViews-viewCountOutput-parameter",
                                VALID_USAGE_DEBUG_SEVERITY_ERROR, "xrEnumerateViewConfigurationViews", objects_info,
                                "Invalid NULL for uint32_t \"viewCountOutput\" which is not "
                                "optional and must be non-NULL");
            return XR_ERROR_VALIDATION_FAILURE;
        }

This is also triggering a later null dereference, when e.g. in the GenValidUsageInputsXrEnumerateSwapchainImages function, that warning is printed, but then we go through to iterate the null container, etc.

Child handles not destroyed on parent destruction

I wrote some test utilities that register a debug utils messenger to provide extra info. I don't keep it around because I was relying on the "parent handle destruction implies child handle destruction" behavior, but it appears that's not the case, at least for this handle type.

As a demonstration, I have a static uintptr_t variable in the function that creates and registers the debug messenger, which gets incremented with each call and is passed as the userData parameter. My callback then prints the userdata param (cast back to an integer) at the beginning of the line. After a few test cycles, here's some sample output showing all 21 debug messengers are still active.

1 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
2 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
3 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
4 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
5 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
6 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
7 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
8 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
9 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
10 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
11 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
12 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
13 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
14 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
15 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
16 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
17 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
18 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
19 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
20 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline
21 [G  ][Verbose][OpenXR-Loader       ][xrDestroyInstance               ] Completed loader trampoline

CMake warning in FindVulkanHeaders.cmake

 CMake Warning (dev) at /usr/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:272 (message):
  The package name passed to `find_package_handle_standard_args`
  (VulkanRegistry) does not match the name of the calling package
  (VulkanHeaders).  This can lead to problems in calling code that expects
  `find_package` result variables (e.g., `_FOUND`) to follow a certain
  pattern.
Call Stack (most recent call first):
  src/cmake/FindVulkanHeaders.cmake:84 (find_package_handle_standard_args)
  src/CMakeLists.txt:39 (find_package)

Need CI

We need 64-bit and 32-bit CI. We can do AppVeyor for 32-bit Windows CI, same basic layout as internal, but for main/Linux CI we'll need to set up something else (travis?)

Opening this mostly as a reminder to self, though anyone is welcome to set it up first and beat me to it :)

cc @outofcontrol @daveh-lunarg

Which MSVC CRT to use?

I've seen some concerns (including my own) about the current CRT choice on MSVC for the loader:

  • If built as static lib (default on Windows), the dynamic CRT is used.
  • If build as a DLL (non-default, and possibly not tested because I'm pretty sure the header is missing some dllimport and/or manually import getinstanceprocaddr and build your own dispatch table), the static CRT is used

(see for example https://github.com/microsoft/vcpkg/blob/master/ports/openxr-loader/portfile.cmake#L22 )

Can anyone fill me in (and possibly the docs) on what the rationale is for this behavior? Does it make sense to change it, or allow it to be configurable?

API dump layer breaks hello_xr on Linux

I'm using release 1.0.6 installed on Debian Buster, with some monado build set as active runtime. Running hello_xr -g vulkan on its own works fine. It also works fine if I set XR_ENABLE_API_LAYERS to XR_APILAYER_LUNARG_core_validation. However. if I set that same variable to XR_APILAYER_LUNARG_api_dump, the application quits immediately. Here is the log:
newlog.txt

cc @Wallbraker

Loader should not use C++ exceptions

The existing loader code includes C++ exceptions as a part of it's error handling. OpenXR nominally follows the Google C++ style guide, which weakly prohibits use of exceptions.

In order to maintain widest possible compatibility, including with other projects which follow the Google style guide, the exception handling code should be removed from the loader.

This public issue is to track resolution of the same topic in the OpenXR WG, issue 974.

Validation layer for xrEnumerateViewConfigurations incorrectly applies validation to the output buffer

xrEnumerateViewConfigurations is a two-call-idiom function. A simplified example of using it is....

    uint32_t viewConfigurationTypeCountOutput = 0;
    uint32_t viewConfigurationTypeCapacityInput = 0;
    xrEnumerateViewConfigurations(instance, systemId,  viewConfigurationTypeCapacityInput, &viewConfigurationTypeCountOutput, nullptr));
    std::vector<XrViewConfigurationType> output;
    output.resize(viewConfigurationTypeCountOutput);
    viewConfigurationTypeCapacityInput = viewConfigurationTypeCountOutput;
    result = xrEnumerateViewConfigurations(instance, systemId,  viewConfigurationTypeCapacityInput, &viewConfigurationTypeCountOutput, output.data()));

However, this code is triggering a validation error, because the validation logic is trying to verify that the contents of the output buffer are valid enums before the call to the implementation. However, calling output.resize() here default initializes the new values to 0, which is not one of the valid XrViewConfigurationType enums.

While it may be reasonable to check the structure type and chain information for output buffers that return extensible structures, it's not reasonable to check other members, or in the case of enums like this to check the enum value for an output buffer. That data is specifically intended to be overwritten.

xrCreateInstance failed when requesting XR_EXT_debug_util extension

the loader added XR_EXT_debug_util extension to the list of runtime supported extensions when app is calling xrEnumerateSupportedExtensions function.

However, when app call xrCreateInstance, the loader didn't remove "XR_EXT_debug_util" extension from the creation info, and runtime get this extension in the list. If the runtime didn't implement this extension, (which it typically won't because loader already did this), then xrCreateInstance will fail.

Expectation is when a layer (in this case the loader) inserted an additional extension to the extension support list, it should remove this item in the xrCreateInstance call so the lower layer get what it actually supports.

There should be a CMake generated `install` target

The CMake build files should include install directives. Install directives will allow easier integration with package managers like vcpkg. Without install directives, a configuration file for vcpkg would have to account for the potential differences in output locations for build artifacts produced by different build systems. For instance, Ninja will place output in the build directory in src/loader/openxr_loader-0_90.lib while MSVC may place it in src/loader/Release/openxr_loader-0_90.lib. Packaging tools like vcpkg then have to account for all possible locations or artificially constrain the allowed tools for building.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.