Commit Graph

1949 Commits

Author SHA1 Message Date
Stephan Seitz
cf70eb8efb
fix: add support for C++20 modules for CMake 3.27.0/3.27.1 (#1632)
When using VULKAN_HPP_ENABLE_EXPERIMENTAL_CPP20_MODULES=ON with CMake 3.27.0 or 3.27.1,
you will get a very confusing error message:
```
CMake Error at CMakeLists.txt:346 (target_sources):
  target_sources File set TYPE may only be "HEADERS"
```

This is because the value of `CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API`
is not update to the correct value, disabling all experimental CMake
features.

This PR adds the value for 3.27.X and triggers an error for higher CMake
versions where this feature needs to be revised and
CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API if the feature is still
experimental.

The error message will look similar to this one (simulated for CMake
3.27.1)
```
CMake Error at CMakeLists.txt:30 (message):
  VULKAN_HPP_ENABLE_EXPERIMENTAL_CPP20_MODULES is currently not supported for
  CMake version 3.27.1! To add support inform yourself about the state of the
  feature at
  https://github.com/Kitware/CMake/blob/master/Help/dev/experimental.rst and
  add the corresponding value of CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API to
  Vulkan-Hpp's CMakeLists.txt
```
2023-08-07 08:56:36 +02:00
github-actions[bot]
68052d9343
Update Vulkan-Headers to v1.3.260 (#1629)
Co-authored-by: GitHub <noreply@github.com>
2023-07-31 13:37:47 +02:00
Andreas Süßenbach
b988e54dad
Sort constants by feature and extension. (#1628) 2023-07-26 22:12:40 +02:00
Andreas Süßenbach
24045ff3f4
Add support of alias'ed enums for IndexType/CppType traits generation (#1627) 2023-07-26 10:17:13 +02:00
github-actions[bot]
48b4b6f985
Update Vulkan-Headers to v1.3.259 (#1626)
Co-authored-by: GitHub <noreply@github.com>
2023-07-24 10:39:52 +02:00
Codotaku
ce1aacec06
Update utils.cpp (#1625) 2023-07-19 15:33:22 +02:00
Andreas Süßenbach
d8cd233010
Update in README.md (#1624) 2023-07-19 11:39:48 +02:00
Andreas Süßenbach
99027b5a24
Changed calls to std::map<>::find() to std::map<>::contains(), when appropriate. (#1623) 2023-07-17 09:48:44 +02:00
Andreas Süßenbach
207031caa4
change calls to std::find, std::find_if, and std::find_if_not to functionally identical calls to std::any_of, std::all_of, and std::none_of, when appropriate (#1621) 2023-07-13 11:26:01 +02:00
Andreas Süßenbach
069c3b875e
Introduce VideoHppGenerator. (#1618) 2023-07-11 15:39:17 +02:00
github-actions[bot]
23d6bf01e2
Update Vulkan-Headers to v1.3.257 (#1617)
Co-authored-by: GitHub <noreply@github.com>
2023-07-10 11:45:53 +02:00
Sharadh Rajaraman
f4abba455e
Bug fixes for vulkan.cppm (#1616)
* Bug fixes for C++20 module

- Removed nested `export` keyword for `vk::raii` namespace in C++ module file
- Fixed macro in `vulkan.cppm` for `vk::DynamicLoader`: changed from `VULKAN_HPP_DYNAMIC_LOADER_TOOL` to `VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL`  
- Moved VulkanHppModule declaration before generator
- Fixed `CMakeLists.txt` for `Cpp20Modules` executable target

* Use `VULKAN_HPP_CONSTEXPR_INLINE` for constants in `vulkan.hpp`

- Added VULKAN_HPP_CONSTEXPR_INLINE macro definition
- Allow external linkage for these constants in C++17 and later
2023-07-10 08:46:50 +02:00
Andreas Süßenbach
7a4ee5eaaf
Moved check on enum aliases from readTypeEnum to checkEnumCorrectness. (#1613) 2023-07-04 13:53:21 +02:00
Andreas Süßenbach
d748663707
Undef True/False in case they are defined and introduce some constexpr True/False to replace them. (#1610) 2023-07-03 14:34:21 +02:00
github-actions[bot]
c115fd1ec6
Update Vulkan-Headers to v1.3.256 (#1609)
Co-authored-by: GitHub <noreply@github.com>
2023-07-03 12:07:37 +02:00
Andreas Süßenbach
2613539ff4
Change move assignment operators of vk::raii handles from using std::exchange to using std::swap (#1607) 2023-06-28 17:03:08 +02:00
Sharadh Rajaraman
6c1996f068
Add C++20 module interface file and tests (#1582)
* feat: exported vk::raii types in vulkan.ixx, with a small test

* feat: *almost* complete vulkan.ixx; missing functions in vulkan_funcs.hpp and constexpr auto defines

* Exported free functions in `vulkan_funcs.hpp` in `vulkan.ixx`

* Completed vulkan.ixx

Exported all types, structs, functions; need to handle anonymous namespace and getDispatchLoaderStatic()

* Moved `vk::anon-namespace::throwResultException` to `vk::detail::throwResultException` to solve linking errors

* Made `vk::getDispatchLoaderStatic` not `static`

`static`in namespace/global scope has to do with internal/external linkage, and not lifetime

* Fixed debug assert fail in `generateCppModuleStructUsings`

* Removed references to `.cppm`

* Formatting and versioning changes

- CMake version handling simplified
- vulkan.ixx includes new structs from new versions
- vulkan.hpp and vulkan_raii.hpp reformatted with clang-format 14

* Removed extraneous includes

- std::optional -> std::string::empty
- std::filesystem was unused

* Fixed constexpr function and value generation
- 'c' prefix removed
- Constants casing fixed
- Types for constants fixed
- Constants assigned to macros
- Ordering of constants and consteval functions fixed

* Moved constexprs to `vulkan.hpp`

- Added corresponding `using` statements to `vulkan.ixx`
- Changed `consteval auto(auto)` functions into templated SFINAE `constexpr` functions

* Formatting, signposting, misc fixes

- Added newlines around macro guards
- Added signposting comments for relevant groups of `using`-statements in `vulkan.ixx`
- Guarded createInstanceUnique with macro guard
- Use m_handles.at("").commands for Funcs

* Changed module file extension to `.cppm`

- It follows the rest of the project convention; `ixx` looks really weird next to `.hpp` and `.cpp`
- CMake transparently handles any extension anyway

* Added `VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE` to `vulkan.cppm`

* Added format traits and extension inspections

- Straightforward, since everything is hard-coded

* Added documentation about Vulkan-Hpp C++ module

- Compiler requirements
- CMake compilation
- Command-line examples

* Added vulkan_hash.hpp

- No need for `using`, since all declarations are template specialisations of existing `std` objects

* Documentation and comment fixes

- Removed extraneous CMake version comments
- Documentation about default dynamic dispatcher with the module
- Comment updates in the source code

* Moved constexpr defines and using statements 

- Moved to after resultUsings in both vulkan.hpp and vulkan.cppm
- Also split up constexprDefinesAndUsings
- Used const_cast for constexprDefines()

* Used std::string instead of std::stringstream

- Some changes also in previous commit
- Also removed overly-clever ranges algorithms

* Simplified protection generation

- Removed `generateNotProtection`
- Added optional `bool` parameter to `generateProtection` for `#if !defined( ... )`

* Simplified Cpp20Modules CMakeLists

- Made C++ standard and libraries into parameters
- Removed FindVulkan call; already done

* `constexpr` generation fixed

- Made all generating functions `const`
- Removed typos and extra comments
- Extracted out filtering functionality into separate functions

* Simplified defines partition generation

- Added `DefinesPartition` struct as a member variable
- Added non-const function to write to the above in `readTypeDefines`
- Removed previous implementation that made many copies

* Added `generateUsingsAndProtection` lambda to RAII name generation

* Moved around `partitionDefines` to make more sense

- called once at the end of the constructor
- edited comments

* Updated headers to 1.3.255

* Removed std::ranges and ranges view adaptors

- CI isn't passing with them

* Fixed constexpr functions for C++11 and C++14

- Removed `enable_if_t` and `is_integral_v` 
- Changed `auto` return type into `uint32_t`

---------

Co-authored-by: Sharadh Rajaraman <r.sharadh@yahoo.com.sg>
2023-06-28 14:10:51 +02:00
Andreas Süßenbach
5d8c550b0d
Mark vk::ResultValue::asTuple() & as deprecated, introduce vk::ResultValue::asTuple() && (#1605) 2023-06-27 11:31:29 +02:00
github-actions[bot]
3d95b910da
Update Vulkan-Headers to v1.3.255 (#1604)
Co-authored-by: GitHub <noreply@github.com>
2023-06-26 14:12:49 +02:00
Andreas Süßenbach
389d1250cd
Add specializations of std::tuple_element and std::tuple_size for vk::StructureChain. (#1602) 2023-06-22 14:02:39 +02:00
Andreas Süßenbach
13808e5875
Introduce operator==() and operator!=() to compare vk-handles with nullptr. (#1600) 2023-06-22 09:07:26 +02:00
Andreas Süßenbach
98d2b53258
Fix some formatting. (#1599) 2023-06-21 13:33:29 +02:00
Andreas Süßenbach
e8eac44fe1
Update StructureChain.cpp 2023-06-21 09:19:40 +02:00
Andreas Süßenbach
50c537eb91
Update StructureChain.hpp 2023-06-21 09:17:06 +02:00
Andreas Süßenbach
397ffad84a
Fix defines in workflow files to enable compilation of tests and samples in CI. (#1595) 2023-06-20 14:43:35 +02:00
Andreas Süßenbach
9f89f760a6
Update Vulkan-Headers to v1.3.254 (#1596) 2023-06-19 15:02:19 +02:00
Andreas Süßenbach
c55cf16397
Fix wrong usage of 'structureChains' in generating functions returning a StructureChain and a vector of data. (#1594) 2023-06-19 12:46:04 +02:00
Andreas Süßenbach
babfbddf32
Add support for new element <sync> in vk.xml (#1590)
That element tree is just parsed and some checks are done.
2023-06-13 14:25:23 +02:00
Andreas Süßenbach
bc19e479f9
Fix determination of StructureChainAllocater usage for returned parameters. (#1591) 2023-06-13 14:24:10 +02:00
GitHub
0ab2f4a18a Update Vulkan-Headers to v1.3.253 2023-06-11 16:53:55 +02:00
GitHub
18bce4a642 Update Vulkan-Headers to v1.3.252 2023-06-03 05:57:43 -07:00
GitHub
9c3fb4f8df Update Vulkan-Headers to v1.3.251 2023-05-30 02:36:42 -07:00
riven
763e1f913e
Update vk_raii_ProgrammingGuide.md (#1581)
fixed typo (CommanPool -> CommandPool)
2023-05-25 13:46:38 +02:00
Andreas Süßenbach
523491a7df
Extent extension dependency inspection to allow multiple sets of dependencies per version. (#1578) 2023-05-17 10:23:27 +02:00
Andreas Süßenbach
40e76b7c24
Cleanup in CMakeLists.txt (#1572) 2023-05-08 11:54:57 +02:00
github-actions[bot]
d4d0ac4859
Update Vulkan-Headers to v1.3.250 (#1574)
Co-authored-by: GitHub <noreply@github.com>
2023-05-08 11:07:25 +02:00
Andreas Süßenbach
f618b6bd5d
Cleanup work on enum value handling. (#1573) 2023-05-04 13:35:50 +02:00
Michael Ferrari
3a1d6cbcab
Expose the dispatch member of deleters (#1569) 2023-05-03 12:03:28 +02:00
github-actions[bot]
4e3e3e026d
Update Vulkan-Headers to v1.3.249 (#1571)
Co-authored-by: GitHub <noreply@github.com>
2023-05-02 13:31:35 +02:00
Andreas Süßenbach
f25639bd17
Cleanup in CMakeLists.txt (#1566) 2023-04-27 16:16:10 +02:00
Andreas Süßenbach
6bf5c311b2
Add support for a new class of functions (#1570)
plus refactor returnType generation
2023-04-26 10:56:57 +02:00
Andreas Süßenbach
95c622a64f
Extend support of some special type of functions. (#1567) 2023-04-24 18:06:06 +02:00
github-actions[bot]
f06c4aa1d3
Update Vulkan-Headers to v1.3.248 (#1565)
Co-authored-by: GitHub <noreply@github.com>
2023-04-24 11:04:14 +02:00
Andreas Süßenbach
e1d6ec8abf
Cleanup up on CMakeLists.txt (#1564) 2023-04-20 16:50:26 +02:00
Andreas Süßenbach
20cb37e39f
Add support of new extension attribute "ratified". (#1563) 2023-04-17 13:51:24 +02:00
Andreas Süßenbach
698dea9e50
Add some words on the new extension inspection functions to the README.md. (#1562) 2023-04-17 13:25:41 +02:00
github-actions[bot]
3bcbb39802
Update Vulkan-Headers to v1.3.247 (#1560)
Co-authored-by: GitHub <noreply@github.com>
2023-04-17 11:55:11 +02:00
Andreas Süßenbach
3427b0039b
Introduce overload of getExtensionDepends to get availability and dependencies by vulkan version. (#1559) 2023-04-12 11:48:59 +02:00
Andreas Süßenbach
9de0959474
Introduce extension inspection function vk::getExtensionDepends. (#1558) 2023-04-11 17:49:02 +02:00
Andreas Süßenbach
d1d80ae723
Introduce extension inspection functions get[Device|Instance|Deprecated|Promoted|Obsoleted]Extension; renamed some of the previous extension inspection functions (#1556) 2023-04-11 09:14:50 +02:00