Commit Graph

103 Commits

Author SHA1 Message Date
Andreas Süßenbach
7b8f30221a
Extend not on module usage with Visual Studio. (#1684) 2023-10-09 13:37:36 +02:00
Andreas Süßenbach
18e912955e
Add some note in README.md, that our modules are not working with VS 2022. (#1683) 2023-10-09 11:56:47 +02:00
Ilya Doroshenko
5d0d3b7bd9
Shared Handles (#1619)
* 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
2023-09-19 13:04:36 +02:00
Andreas Süßenbach
d4704cce01
Make C++20 modules work with the defaultDispatchLoaderDynamic. (#1651)
* 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.
2023-09-07 15:20:10 +02:00
Andreas Süßenbach
d8cd233010
Update in README.md (#1624) 2023-07-19 11:39:48 +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
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
698dea9e50
Add some words on the new extension inspection functions to the README.md. (#1562) 2023-04-17 13:25:41 +02:00
Mengna Li
1a8eb08de9
Add vcpkg installation instructions 2022-09-14 15:21:10 +08:00
asuessenbach
e8bf9bed9a Move all the static_assertions from vulkan_handles.hpp and vulkan_structs.hpp into the new header vulkan_static_assertions.hpp 2022-08-03 11:53:57 +02:00
asuessenbach
781061410c Introduce VulkanHpp.natvis to nicely format vk::Flags in Visual Studio debugger. 2022-08-03 08:18:07 +02:00
asuessenbach
3aae157e5b Move the vk::to_string functions into a separate header vulkan_to_string.hpp. 2022-07-26 11:19:42 +02:00
asuessenbach
527e52a1bd Introduce VULKAN_HPP_NO_TO_STRING to optionally remove the various vk::to_string functions.
Also extend the samples to hold some local version of the needed to_string functions in case VULKAN_HPP_NO_TO_STRING is defined.
2022-07-25 17:11:30 +02:00
Jinesi Yelizati
e1531c432a
docs(readme): fix code snippet in error handling example 2022-06-07 17:05:52 +08:00
asuessenbach
f9ad86aef8 Remove deprecated implicit-cast operators on vk::ResultValue. 2022-05-03 09:47:58 +02:00
Andreas Süßenbach
828ac8e246
Merge pull request #1288 from phantom10111/array-proxy-with-raw-arrays
Add ArrayProxy constructors with support for raw array with size
2022-04-19 17:38:31 +02:00
phantom10111
5df998c0d6 Add ArrayProxy constructors with support for raw array with size
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.
2022-04-19 11:49:09 +02:00
phantom10111
9e95c0072d Make type conversions implicit for dispatchable handles
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.
2022-04-15 11:24:30 +02:00
Simon Aittamaa
c0c4b32d02
Update README.md
Fix invalid markdown.
2022-04-08 11:18:43 +02:00
asuessenbach
1c39502170 Extract trait functions on vk::Format into the additional header vulkan_format_traits.hpp. 2022-02-21 10:11:25 +01:00
asuessenbach
3e1e23914e Hide functions reflect() behind VULKAN_HPP_USE_REFLECT. 2022-02-17 09:53:32 +01:00
asuessenbach
815afe1f70 Introduce trait function componentName() and componentNumericFormat() on vk::Format. 2022-02-15 14:47:38 +01:00
asuessenbach
c25e890527 Remove support of all functions marked as deprecated. 2022-02-07 10:09:46 +01:00
asuessenbach
0331bc01b3 Fix two typos in Readme.md 2022-01-18 12:22:34 +01:00
asuessenbach
cdb64cdefd Generate std::hash specializations into the new file vulkan_hash.hpp, requiring C++14 for std::hash specializations of the vulkan structures. 2021-12-13 17:00:00 +01:00
asuessenbach
3515c720fc Introduce support of std::hash for vk-structures. 2021-12-02 23:28:26 +01:00
asuessenbach
5d5182ce70 Introduce a couple of trait functions on vk::Format. 2021-11-29 10:00:19 +01:00
asuessenbach
bf73d74aa9 Remove deprecated versions of function PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR 2021-11-16 13:29:50 +01:00
Stefan
dc6858d193
Slightly simplified setup instructions
On one hand the erradication of a step simplifies the whole procedure, on the other removing the non-functional `-G` template will allow simply copy & pasting the entire command without any need for modifications since `-G` isn't explicitely required most of the time.
2021-11-12 03:08:52 +01:00
David Neto
938d9e60e0 Use and recommend clang-format-11, not clang-format-10
Also:
- Fix the numbered list formatting in the README.md
- Describe the -DVULKAN_HPP_RUN_GENERATOR=ON option

Fixes: #1116
2021-10-25 12:45:39 -04:00
asuessenbach
a8a9e0271c Extend description for define VULKAN_HPP_DISABLE_ENHANCED_MODE in Readme.md. 2021-10-25 13:51:22 +02:00
asuessenbach
c3f32b8538 Introduce constructors on nullptr_t for the RAII handle classes. 2021-10-11 17:49:13 +02:00
asuessenbach
dea1345852 Introduce VULKAN_HPP_STATIC_ASSERT. 2021-09-07 13:47:18 +02:00
Ali Emre Gülcü
de85e5396b Fix a typo on README.md 2021-09-06 11:43:28 +03:00
Hannes Harnisch
41fea04504 Updating configuration info in README.md 2021-07-05 16:17:13 +02:00
asuessenbach
9fbd3e3552 Introduce VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS 2021-06-17 17:11:12 +02:00
Mehmet Oguz Derin
5fe7d29f90 Fix a typo in README.md
This commit replaces `excactly` with `exactly` as a typo fix.
2021-05-25 11:30:00 +02:00
asuessenbach
2cb1c19c7f Introduce raii-compliant handle wrapper classes. 2021-02-22 16:19:12 +01:00
asuessenbach
f06269c13c Correct documentation on DispatchLoaderDynamic 2021-02-01 12:28:36 +01:00
Arpit Agarwal
c848f0e6e8
Update Vookoo introduction article link 2021-01-28 19:48:15 -05:00
asuessenbach
3a6b80f916 Mention connection of VULKAN_HPP_STORAGE_API and VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE in the README.md 2021-01-28 09:23:14 +01:00
asuessenbach
376dd7aff3 Guard definition of VULKAN_HPP_STORAGE_API by an if !defined(); extend internal support to gcc and clang.
+ mention that define in the README.md
2021-01-14 14:32:01 +01:00
asuessenbach
983c8795e6 Introduce configuration flag VULKAN_HPP_FLAGS_MASK_TYPE_AS_PUBLIC. 2021-01-12 10:04:13 +01:00
asuessenbach
28422de041 Introduce VULKAN_HPP_NO_SPACESHIP_OPERATOR to disable operator<=>() for all structs and classes. 2020-11-17 15:31:13 +01:00
asuessenbach
a8c15596da Add section on deprecated elements to README.md. 2020-10-28 13:54:53 +01:00
asuessenbach
0783f19332 Add some words on the type traits provided by vulkan.hpp 2020-10-08 11:49:01 +02:00
asuessenbach
2a5d8f9dd9 Add list of all defines used to configure vulkan.hpp to README.md 2020-08-26 11:32:53 +02:00
asuessenbach
ee389e42e3 Introduce VULKAN_HPP_NO_DEFAULT_DISPATCHER to not have a default argument for the last argument of each function. 2020-08-13 16:46:42 +02:00
Markus Tavenrath
6f4e1e41a7 Add documentation on how to build the generator, tests, and samples. 2020-08-13 11:38:21 +02:00
Martin Hammerchmidt
67cedbb531
Update README.md 2020-08-10 11:04:26 +02:00