Commit Graph

1855 Commits

Author SHA1 Message Date
Andreas Süßenbach
a6b2199409 Change samples from resetting command buffers to resetting command pool (#1638) 2023-08-14 16:09:11 +02:00
Andreas Süßenbach
e2f5348e28 Relax check on "depends" for extension requires. (#1637) 2023-08-10 10:35:19 +02:00
Andreas Süßenbach
87936f9bc8 Resolve a validation layer warnings on destruction order of Image/Buffer and bound DeviceMemory. (#1636) 2023-08-08 13:40:56 +02:00
Andreas Süßenbach
0e3e8967be Extend the depends-handling in readExtension. (#1635) 2023-08-07 13:34:43 +02:00
Andreas Süßenbach
4bc9d80d82 Fix validation layer warning on minImageCount of 2. (#1634) 2023-08-07 12:00:11 +02:00
github-actions[bot]
3d27c1736a Update Vulkan-Headers to v1.3.261 (#1633)
Co-authored-by: GitHub <noreply@github.com>
2023-08-07 10:44:04 +02:00
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