-
66a23ac8
by Michel Zou
at 2020-12-18T12:15:59-07:00
Rename LIB_SUFFIX to VULKAN_LIB_SUFFIX
Closes #527
-
294480cb
by Shannon McPherson
at 2020-12-19T18:07:29-07:00
build: Update known-good files for 1.2.165 header
Changes:
- Updated `known_good.json`
- Generated new source files
Change-Id: I5156923b1d3fb96d9e4fbe8dddb533f93561adfd
-
1f0c7868
by Charles Giessen
at 2021-01-05T10:23:14-07:00
loader: silence fread unused result
fread returns the count of values returned but was being ignored.
This commit makes sure to use that value when determining whether to
continue seeking to the end of the file.
Change-Id: Idb818cb3cda0cdde81aba1e5a4dd639c4814a923
-
9ba83588
by Shannon McPherson
at 2021-01-05T10:45:38-07:00
build: Update known-good files for 1.2.166 header
Changes:
- Updated `known_good.json`
Change-Id: Idf48ead0a4cad20ec6f1675741be0ebae45770a0
-
aed40d52
by Ludovico de Nittis
at 2021-01-18T02:03:20-07:00
loader: Do not remove duplicated layers
Linux can support multiple ABIs, but Vulkan Layer manifest does not
allow to specify different library paths, based on the ABI.
As a solution, for ICDs, we can simply create multiple manifests, one
per ABI, and the Loader will try them one by one until it finds the
library that is compatible with the executable class.
Instead, for Vulkan Layers, this method doesn't work because the Loader
will discard the manifests that have a duplicated layer name.
To add support for multiple ABIs to Vulkan Layers, and to make the
behavior similar to the ICDs, with this commit we remove the duplicated
layer name check.
Instead we add to the output list all the Vulkan Layers that we find,
and only when we are actually going to dlopen them, we discard the
layers with the same name that we already successfully opened.
Fixes: #155
Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
-
41901f90
by Kévin Petit
at 2021-01-28T17:19:33-07:00
loader: Fix Android build
- Add missing prototype
- Fix incorrect parameter handling
Signed-off-by: Kévin Petit <kevin.petit@arm.com>
-
47940fbf
by nihui
at 2021-01-28T17:21:53-07:00
Fix crash with NULL messenger
-
2b9a7b11
by Kévin Petit
at 2021-01-29T11:11:02-07:00
loader: Fix AArch64 Android build
The Android NDK doesn't provide a separate libpthread. Don't
explicitly link it in when builing for Android.
Signed-off-by: Kévin Petit <kevin.petit@arm.com>
-
fd5cc696
by richard-lunarg
at 2021-02-02T10:31:36-05:00
CMake tweak for macOS cross compilers, seems okay elsewhere too
-
6fcd515b
by J.D. Rouan
at 2021-02-03T11:34:20-07:00
loader: Do not return OOM when layer count is 0
An application program that overrides malloc with an implementation that
returns NULL for a zero-sized allocation will cause some loader and
trampoline functions to incorrectly return VK_ERROR_OUT_OF_HOST_MEMORY
if there are no layers on the system. This patch prevents these errors
by also checking the layer count.
Fixes: https://github.com/KhronosGroup/Vulkan-Loader/issues/543
-
ff6a9e31
by Shannon McPherson
at 2021-02-08T14:34:38-07:00
build: Update known-good files for 1.2.169 header
Changes:
- Updated `known_good.json`
Change-Id: Iaf11b12afdcd11b06ebce4b66a0b56b2b097522f
-
a088d109
by Lenny Komow
at 2021-02-10T13:54:42-07:00
repo: Switch to github actions for CI
-
a66ceba2
by Lenny Komow
at 2021-02-10T13:54:42-07:00
docs: Update readme to point to github actions
-
c5678a03
by Jeremy Gebben
at 2021-02-15T11:58:50-07:00
build: Update known-good files for 1.2.170 header
Changes:
- Updated `known_good.json`
- Generated new source files
Change-Id: I98c582a8cad9ffbdda5a1b2ffa5517b866803047
-
55c6dc0a
by Shannon McPherson
at 2021-03-02T15:40:45-07:00
scripts: Update copyright in `common_codegen.py`
Change-Id: Id5049a260cb8521a1768b6b48b36bdef825e5508
-
237d3dcb
by Shannon McPherson
at 2021-03-02T15:40:45-07:00
build: Update known-good files for 1.2.171 header
Changes:
- Updated `known_good.json`
- Generated new source files
- Added `VK_USE_PLATFORM_SCREEN_QNX` to platform list in
`common_codegen.py`
Change-Id: I2ef49799434ff31ff81680413a8700caea46593c
-
1353e80d
by Shannon McPherson
at 2021-03-10T08:56:41-08:00
build: Update known-good files for 1.2.172 header
Changes:
- Updated `known_good.json`
Change-Id: I7977f22711cefae65e6eabe00ec44d9e43e890a5
-
f17f507c
by Mike Schuchardt
at 2021-03-23T13:37:52-07:00
build: Update known-good files for 1.2.173 header
- Update known_good.json
- Generate source files
-
5180defc
by Lenny Komow
at 2021-03-23T17:21:03-06:00
docs: Update note about ICD proc addr
-
7ea01c13
by Mike Schuchardt
at 2021-03-29T13:05:47-07:00
build: Update to header 1.2.174
- Update known-good
- Generate source (no changes)
Change-Id: Ia2099a0d63692c19ce8444721d5eb25f94c809d9
-
684c2a68
by Mike Gorchak
at 2021-04-06T14:52:51-06:00
Add support for QNX platform.
-
be295c59
by Mike Gorchak
at 2021-04-06T14:52:51-06:00
Add QNX platform makefiles.
-
977ac085
by Mike Gorchak
at 2021-04-06T14:52:51-06:00
Rename build option to make it clearer that it belongs to QNX only.
-
64cc1709
by Mike Gorchak
at 2021-04-06T14:52:51-06:00
Add a couple of paragraphs about building process under QNX.
-
598874f5
by Charles Giessen
at 2021-04-20T03:39:46-06:00
build: Run generator to update extensions
QNX_screen moved from generated code to wsi.c but the generator was not run
so the old code wasn't deleted. This commit rectifies that.
Change-Id: Iba9cc3e6871605f50159acf7b6a97428f940b49e
-
4b868e5e
by Charles Giessen
at 2021-04-20T03:39:46-06:00
ci: Add verification of generated source code
The transition from travis to github CI dropped the check for verifying if the
source code generator was updated if it needed to for the changes.
Change-Id: I53fabfe14f42fe1c9899b2938f5e7b8073362954
-
eb6d6f95
by Mike Schuchardt
at 2021-04-20T09:45:05-07:00
build: Update to header 1.2.176
- Update known-good
- Generate source
- Fix version parsing in FindVulkanHeaders.cmake
- Add to VK_ENABLE_BETA_EXTENSIONS to GN build to pick up beta
VkObjectType values
Change-Id: Ied4e4e71017e48d344b1c9cacf037ae989aceec9
-
699c54ee
by Mike Gorchak
at 2021-04-21T11:21:44-06:00
build: Fix QNX build system
Add missing root Makefile for build-qnx folder and enable BETA
extensions by default.
-
3c8ca694
by Charles Giessen
at 2021-04-21T12:00:01-06:00
docs: Update pre-instance-function list
Add `vkEnumerateInstanceVersion` to the list of allowed pre instance
functions in the LoaderLayerInterface.md
Change-Id: I238aec5c3606af4d39bff5c50bbe75e909cd3224
-
94e19fe3
by Charles Giessen
at 2021-04-21T16:22:47-06:00
loader: Accept layer manifest version 1.2.0
This change only prevents the loader from warning on the new version.
Change-Id: If8c0aedb2e0052d5b6eb6f72fc4e7ad70b58d8a7
-
f3c1d9e7
by Charles Giessen
at 2021-04-22T16:25:44-06:00
loader: Silence wrong ELF class errors
Currently the loader does not distinguish between 32 and 64 bit ELF
class files. This causes `dlopen` to fail but is expected because
the different ELF class libraries are located in the same directory.
We can safely ignore this error. If encountered, we will report it
with the INFO logging level.
Change-Id: Icb8e5351208f8a413a29ea9c457bc3fdac7de292
-
8e3f63f5
by Charles Giessen
at 2021-04-23T15:21:07-06:00
loader: Fix unused variable warning on Apple
-
d0f1abe2
by Lenny Komow
at 2021-04-24T13:54:27-06:00
loader: Fix stack overflow with large manifests
If the json manifest file was too large, the loader would do a stack
allocation that would fail, throwing an exception or creating
undefined behavior. This changes to a heap allocation.
-
bb8231f0
by Lenny Komow
at 2021-04-27T16:57:13-06:00
loader: Prevent crash from VK_KHR_display
Previously, we assumed that the extension VK_KHR_display would be
available on all systems. This appears to no longer be the case. If we
get two ICDs, one which supports the extension and one which does not,
we used to get a crash if trying to call any function from the
extension on the physical device which did not support it. This solves
that crash
-
7758858c
by Mike Schuchardt
at 2021-04-29T09:11:03-07:00
scripts: Switch from mkpath to makedirs
distutils.dir_util.mkpath will not re-create a directory if it has been
removed with shutil.rmtree because it caches the filesystem under the
hood. This was causing the clone retry to fail on the second iteration
every time.
Switch to using os.makedirs for equivalent functionality without the
cache.
-
5dcea8a4
by Mike Schuchardt
at 2021-04-29T10:49:58-07:00
build: Update to header 1.2.177
- Update known-good
- Generate source (no changes)
Change-Id: I45f5702a6c975aa423b03f2e02fd19fca92d50d2
-
91955fbc
by sfricke-samsung
at 2021-05-04T14:00:42-06:00
Match null queue check for vkGetDeviceQueue
-
f14e11c9
by Mike Gorchak
at 2021-05-04T16:19:16-06:00
Use headers in the external folder prior to the system Vulkan headers
-
039cea53
by Charles Giessen
at 2021-05-04T16:48:39-06:00
loader: Emit DEBUG for unknown function names
Loader previously emitted WARN level log messages for unknown
function names. This isn't wrong behavior and is mainly useful to
loader developers. Many layers and applications try to load all
function pointers they know about, so this code path is well
travelled.
Change-Id: Ia3e4b47eddb36bd02bcbab8452e5a96d03f75bd3
-
a132dee1
by Mike Schuchardt
at 2021-05-11T12:43:53-07:00
build: Update to header 1.2.178
- Update known-good
- Generate source
Change-Id: I3e2756d9dc0452cc3743a05840d8e2a76961406a
-
3bdb32d2
by Mike Schuchardt
at 2021-05-24T12:25:00-06:00
build: Update to header 1.2.179
- Update known-good
- Generate source (no change)
Change-Id: Ib52dc0ff04f76fd1db2dea4a125a094d30abab62
-
d7c14e5c
by Charles Giessen
at 2021-05-27T16:59:28-06:00
cmake: Make loader use same CRT in debug mode
This solves the issue of debug asserts appearing in the output due to
mixed CRT's in the same build.
Change-Id: I06169c143614dd1102c901f57aa4bdf431df8846
-
2703d192
by Charles Giessen
at 2021-05-27T16:59:28-06:00
test: Add framework cmake and utilities
Create the CMake infrastructure for a testing framework.
`test_util.h/.cpp` contains the core macros, wrappers, and utilities.
framework_config.h.in is the header that other components include
to get the full path to binaries on a system.
Change-Id: I3e24a3ee4ff24da499a3bca63059e3b872d3981c
-
b7d170b7
by Charles Giessen
at 2021-05-27T16:59:28-06:00
tests: Add TestICD for mocking ICD's
The TestICD is a configurable ICD which can recreate much of the
behavior the loader expects of an ICD. Combined with a direct line
of communication between the tests and TestICD, tests can setup
specific conditions that have a known response from the loader,
thus allowing proper regression testing.
Change-Id: I84303f0ddb6011fc1b76dad25fd249abb2da29c9
-
25470c91
by Charles Giessen
at 2021-05-27T16:59:28-06:00
test: Add framework platform abstraction shim
The loader queries various platform systems for info such as the
location of ICDs and layers. To isolate the loader during testing
from the system it is running on, the platform shim intercepts the
necessary functions so that the contents of the systems queried by
the loader can be configured by tests.
On windows this involves 2 aspects:
Detouring Win32 API functions and redirecting the registry.
The `Detours` library is used to easily capture Win32 API calls.
And the registry uses `RegOverridePredefKey` to redirect the registry
entries the loader accesses.
On linux this only involves intercepting 3 functions; `opendir`,
`access`, and `fopen`. This allows the framework to tell the loader
what to actuall open/access/fopen. These interceptions call the
underlying function but with altered arguments, specifically to
paths the tests set up.
Change-Id: I3531a1cb190c489ffd9f1f0549d0ebcacb3818c5
-
b1b5de42
by Charles Giessen
at 2021-05-27T16:59:28-06:00
test: Add test framekwork layer utility
At the present moment, this change is to define simple layer
utilities that tests in the future may use.
Change-Id: I9ab5e1950da64061997891a0527d0f70a49e41e7
-
88480c3d
by Charles Giessen
at 2021-05-27T16:59:28-06:00
test: Add framework test_environment
The test environment is the code which glues the platform shim,
TestICD, and TestLayers together so that test code can be easily
written. The main components tests use are the SingleICDShim and
MultipleICDShim classes. Both take care of copying the ICD binaries,
setting up the manifests, and redirecting the platform specific
systems to point at those manifests.
Change-Id: I7cbb76c9555fe13b323173c3838cbb3616b77a18
-
a9db4515
by Charles Giessen
at 2021-05-27T16:59:28-06:00
test: Add regression tests code
These files are the current 4 source code files used to create the
regression test suite
loader_regression_tests.cpp and loader_version_tests.cpp contain a
majority of the tests.
loader_wsi_test.cpp is all the tests pertaining to the WSI functions
in the loader.
loader_testing_main.cpp contains the `main()` which has windows CRT
specific calls to disable popups and debug aserts.
There are two executables created, test_regression and test_wsi.
test_regression is both regression_tests and version_tests. test_wsi
is the WSI tests. These tests are separate as they rely on linking
with platform specific windowing libraries which may not be present
on a CI system.
Change-Id: I1c02b0f82826d337599f4a9a7c02dde40ea5afa3
-
ddf5be24
by Charles Giessen
at 2021-05-27T16:59:28-06:00
tests: fix spelling in loader_validation_tests
Change-Id: I2e278b959cd1d47bdc0d7fc19965e4d57e71b481
-
4f82246c
by Charles Giessen
at 2021-05-27T16:59:28-06:00
tests: Add CMake to handle Detours library
The Detours library uses a make file to build it. Thus it needed
to be translated into CMake equivalent code to make a useable target.
Change-Id: Ibed33c962e522f44297c7fa9cbe3f62964503ceb
-
ff390873
by Charles Giessen
at 2021-05-27T16:59:28-06:00
loader: Add pragma once to adapters.h
This allows the header to be included multiple times without error.
Change-Id: I4f4ca4ab57c0b7f8606f397d61dadfadc2597b0b
-
959e8daf
by Charles Giessen
at 2021-05-27T16:59:28-06:00
cmake: Only enable testing with BUILD_TESTS
`enable_testing()` was previously always enabled when configuring
the loader repository. This commit only does that when `BUILD_TESTS`
is true.
Change-Id: I75666088b84efc4613f72e6938da9ed88b54fb1f
-
886a7297
by Charles Giessen
at 2021-05-27T16:59:28-06:00
ci: Make linux CI run regression tests
Change-Id: I212a714cc0ec41da11bc69e216b4bb54685415a7
-
b83102e3
by Charles Giessen
at 2021-05-28T18:43:26-06:00
tests: Include <memory> in test_util.h
Change-Id: If2b6766521dd6bea5478b6316eadef8ce3e048cf
-
6f8b0d1c
by Charles Giessen
at 2021-06-01T11:40:49-06:00
loader: Silence erroneous implicit layer warning
When the override layer or an implicit meta layer is detected, the loader will
go and find all of the explicit layers because the override/meta layer might
require them. During that process `loaderAddLayerProperties` is called. It was
accidentally called with `is_implicit = true`, which causes the loader to interpret the manifest files as if they were implicit, generating
many erroneous warnings.
Change-Id: I8bc6bfa0d2a81159ebc33406e18ebf2099355768
-
04796099
by Biswapriyo Nath
at 2021-06-01T11:56:24-06:00
CMake: Fix linking option and libraries for MinGW.
Check MSVC for Visual Studio specific libraries.
-
9fb591fe
by Jamie Madill
at 2021-06-03T10:34:09-06:00
GN: Support custom library name.
This allows for projects like ANGLE that build the loader to prevent
conflicts with the system.
-
a9cac771
by Mike Schuchardt
at 2021-06-07T14:43:14-06:00
build: Update to header 1.2.180
- Update known-good
- Generate source (no change)
Change-Id: I56d4483f777754c9e368ac9b0025d550070fdd83
-
f7442f96
by Charles Giessen
at 2021-06-07T14:07:38-07:00
ci: Enable regression tests in Windows CI
Change-Id: I5bb1d03f9c9a3be82f7ed0763a325996a5d8dae8
-
fcc549fc
by Charles Giessen
at 2021-06-07T14:07:38-07:00
test: Fix Windows x86 icd shim exports
_stdcall in Windows x86 builds would mangle names even with `export "C"`
By adding .def files, the correct name is used in the .dll and the loader will
correctly load it.
Additionally, ShimEnumAdapters2 needs _stdcall for 32 bit mode
Change-Id: Ia60a5e2a9e4378dc3e09864648e04852b10fe524
-
01ddf904
by Charles Giessen
at 2021-06-07T14:07:38-07:00
ci: Enable building of tests
-
61bfd930
by Charles Giessen
at 2021-06-07T14:07:38-07:00
test: Delete files properly on windows
Move windows specific error reporting to test_util.h
This allows for its use anywhere its required.
Change-Id: I14a0da85dc0d3f4e651b99aa005469b47d98d940
-
43c06213
by Charles Giessen
at 2021-06-07T14:07:38-07:00
test: Control process elevation on Windows
Since the loader only uses environment variables if the process is
not running with elevated priviledges, the test harness needs to be
able to control that aspect to ensure consistency as CI systems may
run the tests in an 'elevated' context.
Change-Id: I8b15a1ecd4ab4960049ba198af8199943e872bba
-
7e2d7ba8
by Charles Giessen
at 2021-06-07T14:07:38-07:00
test: Refactor tests that use VK_ICD_FILENAMES
Change-Id: I34117fd500f7110669ae19d32ff1e1be920238a9
-
d409f0c7
by Charles Giessen
at 2021-06-11T13:59:14-07:00
loader: Replace consistency checks with asserts
-
19eec9a8
by Charles Giessen
at 2021-06-11T13:59:14-07:00
loader: Create AddManifestFile function
-
73296a04
by Charles Giessen
at 2021-06-11T13:59:14-07:00
loader: Change VkResult when no ICDs were found
ReadDataFilesInRegistry would return VK_ERROR_INITIALIZATION_FAILED in several cases
which could cause the loader to short cirtuit and return that value when no drivers were
found in the registry. This is inconsistent with the later check of the size of the list
of manifest, which if it is 0 returns VK_ERROR_INCOMPATABLE_DRIVER. This commit changes
the instances of INIT_FAILED into INCOMPATABLE_DRIVER where relevant.
-
57ba02b4
by Mike Schuchardt
at 2021-06-14T12:31:20-06:00
build: Update to header 1.2.181
- Update known-good
- Generate source (no change)
Change-Id: I7aed911c95d3faa89f7cd012ce56ccde00927943
-
8a3a3cb7
by Christophe
at 2021-06-17T09:19:10-06:00
Add layer manifest version 1.2.0 to history
-
1896143d
by Mike Schuchardt
at 2021-06-21T10:07:16-07:00
build: Update to header 1.2.182
- Update known-good
- Disable codegen for VK_HUAWEI_subpass_shading
https://github.com/KhronosGroup/Vulkan-Docs/issues/1564
- Generate source
Change-Id: If59954254bdf433bd5171f2a63cad88e34069c89
-
cd24f793
by Timo Aaltonen
at 2021-08-13T08:48:15+03:00
Merge branch 'upstream-unstable' into debian-unstable
-
af441068
by Timo Aaltonen
at 2021-08-13T08:50:30+03:00
bump the version
-
075cf43f
by Timo Aaltonen
at 2021-08-13T08:50:38+03:00
Refresh vulkan-headers to 1.2.182.0
-
7eee2087
by Timo Aaltonen
at 2021-08-13T08:58:26+03:00
release to experimental