Commit Graph

378 Commits

Author SHA1 Message Date
Charles Giessen
c9d94287a5 Add enable_features_if_present to PhysicalDevice
Allows users to enable features if they are present, getting back a bool
telling them whether the feature is supported and will be enabled on the
device.

Also:
* Removes redundant VkPhysicalDeviceFeatures2 struct in vkb::PhysicalDevice.
* Adds test copying of details when creating a VkDevice so that test can check
what features were actually enabled on the device.
* Creates GenericFeatureChain struct for managing pNext chains.
* Allow multiple calls to set_require_features by combining the fields
2024-04-26 16:02:25 -06:00
Charles Giessen
a78a7f38da Assert that set_required_features sTypes are set
This allows the set_required_features_11/12/13 to take a reference instead
of a value. Applications should set the sType, vk-bootstrap shouldn't be
doing that for apps.
2024-04-26 16:02:25 -06:00
Charles Giessen
e186301249 Fix getting started docs using pointer instead of reference
add_required_extension_features takes a reference now, but the docs
indicated it took a pointer.
2024-04-26 16:02:25 -06:00
charles-lunarg
50b75222b2 Update to latest Vulkan-Headers 2024-04-23 09:46:43 -06:00
charles-lunarg
9f816ac215 Update to latest Vulkan-Headers 2024-04-15 18:55:24 -06:00
Charles Giessen
99e51d782e Enable PIC dependent on BUILD_SHARED_LIBS
While vk-bootstrap is a static library, it needs to have PIC enabled
if BUILD_SHARED_LIBS is on so it can work with shared libraries.
2024-03-27 11:32:16 -05:00
charles-lunarg
a5950c0700 Update to latest Vulkan-Headers 2024-03-27 10:55:52 -05:00
charles-lunarg
01ef3217f7 Update to latest Vulkan-Headers 2024-03-11 21:21:29 -06:00
dependabot[bot]
66ffbb23bd Bump peter-evans/create-pull-request from 4 to 6
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 6.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v6)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-06 13:05:48 -07:00
dependabot[bot]
30d294136d Bump actions/setup-python from 2 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-06 13:04:49 -07:00
Charles Giessen
72f45a22e2
Fix dependabot.yml to specify package-ecosystem as github-actions 2024-03-06 10:50:03 -07:00
Charles Giessen
50151234f5
Create dependabot.yml
Add depdendabot for updating actions automatically.
2024-03-06 10:45:24 -07:00
charles-lunarg
ac974854e6 Update to latest Vulkan-Headers 2024-03-06 10:37:43 -07:00
charles-lunarg
534e8bb76c Update to latest Vulkan-Headers 2024-02-20 10:07:48 -06:00
Charles Giessen
8d61e51c8c Fix dropped index in getting_started document 2024-02-14 14:26:04 -06:00
Charles Giessen
3849dafadb Update getting_started.md
Include reference to add_required_extension_features and per-version feature enables.
Fix type with CustomQueueDescription.
2024-02-14 14:23:50 -06:00
Charles Giessen
a330227666 Use vulkan/vulkan_core.h instead of vulkan/vulkan.h
vulkan.h includes platform specific headers that cause non trivial build
overhead. Because vk-bootstrap doesn't make use of any platform specific
API's, it can move over to vulkan_core.h.

This *MAY* break users of the library who were depending on vulkan/vulkan.h
including other headers, like windows.h. But because the benefits outweigh
the drawbacks, it is a good change.
2024-02-12 09:48:56 -06:00
Charles Giessen
bc510bc421 Fix VK_BOOTSTRAP_INSTALL description string 2024-02-12 09:48:56 -06:00
Charles Giessen
c7e50426ba Add alternate for deprecated desired extension functions 2024-02-11 11:18:56 -06:00
Mxr
eab517912c Further fix 2024-02-05 21:16:15 -08:00
Mxr
df5d11fc25 Fix: dangling reference in the range-based for loop 2024-02-05 21:16:15 -08:00
charles-lunarg
2321c238d4 Update to latest Vulkan-Headers 2024-02-05 21:12:03 -08:00
sean
6119bfcb9a Fix: Move objects/vectors where applicable 2024-01-30 10:06:25 -07:00
charles-lunarg
dd6c02e8ab Update to latest Vulkan-Headers 2024-01-30 08:33:40 -07:00
Diamond-D0gs
0af4cb5055 implemented enable_extensions_if_present and tests 2024-01-18 15:15:00 -07:00
charles-lunarg
382259e32b Update to latest Vulkan-Headers 2024-01-09 09:38:29 -07:00
Charles Giessen
51cbe62371 Add const case to parameter parsing in autogen
This was missing, causing errors in user code due to not preserving const
2023-12-29 11:26:50 -06:00
Charles Giessen
8e23c8afda Manually guard vkCmdSetExclusiveScissorEnableNV
vkCmdSetExclusiveScissorEnableNV was added to an existing extension
in 1.3.241. Guard it against users with older headers.
2023-12-28 16:18:00 -06:00
Charles Giessen
25dc27c31c Make destroy_* functions pass by reference
The destroy_instance and destroy_device functions should be passed by
const reference to make it consistent with other destroy functions.
2023-12-28 16:01:44 -06:00
charles-lunarg
605c3f1712 Update to latest Vulkan-Headers 2023-12-28 15:56:47 -06:00
Charles Giessen
3ad0388f1b Workaround VK_EXT_discard_rectangles adding new functions
Generalize the mechanism to not enable function pointers based on the current header
version, due to VK_EXT_discard_rectangles adding functions not present in the original
extension.
2023-12-14 13:05:31 -07:00
Charles Giessen
ae05c97bdb Create Vulkan::Headers if CMake version is too low. 2023-12-14 11:24:51 -07:00
Charles Giessen
c16df41166 Fix aliased types not being generated
Types that are promoted get turned into aliases, but the dispatch table was missing
these types. This was due to a simple mistake of mixing up the alias with the type
being aliased.
2023-12-12 20:15:31 -07:00
charles-lunarg
ee817ba3c8 Update to latest Vulkan-Headers 2023-12-11 17:56:49 -07:00
Charles Giessen
348e8bf796 Support tests on windows with clang & clang-cl
Required adding a .def file to properly export the required symbols and
disabling pointer cast warnings that are coming from Catch2.
2023-12-06 14:07:18 -07:00
Charles Giessen
767bd1baf2 Fixup Clang on windows support
This commit fixes issues that prevented clang-cl & clang from being distinguished
on windows, resulting in improper command line arguments being used.

CMAKE_CXX_COMPILER_FRONTEND_VARIANT is the proper way to distinguish clang from
clang-cl, which have different command line options.
2023-12-06 14:07:18 -07:00
charles-lunarg
e2e2d69785 Update to latest Vulkan-Headers 2023-12-04 17:44:05 -07:00
Charles Giessen
f223c8d5ae Cleanup CMake finding of Vulkan & installation code
Adds extensive integration tests that exercise the various ways of finding
the Vulkan-Headers.

vk-bootstrap should now use the Vulkan-Headers or Vulkan::Headers targets if
they were already defined (such as is the case of FetchContent), and will
look for the VulkanHeaders package and Vulkan package as a fallback, and will
FetchContent Vulkan-Headers directly if that fails.

This should make integration seamless with the various ways vulkan-headers
is acquired.

The vk-bootstrap-vulkan-headers target was dropped in favor of directly
linking to Vulkan-Headers (creating a target by that name if none exists).
2023-12-02 19:49:54 -07:00
Charles Giessen
34be5eb2c5 Update to GLFW 3.3.8 in example code 2023-12-02 19:49:54 -07:00
Charles Giessen
622e36a487 Small cleanup of tests 2023-12-02 11:32:03 -07:00
Charles Giessen
6ab5669064 Workaround breaking API change in vkGetLatencyTimingsNV
The API of vkGetLatencyTimingsNV changed, which causes compilation failure due to
the generated code using the newer API while the Vulkan-Headers may be for the old
API.

The fix is to just disable the function if the headers are too old. While this does
limit the usage, because its from a new extension, there shouldn't be a huge impact.
2023-11-29 14:20:10 -07:00
Charles Giessen
e5dd024a51 Add version in tag description 2023-11-28 13:37:30 -07:00
Charles Giessen
03ac201309 Fix bugs in create_tag.yml
Forgot to checkout the repo and didn't have the correct path to a file.
2023-11-28 13:35:32 -07:00
Charles Giessen
a1471b414f Add workflow to tag header updates
Workflow is triggered manually in order to allow for me to review the PR first.
2023-11-28 14:31:14 -06:00
charles-lunarg
9f613c2348 Update to latest Vulkan-Headers 2023-11-28 13:55:07 -06:00
Charles Giessen
7900b9afe7 Add size + ptr & vector overloads for add_extensions
The instance & physical device selector only allowed adding a single
extension at a time. This commit adds overloads for a vector of const
char*'s and a count + pointer pair.
2023-11-22 03:00:44 -07:00
charles-lunarg
d4295cf688 Update to latest Vulkan-Headers 2023-11-18 11:39:44 -07:00
Charles Giessen
9864d2b838 Cleanup internal class VulkanFunctions
Removes the subclassing of VulkanLibrary, bringing its logic into the VulkanFunctions
class. This resolves a weird linking issue which was causing hot-reloading of shared
libraries that statically linked vk-bootstrap to fail to unload correctly, preventing
reloading.
The commit also consolidates the logic in load_vulkan_funcs() into a single function
rather than having it be split in three, which only made the code harder to reason
about.

Also made vk-bootstrap look for `libMoltenVK.dylib` on apple platforms, in case the
application only has the MoltenVK shared library but not the loader (and the user
didn't manually load GetInstanceProcAddr from MoltenVK then give it to vk-bootstrap).
2023-11-12 19:51:48 -07:00
Charles Giessen
49491c28c7 Remove deprecation notice in SwapchainBuilder
Turns out that was me being over eager in removing anything with 'desire' in the
name, and that for Swapchains there is a direct way to see the properties of the
swapchain after its creation, as vkb::Swapchain contains image count, colorspace,
present mode, and many other properties.
2023-10-30 11:53:33 -06:00
Charles Giessen
2b07f01a15 Mark QUEUE_INDEX_MAX_VALUE as inline
Fixes issues putting VkBootstrap.h into modules.
2023-10-30 11:50:10 -06:00