* stage 1: added shared handles and all traits
* moved deleter to the shared part, now Shared handle weights 2 pointers
* Fixed Destroy Function
* generated headers
* At least no errors.
TODO: get image overload of shared handle back
make an example
* fixed all SFINAE issues, moved image specialization
* Added a sample
* made better example, added specialization for swapchain, added shared handles to readme
* Major update:
Fixed all wishes
Made std::shared_ptr do heavy lifting
Reduced code complexity
Added ParentType to basic handles
Added put and put_native for cross-abi usage
* more readme
* safer release()
removed put() for now
* better synchronization
inspired by STL shared_ptr implementation
* removed test shared pointer
* added forward type for better interop with VMA
added parent checking
* fixed getParent()
* added non-deleting overloads for Queue, DisplayKHR and PhysicalDevice
* Shared non-destoyed type now have handles
* using constructors are made to comply standard
* fixed leak
* shared handles migrated to own header,
made module entries
* header is independent now
* rebased repo, updated the example
* fixed most of the stuff
* renamed parent of, added guide to make shared handles
* vulkansc
* moved destructor to shared handle traits
* resolved issues with CI
* more relaxed memory ordering for release operation
* trying to remove submodule
* renamed to destructorType
* suppressed function cast warning
* only GCC should be affected
* Make C++20 modules work with the defaultDispatchLoaderDynamic.
* Add vulkan_hpp_macros.hpp to list of installed files.
* Adjust the text on module in the readme.
* Rename module from vulkan to vulkan_hpp
* Adjust some comments.
* Add a little disclaimer to vulkan.cppm.
* 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
* 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>
There's a little known C language family feature, which makes it
possible to take a pointer or reference to an array with size. Use this
feature to add constructors to ArrayProxy and ArrayProxyNoTemporaries
which can wrap raw arrays and deduce their size automatically.
Vulkan handles are not typesafe on 32-bit platforms, but only for
non-dispachable handles. Dispatchable handles are opaque struct pointers
on all platforms, and thus typesafe.
This commit makes all conversions for dispatchable handles implicit,
regardless of VULKAN_HPP_TYPESAFE_CONVERSION setting.