platform/upstream/Vulkan-Loader.git
14 months agoloader: allow GAS on MinGW
Andarwinux [Thu, 7 Mar 2024 00:00:00 +0000 (00:00 +0000)]
loader: allow GAS on MinGW

Disabled by default, user must explicitly enable USE_GAS.

14 months agoFix CI sanitizer failures
Charles Giessen [Wed, 20 Mar 2024 18:50:13 +0000 (13:50 -0500)]
Fix CI sanitizer failures

14 months agobuild(deps): bump github/codeql-action from 3.24.6 to 3.24.8
dependabot[bot] [Mon, 18 Mar 2024 17:41:05 +0000 (17:41 +0000)]
build(deps): bump github/codeql-action from 3.24.6 to 3.24.8

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.6 to 3.24.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8a470fddafa5cbb6266ee11b37ef4d8aae19c571...05963f47d870e2cb19a537396c1f668a348c7d8f)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
15 months agobuild: Update to header 1.3.280
Mike Schuchardt [Fri, 8 Mar 2024 16:55:28 +0000 (08:55 -0800)]
build: Update to header 1.3.280

- Update known-good
- Generate source

15 months agoapple: Updated framework version contents for appstore validation
Richard S. Wright Jr [Tue, 5 Mar 2024 17:11:52 +0000 (12:11 -0500)]
apple: Updated framework version contents for appstore validation

15 months agobuild(deps): bump github/codeql-action from 3.24.5 to 3.24.6
dependabot[bot] [Mon, 4 Mar 2024 17:56:43 +0000 (17:56 +0000)]
build(deps): bump github/codeql-action from 3.24.5 to 3.24.6

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.5 to 3.24.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/47b3d888fe66b639e431abf22ebca059152f1eea...8a470fddafa5cbb6266ee11b37ef4d8aae19c571)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
15 months agobuild: Update to header 1.3.279
Mike Schuchardt [Fri, 1 Mar 2024 16:55:14 +0000 (08:55 -0800)]
build: Update to header 1.3.279

- Update known-good
- Generate source

15 months agoAdd app packages to layers search path
Jim Lewis [Tue, 13 Feb 2024 00:41:53 +0000 (18:41 -0600)]
Add app packages to layers search path

Expand Windows system search path for layers to include AppX/MSIX
packages currently scanned only for ICD manifests.

15 months agobuild(deps): bump github/codeql-action from 3.24.3 to 3.24.5
dependabot[bot] [Mon, 26 Feb 2024 17:15:22 +0000 (17:15 +0000)]
build(deps): bump github/codeql-action from 3.24.3 to 3.24.5

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.3 to 3.24.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/379614612a29c9e28f31f39a59013eb8012a51f0...47b3d888fe66b639e431abf22ebca059152f1eea)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
15 months agobuild(deps): bump github/codeql-action from 3.24.0 to 3.24.3
dependabot[bot] [Mon, 19 Feb 2024 17:51:39 +0000 (17:51 +0000)]
build(deps): bump github/codeql-action from 3.24.0 to 3.24.3

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.0 to 3.24.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/e8893c57a1f3a2b659b6b55564fdfdbbd2982911...379614612a29c9e28f31f39a59013eb8012a51f0)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
15 months agobuild: Update to header 1.3.278
Mike Schuchardt [Fri, 16 Feb 2024 19:33:03 +0000 (11:33 -0800)]
build: Update to header 1.3.278

- Update known-good
- Generate source

16 months agoRemove current directory from DLL searching
Charles Giessen [Fri, 2 Feb 2024 17:30:01 +0000 (11:30 -0600)]
Remove current directory from DLL searching

By removing the current directory from the search paths for dlls, the
loader is less vulnerable.

16 months agobuild(deps): bump github/codeql-action from 3.23.2 to 3.24.0
dependabot[bot] [Mon, 5 Feb 2024 17:12:04 +0000 (17:12 +0000)]
build(deps): bump github/codeql-action from 3.23.2 to 3.24.0

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.2 to 3.24.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b7bf0a3ed3ecfa44160715d7c442788f65f0f923...e8893c57a1f3a2b659b6b55564fdfdbbd2982911)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
16 months agobuild: Update to header 1.3.277
Mike Schuchardt [Thu, 1 Feb 2024 17:52:08 +0000 (09:52 -0800)]
build: Update to header 1.3.277

- Update known-good
- Generate source

16 months agofix dEQP-VK.api.object_management.multithreaded_per_thread_resources.device_group...
MrRobbin [Thu, 1 Feb 2024 11:53:36 +0000 (19:53 +0800)]
fix dEQP-VK.api.object_management.multithreaded_per_thread_resources.device_group crash

This commit reverts the a4ff6a54e4f06638fa8fb367913818bf9d189bdb, which
will cause this CTS case crash when build the loader with release type.

16 months agoFix the tests, so it's not adding multiple DXGIAdapters with same LUID
Mateusz Przybylski [Thu, 1 Feb 2024 01:29:16 +0000 (17:29 -0800)]
Fix the tests, so it's not adding multiple DXGIAdapters with same LUID

LUID is expected to be unique per D3DKMT_/DXGIAdapter.

16 months agoFix heap corruption in Windows tests.
Mateusz Przybylski [Thu, 1 Feb 2024 01:18:52 +0000 (17:18 -0800)]
Fix heap corruption in Windows tests.

16 months agoFix memory leak.
Mateusz Przybylski [Thu, 1 Feb 2024 01:03:32 +0000 (17:03 -0800)]
Fix memory leak.

If we never find any other device after already_enumerated is recognized, the memory allocated in this function will never be freed.

16 months agobuild(deps): bump github/codeql-action from 3.23.1 to 3.23.2
dependabot[bot] [Mon, 29 Jan 2024 17:45:56 +0000 (17:45 +0000)]
build(deps): bump github/codeql-action from 3.23.1 to 3.23.2

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.1 to 3.23.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/0b21cf2492b6b02c465a3e5d7c473717ad7721ba...b7bf0a3ed3ecfa44160715d7c442788f65f0f923)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
16 months agobuild: Update to header 1.3.276
Mike Schuchardt [Fri, 26 Jan 2024 08:12:22 +0000 (00:12 -0800)]
build: Update to header 1.3.276

- Update known-good
- Generate source

16 months agoloader: Check apiVersion is not 0 for VUID-VkApplicationInfo-apiVersion
Aitor Camacho [Tue, 16 Jan 2024 21:09:08 +0000 (22:09 +0100)]
loader: Check apiVersion is not 0 for VUID-VkApplicationInfo-apiVersion

16 months agobuild(deps): bump github/codeql-action from 3.23.0 to 3.23.1
dependabot[bot] [Mon, 22 Jan 2024 17:12:35 +0000 (17:12 +0000)]
build(deps): bump github/codeql-action from 3.23.0 to 3.23.1

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.0 to 3.23.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/e5f05b81d5b6ff8cfa111c80c22c5fd02a384118...0b21cf2492b6b02c465a3e5d7c473717ad7721ba)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
17 months agoFix lack of pthread linking in ubuntu 20.04
Charles Giessen [Mon, 15 Jan 2024 03:41:10 +0000 (21:41 -0600)]
Fix lack of pthread linking in ubuntu 20.04

Ubuntu 20.04 saw a regression that caused the pthread library to no longer be
a part of libvulkan.so's linked libraries. This didn't cause the loader to fail
to load, rather any library that used pthread functions without linking to pthreads
themselves would fail to run, for example the Vulkan-ValidationLayers (VVL).
While it is currently unclear why VVL were trying to link to these symbols, this
would make loading validation layers impossible.

The issue turns out to be this line of CMake
`set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)`. Specifically, that line of
code appearing *before* `find_package(Threads REQUIRED)` causes CMake to 'find'
CMAKE_HAVE_LIBC_PTHREAD successfully, whereas previously it would fail. Since
this variable indicates that linking to libc is enough to get threading
capabilities, CMake no longer links to pthread.

This commit is an effort to prevent breaking ABI due to changing the link library
list in Ubuntu 20.04. It should be noted that in Ubuntu 23.10, the location of
`find_package(Threads)` has no bearing on the value of CMAKE_HAVE_LIBC_PTHREAD.

17 months agoloader: Miscellaneous platform-specific fixes
Daniel Rakos [Wed, 10 Jan 2024 13:52:14 +0000 (14:52 +0100)]
loader: Miscellaneous platform-specific fixes

17 months agobuild(deps): bump github/codeql-action from 3.22.12 to 3.23.0
dependabot[bot] [Mon, 8 Jan 2024 17:29:13 +0000 (17:29 +0000)]
build(deps): bump github/codeql-action from 3.22.12 to 3.23.0

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.22.12 to 3.23.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/012739e5082ff0c22ca6d6ab32e07c36df03c4a4...e5f05b81d5b6ff8cfa111c80c22c5fd02a384118)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
17 months agobuild: Update to header 1.3.275
Mike Schuchardt [Fri, 5 Jan 2024 17:33:07 +0000 (09:33 -0800)]
build: Update to header 1.3.275

- Update known-good
- Generate source

17 months agobuild: API parameterization changes
Daniel Rakos [Fri, 5 Jan 2024 17:02:09 +0000 (18:02 +0100)]
build: API parameterization changes

17 months agoSet CMake properties consistently
Juan Ramos [Fri, 29 Dec 2023 17:27:24 +0000 (10:27 -0700)]
Set CMake properties consistently

Simplifies the code

Idiomatic way of setting visibility via CMake

17 months agoDocument BUILD_WERROR
Juan Ramos [Thu, 28 Dec 2023 22:16:29 +0000 (15:16 -0700)]
Document BUILD_WERROR

17 months agoBUILD_WERROR OFF by default
Juan Ramos [Thu, 28 Dec 2023 22:13:51 +0000 (15:13 -0700)]
BUILD_WERROR OFF by default

Consistent naming with other repos we maintain.

OFF by default to avoid issues with newer compilers, specific
generators (Xcode), etc.

17 months agoOnly require C compiler
Juan Ramos [Thu, 28 Dec 2023 19:29:45 +0000 (12:29 -0700)]
Only require C compiler

By default the loader only requires the C compiler.

But by default the C and CXX compilers are enabled.

Only enable the C compiler. Move corresponding C++ code into tests
directory.

17 months agoAdd integration testing
Juan Ramos [Wed, 27 Dec 2023 19:23:10 +0000 (12:23 -0700)]
Add integration testing

Test find_package(VulkanLoader CONFIG)

Minimal vulkan.pc testing is also added.

17 months agoCleanup GitHub action script
Juan Ramos [Thu, 21 Dec 2023 21:51:32 +0000 (14:51 -0700)]
Cleanup GitHub action script

17 months agobuild(deps): bump github/codeql-action from 3.22.11 to 3.22.12
dependabot[bot] [Mon, 25 Dec 2023 17:57:38 +0000 (17:57 +0000)]
build(deps): bump github/codeql-action from 3.22.11 to 3.22.12

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.22.11 to 3.22.12.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b374143c1149a9115d881581d29b8390bbcbb59c...012739e5082ff0c22ca6d6ab32e07c36df03c4a4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
17 months agoAdd VulkanLoaderConfigVersion.cmake
Juan Ramos [Thu, 21 Dec 2023 20:47:05 +0000 (13:47 -0700)]
Add VulkanLoaderConfigVersion.cmake

Provides versioning information for the CMake package

17 months agoImprove clang on Windows testing
Juan Ramos [Wed, 20 Dec 2023 20:10:56 +0000 (13:10 -0700)]
Improve clang on Windows testing

Test both GNU clang and clang-cl

Use Ninja for performance

17 months agoMake sure VkSurfaceKHR is cast to uintptr properly
Charles Giessen [Tue, 19 Dec 2023 17:57:31 +0000 (10:57 -0700)]
Make sure VkSurfaceKHR is cast to uintptr properly

17 months agoFix wrong pointer casts in win32 surface code
Charles Giessen [Tue, 19 Dec 2023 17:12:29 +0000 (10:12 -0700)]
Fix wrong pointer casts in win32 surface code

The bad pattern was detected using clang/gcc but only on linux, so the
win32 code path never saw the fix.

17 months agoFix spelling mistakes in comments
Charles Giessen [Thu, 7 Dec 2023 20:41:31 +0000 (13:41 -0700)]
Fix spelling mistakes in comments

These creep in over time, and make the codebase harder to understand due to spelling
errors causing confusion when reading comments.

17 months agoUse memset to clear structs
Charles Giessen [Thu, 7 Dec 2023 20:39:36 +0000 (13:39 -0700)]
Use memset to clear structs

Several places manually zero'd out each member of a struct. This makes it possible to
forget to zero out members, especially as structs change over time. Using memset
prevents that possibility.

17 months agobuild: Update to header 1.3.274
Mike Schuchardt [Tue, 19 Dec 2023 16:47:00 +0000 (08:47 -0800)]
build: Update to header 1.3.274

- Update known-good
- Generate source

17 months agobuild(deps): bump github/codeql-action from 2.22.9 to 3.22.11
dependabot[bot] [Mon, 18 Dec 2023 17:40:08 +0000 (17:40 +0000)]
build(deps): bump github/codeql-action from 2.22.9 to 3.22.11

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.9 to 3.22.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2...b374143c1149a9115d881581d29b8390bbcbb59c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
17 months agoRevert "Add simple timer of ICD preloading in live tests"
Charles Giessen [Mon, 18 Dec 2023 20:10:29 +0000 (13:10 -0700)]
Revert "Add simple timer of ICD preloading in live tests"

This reverts commit 2e502bf4c582a9fb2f1a5b863c74475c1a05972d.

17 months agoRevert "Unload drivers which report 0 physical devices"
Charles Giessen [Mon, 18 Dec 2023 20:10:29 +0000 (13:10 -0700)]
Revert "Unload drivers which report 0 physical devices"

This reverts commit ba275bd829ee7f6f2682df4a84a9ae8481c5b801.

17 months agoRevert "Use memset to clear structs"
Charles Giessen [Mon, 18 Dec 2023 20:10:29 +0000 (13:10 -0700)]
Revert "Use memset to clear structs"

This reverts commit 93855ba4e2dc1fba6a19fae4ee8bcf1a8462aad1.

17 months agoRevert "Fix spelling mistakes in comments"
Charles Giessen [Mon, 18 Dec 2023 20:10:29 +0000 (13:10 -0700)]
Revert "Fix spelling mistakes in comments"

This reverts commit 0133778cb1c4493a9d580700b8a6e0fe493c601c.

18 months agoFix version installation of vulkan-loader
Juan Ramos [Fri, 15 Dec 2023 00:01:30 +0000 (17:01 -0700)]
Fix version installation of vulkan-loader

Currently libvulkan.1.3.0.dylib gets installed instead of
libvulkan.1.3.273.dylib

This fixes that while keeping the fix for the linker warning.

18 months agobuild(deps): bump github/codeql-action from 2.22.8 to 2.22.9
dependabot[bot] [Mon, 11 Dec 2023 17:16:04 +0000 (17:16 +0000)]
build(deps): bump github/codeql-action from 2.22.8 to 2.22.9

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.8 to 2.22.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/407ffafae6a767df3e0230c3df91b6443ae8df75...c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
18 months agobuild(deps): bump actions/setup-python from 4 to 5
dependabot[bot] [Mon, 11 Dec 2023 17:15:56 +0000 (17:15 +0000)]
build(deps): bump actions/setup-python from 4 to 5

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...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>
18 months agoci: Remove macos-11 builds
Mike Schuchardt [Fri, 8 Dec 2023 17:53:29 +0000 (09:53 -0800)]
ci: Remove macos-11 builds

CMake 3.28 is having issues with the macos-11 runner.

18 months agobuild: Update to header 1.3.273
Mike Schuchardt [Fri, 8 Dec 2023 17:49:21 +0000 (09:49 -0800)]
build: Update to header 1.3.273

- Update known-good
- Generate source

18 months agoFix spelling mistakes in comments
Charles Giessen [Thu, 7 Dec 2023 20:41:31 +0000 (13:41 -0700)]
Fix spelling mistakes in comments

These creep in over time, and make the codebase harder to understand due to spelling
errors causing confusion when reading comments.

18 months agoUse memset to clear structs
Charles Giessen [Thu, 7 Dec 2023 20:39:36 +0000 (13:39 -0700)]
Use memset to clear structs

Several places manually zero'd out each member of a struct. This makes it possible to
forget to zero out members, especially as structs change over time. Using memset
prevents that possibility.

18 months agoUnload drivers which report 0 physical devices
Charles Giessen [Tue, 7 Nov 2023 21:45:35 +0000 (14:45 -0700)]
Unload drivers which report 0 physical devices

The loader did not unload any ICD's which contained zero physical devices, which
could cause premature exhaustion of memory in some circumstances, like 32 bit
applications. While the policy of the loader has been to keep things open for
the duration of the instance, these ICD's don't meaningfully participate in
anything due to the lack of VkPhysicalDevices.

This change adds a check after vkEnumeratePhysicalDevices where pPhysicalDevices
is not NULL such that all loader_icd_terms which reported zero physical devices
have its vkDestroyInstance called, and removed from the loader_instance's
icd_term linked list.

18 months agoAdd simple timer of ICD preloading in live tests
Charles Giessen [Sat, 4 Nov 2023 04:52:49 +0000 (22:52 -0600)]
Add simple timer of ICD preloading in live tests

Adds a simple executable that times how long vkEnumerateInstanceExtensionProperties
takes over and over to see how well the ICD preloading functions.

18 months agoSupport Clang with GNU interface on Windows
Charles Giessen [Wed, 6 Dec 2023 21:01:16 +0000 (14:01 -0700)]
Support Clang with GNU interface on Windows

By using CMAKE_CXX_COMPILER_FRONTEND_VARIANT, CMake will now distinguish
clang from clang-cl, allowing the correct command line argument formats
to be used.

Making tests work required fixing up windows_shim.cpp's usage of wcscpy
since that was triggering deprecation warnings. A simple for loop was
used instead.

18 months agoSpecify which layer type is being searched in log
Charles Giessen [Fri, 1 Dec 2023 19:29:18 +0000 (12:29 -0700)]
Specify which layer type is being searched in log

Makes it clear which layer type is being searched for in any given set of paths.

18 months agobuild: Update to header 1.3.272
Mike Schuchardt [Fri, 1 Dec 2023 19:17:36 +0000 (11:17 -0800)]
build: Update to header 1.3.272

- Update known-good
- Generate source

18 months agodocs: Remove comments about Travis/AppVeyor
Juan Ramos [Thu, 30 Nov 2023 20:29:18 +0000 (13:29 -0700)]
docs: Remove comments about Travis/AppVeyor

18 months agoAdd clang-format to CI
Juan Ramos [Wed, 29 Nov 2023 20:11:40 +0000 (13:11 -0700)]
Add clang-format to CI

18 months agoRename BUILD_STATIC_LOADER to APPLE_STATIC_LOADER
Juan Ramos [Tue, 28 Nov 2023 18:25:18 +0000 (11:25 -0700)]
Rename BUILD_STATIC_LOADER to APPLE_STATIC_LOADER

BUILD_STATIC_LOADER is ambiguous and implies it will work on all
platforms.

APPLE_STATIC_LOADER isn't ambiguous.

Furthermore don't document BUILD_STATIC_LOADER. Otherwise users
may use it when they shouldn't.

Mark APPLE_STATIC_LOADER as advanced so it doesn't show up in
cmake-gui by default.

Furthermore, make the build fail if someone tries to use
APPLE_STATIC_LOADER on a non Apple platform.

18 months agoTest Xcode generator
Juan Ramos [Mon, 27 Nov 2023 19:20:34 +0000 (12:20 -0700)]
Test Xcode generator

Needed for iOS / simulator testing

18 months agobuild: Update to header 1.3.271
Mike Schuchardt [Mon, 27 Nov 2023 19:21:35 +0000 (11:21 -0800)]
build: Update to header 1.3.271

- Update known-good
- Generate source

18 months agobuild(deps): bump github/codeql-action from 2.22.7 to 2.22.8
dependabot[bot] [Mon, 27 Nov 2023 18:02:16 +0000 (18:02 +0000)]
build(deps): bump github/codeql-action from 2.22.7 to 2.22.8

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.7 to 2.22.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/66b90a5db151a8042fa97405c6cf843bbe433f7b...407ffafae6a767df3e0230c3df91b6443ae8df75)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
18 months agoInstance extensions unsupported by physical devices now return ERROR_EXTENSION_NOT_PR...
Charles Giessen [Wed, 22 Nov 2023 23:36:11 +0000 (16:36 -0700)]
Instance extensions unsupported by physical devices now return ERROR_EXTENSION_NOT_PRESENT

This is makes the code gen for VK_EXT_acquire_drm_display be in line with the wsi code
whenever calls to drivers are made which do not support the given extension.

18 months agoRemove -fno-strict-aliasing from builds
Charles Giessen [Mon, 20 Nov 2023 21:35:42 +0000 (14:35 -0700)]
Remove -fno-strict-aliasing from builds

This was added in commit 72199501cb01497ddc0e429d561e2e7e17a841c4

It was purported to fix a hang, but was never fully verified if it actually
fixed the underlying issue (or if the issue came from buggy optimizing
compilers or drivers).

The chromium build does not enable -fno-strict-aliasing and hasn't had any
issues known to be caused by strict aliasing optimizations.

This commit also fixes debug report/debug utils code that was not properly
casing to uintptr_t before assinging or dereferencing function parameters.
The same logic occurs in wsi.h which as it assigned a pointer of VkIcdSurface
to the VkSurface parameter.

18 months agoAdd Undefined Sanitizer support
Charles Giessen [Mon, 20 Nov 2023 21:34:46 +0000 (14:34 -0700)]
Add Undefined Sanitizer support

Allows easy enabling of UBSAN.

Fixes one issue found with UBSAN in the tests.

18 months agobuild(deps): bump github/codeql-action from 2.22.5 to 2.22.7
dependabot[bot] [Mon, 20 Nov 2023 17:12:53 +0000 (17:12 +0000)]
build(deps): bump github/codeql-action from 2.22.5 to 2.22.7

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.5 to 2.22.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/74483a38d39275f33fcff5f35b679b5ca4a26a99...66b90a5db151a8042fa97405c6cf843bbe433f7b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
18 months agoRemove API_NAME
Juan Ramos [Sun, 19 Nov 2023 22:54:18 +0000 (15:54 -0700)]
Remove API_NAME

18 months agoRemove -fno-builtin-memcmp
Juan Ramos [Sun, 19 Nov 2023 22:25:47 +0000 (15:25 -0700)]
Remove -fno-builtin-memcmp

18 months agoWarn if apiVersion is below VK_API_VERSION_1_0 and above 0
Charles Giessen [Fri, 17 Nov 2023 23:59:38 +0000 (16:59 -0700)]
Warn if apiVersion is below VK_API_VERSION_1_0 and above 0

Setting the apiVersion to an invalid value is an easy mistake to make.
But because it causes drivers to fail, the validation layers can not catch
it in time.

This commit makes it a 'fatal error' which forces log_message to write out
the message, regardless of whether or not VK_LOADER_DEBUG is set or if the
application has setup a debug callback in the pNext chain.

18 months agoci: Test universal binaries
Juan Ramos [Fri, 17 Nov 2023 20:31:27 +0000 (13:31 -0700)]
ci: Test universal binaries

18 months agoproc_pidpath takes a uint32_t not a size_t
Juan Ramos [Fri, 17 Nov 2023 18:49:07 +0000 (11:49 -0700)]
proc_pidpath takes a uint32_t not a size_t

18 months agoFix settings file crash found through fuzzers
Charles Giessen [Fri, 17 Nov 2023 18:32:01 +0000 (11:32 -0700)]
Fix settings file crash found through fuzzers

A few error conditions weren't properly handled whenever the settings file is invalid.
Added the exact json file which caused the errors, then fixed issues with releasing
memory properly.

19 months agoImprove warning message from terminator_CreateInstance
Charles Giessen [Mon, 13 Nov 2023 21:53:41 +0000 (14:53 -0700)]
Improve warning message from terminator_CreateInstance

Old messages were clunky and lacked helpful info like which driver failed
and the error code returned by the driver.

19 months agoCleanup loader_icd_init_entries
Charles Giessen [Sun, 12 Nov 2023 08:37:50 +0000 (01:37 -0700)]
Cleanup loader_icd_init_entries

The logic of the function indicates that at a previous time, the
functions being loaded used dlsym/GetProcAddress to query functions.
Whenever that was changed to vkGetInstanceProcAddr, the error logging
wasn't updated to remove loader_platform_get_proc_address_error.
Trying to call dlerror() when no error has occured will return NULL,
which was dutifully passed onto loader_log, causing crashes.

The cleanup removes usage of that, as well as making the loading
logic uses 2 macros, one for required & one for non-required
function pointers.

Cleanup also meant streamlining the parameter list of
loader_icd_init_entries, since VkInstance and GetInstanceProcAddr
are both able to be gotten from the icd_term. And also meant cleaning
up the inst parameter being passed into loader_log, which was turning
the drivers VkInstance into loader_instance* erroneously.

A test was added to ensure that the error path when drivers do not
support the required functions correctly returns an error from
vkCreateInstance instead of crashing.

19 months agoFix typo in LoaderDriverInterface.md
Charles Giessen [Mon, 13 Nov 2023 20:51:19 +0000 (13:51 -0700)]
Fix typo in LoaderDriverInterface.md

Linux drivers use the ".so" extension, not ".dylib"

19 months agobuild: Update to header 1.3.270
Mike Schuchardt [Fri, 10 Nov 2023 16:37:12 +0000 (08:37 -0800)]
build: Update to header 1.3.270

- Update known-good
- Generate source

19 months agocmake: Fail if Fuchsia
Juan Ramos [Tue, 7 Nov 2023 21:04:36 +0000 (14:04 -0700)]
cmake: Fail if Fuchsia

Fuchsia builds are only properly supported via the Chromium
build.

19 months agoRemove vulkan.symbols.api not actually used anywhere
Juan Ramos [Tue, 7 Nov 2023 21:04:14 +0000 (14:04 -0700)]
Remove vulkan.symbols.api not actually used anywhere

19 months agoAllow building a universal binary
Juan Ramos [Tue, 7 Nov 2023 00:54:04 +0000 (17:54 -0700)]
Allow building a universal binary

My earlier error checking was too agressive and doesn't
allow for building a universal binary at all.

Move the error check inside of USE_GAS so it's clear to the user
what to do (IE disable GAS if building a univeral binary)

19 months agocmake: Document why BUILD_STATIC_LOADER doesn't install
Juan Ramos [Mon, 6 Nov 2023 19:51:23 +0000 (12:51 -0700)]
cmake: Document why BUILD_STATIC_LOADER doesn't install

19 months agoImplement VK_MSFT_layered_driver extension support
Charles Giessen [Mon, 9 Oct 2023 16:53:38 +0000 (10:53 -0600)]
Implement VK_MSFT_layered_driver extension support

This extension reorders physical devices enumerated through the windows
EnumerateAdapterPhysicalDevices whenever multiple drivers exist for the same
LUID. This is so that if a driver is considered a 'layered implementation',
eg Dozen's Vulkan on Dx12, the physical device corresponding to the native
vulkan driver is preferred.

The implementation of this extension cause some renaming of structs, variables,
and parameters to make the code easier to understand, such as renaming
the struct loader_phys_devs_per_icd to loader_icd_physical_devices.
During the review process there was quite a bit of confusion about what the
struct's purpose was that should be much clearer now.

19 months agotests: Create seed corpus data
MykolaMykhno [Tue, 31 Oct 2023 21:31:49 +0000 (23:31 +0200)]
tests: Create seed corpus data

19 months agoEnable layer log messages in DebugUtils
Mark Young [Sun, 29 Oct 2023 20:29:04 +0000 (14:29 -0600)]
Enable layer log messages in DebugUtils

Debug Utils messengers wouldn't receive the layer or driver messages.
Mofified the messages so that the they would be logged in layers or
other debug utils messenger.

19 months agoFix Debug callbacks in layers in vkCreateInstance
Mark Young [Fri, 27 Oct 2023 18:59:32 +0000 (12:59 -0600)]
Fix Debug callbacks in layers in vkCreateInstance

After a layer calls down to vkCreateInstance, it may need to create a
DebugUtils Messenger (or Report object) for capturing debug information.
With the old design, it would get handled as a "during vkCreateInstance"
debug utils messenger object because the loader trampoline was still
in the middle of "vkCreateInstance".  However, treat it separately
if it was created with a call to vkCreateDebugUtilsMessenger and that
allows it to capture info all the way until the instance is destroyed.

19 months agobuild(deps): bump github/codeql-action from 2.22.4 to 2.22.5
dependabot[bot] [Mon, 30 Oct 2023 17:28:27 +0000 (17:28 +0000)]
build(deps): bump github/codeql-action from 2.22.4 to 2.22.5

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.4 to 2.22.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/49abf0ba24d0b7953cb586944e918a0b92074c80...74483a38d39275f33fcff5f35b679b5ca4a26a99)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
19 months agocmake: Fix x86 / x64 check
Juan Ramos [Fri, 27 Oct 2023 23:33:56 +0000 (17:33 -0600)]
cmake: Fix x86 / x64 check

closes #1356

19 months agoFix instance create swallowing error
Daniel Rakos [Thu, 26 Oct 2023 11:52:34 +0000 (13:52 +0200)]
Fix instance create swallowing error

19 months agodocs: Document QNX build
Juan Ramos [Wed, 25 Oct 2023 19:27:02 +0000 (13:27 -0600)]
docs: Document QNX build

19 months agobuild: Cleanup QNX build
Juan Ramos [Wed, 25 Oct 2023 18:08:41 +0000 (12:08 -0600)]
build: Cleanup QNX build

Move QNX build scripts into the scripts directory. This is
consistent with how we deal with the chromium build.

Provide a useful error to CMake users trying to cross-compile
for QNX. Although CMake does support QNX we want to point users
to the official method.

19 months agocmake: Move include(CheckIncludeFile) into loader/CMakeLists.txt
Juan Ramos [Wed, 25 Oct 2023 17:41:57 +0000 (11:41 -0600)]
cmake: Move include(CheckIncludeFile) into loader/CMakeLists.txt

Currently it's confusing placed in the top level CMakeLists.txt

19 months agocmake: Fixing unsecure environment warnings for MinGW/Apple
Juan Ramos [Wed, 25 Oct 2023 17:33:59 +0000 (11:33 -0600)]
cmake: Fixing unsecure environment warnings for MinGW/Apple

WIN32/Apple doesn't support these functions

19 months agobuild: Move fushcia source files into loader directory
Juan Ramos [Tue, 24 Oct 2023 22:48:36 +0000 (16:48 -0600)]
build: Move fushcia source files into loader directory

Mainly cosmetic to have 1 less top level directory

19 months agoci: Add iOS / tvOS builds
Juan Ramos [Tue, 24 Oct 2023 19:38:37 +0000 (13:38 -0600)]
ci: Add iOS / tvOS builds

19 months agoscripts: Update update_deps.py
Juan Ramos [Mon, 23 Oct 2023 23:41:48 +0000 (17:41 -0600)]
scripts: Update update_deps.py

19 months agoCheck for nullptr in vkCreateInstance trampoline
Charles Giessen [Mon, 23 Oct 2023 23:30:37 +0000 (17:30 -0600)]
Check for nullptr in vkCreateInstance trampoline

pCreateInfo must not be NULL, but the loader was dereferencing the pointer
before checking if it is NULL. Moving the dereference below the check for
NULL ensures no nullptr dereferencing occurs.

19 months agoDont assert in vkAllocateCommandBuffers
Charles Giessen [Mon, 23 Oct 2023 20:44:56 +0000 (14:44 -0600)]
Dont assert in vkAllocateCommandBuffers

The loader_init_dispatch first checks if the dispatchable handle has the
ICD_MAGIC_VALUE before setting the handle to the correct dispatch pointer.
This is useful to check that driver's are correctly creating the handle
using VK_LOADER_DATA.

Because layers are capable of wrapping handles, the loader_init_dispatch
function should only be called in terminators which run before any layers
have a chance to modify the ICD_MAGIC_VALUE. Otherwise the assert fails.

vkGetDeviceQueue & vkGetDeviceQueue2 uses loader_set_dispatch, which does
the same code as loader_init_dispatch but without the assert.

This commit changes vkAllocateCommandBuffers to use loader_set_dispatch.

19 months agobuild(deps): bump github/codeql-action from 2.22.3 to 2.22.4
dependabot[bot] [Mon, 23 Oct 2023 17:10:47 +0000 (17:10 +0000)]
build(deps): bump github/codeql-action from 2.22.3 to 2.22.4

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.3 to 2.22.4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/0116bc2df50751f9724a2e35ef1f24d22f90e4e1...49abf0ba24d0b7953cb586944e918a0b92074c80)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
19 months agobuild: Update to header 1.3.269
Mike Schuchardt [Fri, 20 Oct 2023 20:43:39 +0000 (13:43 -0700)]
build: Update to header 1.3.269

- Update known-good
- Fix hard-coded tag index for getting extension names from vk.xml
- Relax regex for correlating kVulkanObjectType* with
  VK_DEBUG_REPORT_OBJECT_TYPE_* by making the trailing _EXT optional
- Generate source