-
447f2289
by Mike Schuchardt
at 2021-11-16T11:22:26-08:00
build: Update to header 1.2.199
- Update known-good
- Generate source (version bump only)
-
22e9c7c5
by Charles Giessen
at 2021-11-17T15:27:03-07:00
Dont call ToolProps on drivers without support
The loader recently added support for calling into drivers in
vkGetPhysicalDeviceToolPropertieesEXT. However, it only used the value of
the function pointer to determine if it was safe. It was found that Mesa
drivers will return a non-null function pointer, even though they do not
support the extension, and so the loader called this function pointer which
would then segfault.
The loader prevents this by first checking if the extension is supported by
the physical device. This necessitates calling
vkEnumerateDeviceExtensionProperties and allocating some memory on each call
but since the number of times this function is called should be low, it is
not an undue performance burden. In the future, the loader should cache the
list of extensions when calling vkEnumeratePhysicalDevices so that checking if
a extension function is supported is fast and easy.
-
b21acf16
by Mark Young
at 2021-11-19T10:32:13-07:00
Update loader to include handle validation
Validate the Vulkan dispatchable handles (VkInstance, VkPhysicalDevice, etc) for
any trampoline functions the loader uses to query the dispatch table from..
This is so we can at least report errors before something bad happens.
Also, add tests to the test framework to catch this case. Right now they simply
check to make sure we aborted, but they don't know why the loader aborted..
Eventually, we need to come back and check the loader messages and make sure it
aborted for the reasons we want.
Fix a generator warning in dispatch_table_helper_generator.py where a compare was
the wrong type.
Fixes GH Issue #64.
-
c6f5be2e
by Mark Young
at 2021-11-22T16:09:16-07:00
Fix validation_layer_test failures from handle validation change
Some tests were failing in the validation layer tests because it expected
the validation layers to catch certain issues and return specific messages.
The loader had been modified to include catching those tests and failing
early, but this change undoes those checks as it wasn't really part
of handle validation.
-
ef242963
by Mark Young
at 2021-11-22T17:14:52-07:00
Fix the spelling of Manfiest in docs and loader
-
01a41e8b
by Mike Schuchardt
at 2021-11-29T10:17:35-08:00
build: Update to header 1.2.200
- Update known-good
- Generate source (version bump only)
-
3c1ad4b0
by Joel Winarske
at 2021-11-29T16:56:17-07:00
vulkan.pc cross-compile fix
- pkg-config variable ${prefix} is required for adjusting sysroot
Signed-off-by: Joel Winarske <joel.winarske@gmail.com>
-
8ac4d284
by Charles Giessen
at 2021-11-30T11:20:00-07:00
Fix error message in GetPhysDevImageFormatProps
-
004be487
by Charles Giessen
at 2021-11-30T13:39:34-07:00
Fix leaks in Handle Validation Tests
Instances were being created but not destroyed. Switch all tests to using
the InstWrapper to automate this cleanup.
-
a06909aa
by Charles Giessen
at 2021-11-30T13:53:34-07:00
Fix readlink error in asm_offset on linux
The readlink function required _GNU_SOURCE to be a compiler definition but
wasn't added since it was in a different executable than the main vulkan
loader. Adding it to the asm_offset target fixes the error.
-
36cc5816
by Charles Giessen
at 2021-11-30T13:54:34-07:00
Use windows-latest in github actions
The Windows-2016 environment is being removed March 15 2022. In preparation
of this, the loader will only use windows-latest and remove the workarounds
that were in place to run on the Windows-2016 environment.
Additionally, redundant manual downloading of detours was removed.
-
6df9f13c
by Mike Schuchardt
at 2021-12-01T09:54:01-08:00
build: Update to header 1.2.201
- Update known-good
- Generate source (version bump only)
-
f8c72d8f
by Charles Giessen
at 2021-12-01T14:02:09-07:00
Fix per-platform defines in test framework not showing up
Need to use target_compile_definitions instead of target_compile_options.
Also appears that generator expressions do not play nicely, so best to revert
to classic if-else chains.
-
737b390a
by Mark Young
at 2021-12-02T08:46:14-07:00
Fix handle validation crash in RenderDoc
When handle wrapping is performed in a layer, the loader would provide the incorrect
instance handles after the recent handle validation changes. This was exposed by
RenderDoc.
Also add several tests to catch this case.
-
143eb773
by Charles Giessen
at 2021-12-02T18:57:29-07:00
Revert to old behavior in GIPA for old apps
Vulkan header updated 1.2.193 changed the behavior of vkGetInstanceProcAddr for
global entrypoints. They used to always be returned regardless of the value of
the instance paramtere. The spec was amended in this version to only allow
querying global level entrypoints with a NULL instance. However, as to not
break old applications, the new behavior is only applied if the instance passed
in is both valid and minor version is greater than 1.2, which was when this
change in behavior occurred. Only instances with a newer version will get the
new behavior.
-
876a1b9c
by Charles Giessen
at 2021-12-02T22:15:32-07:00
Fix test framework leaking registry entries
Previously, Death tests would unknowningly create multiple registry overrides
and subsequently leak them when the death test dies. This is fixed by only
calling override once in main and setting an environment variable to prevent
subprocesses (death tests) from calling override again.
This change also moves the override setup from the shim setup to main, since
it had no depencies on the shim library itself.
-
3d3aae8f
by Charles Giessen
at 2021-12-06T11:57:43-07:00
Fix crash from Null instance layer or extension ptr
Passing in a VkInstanceCreateInfo where the layer count or extension count was non zero but
their respective pointers were NULL caused a nullptr dereference. The loader now checks for
this condition in the layer and instance extension validation functions and returns
VK_ERROR_LAYER|EXTENSION_NOT_PRESENT.
-
2bbfe2ef
by Mike Schuchardt
at 2021-12-07T10:25:37-08:00
build: Update to header 1.2.202
- Update known-good
- Generate source
-
6f192222
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Fix InstWrapper not checking instance creation
The CheckCreate function was not correctly checking that the VkResult matched what was
expected. The old code required the client to wrap the call in EXPECT_TRUE().
-
0ed0e761
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Add test for no drivers and no physical devices
-
b163d188
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Add Builder Pattern helpers to test framework
Allows quick creation of builders in test code.
-
f8709399
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Use builders in test framework components
Make use of BUILDER_VALUE and BUILDER_VECTOR in the various structs of the test
framework. This allows easier usage of the components by allowing a builder
style continuation of setting parameters in the drivers and physical devices.
-
b8f496c4
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Refactor tests FrameworkEnvironment class
Move all the behavior found in child classes of FrameworkEnvironment to the
FrameworkEnvironment itself, allowing easier composibility of behavior. The
original idea was to allow special case behavior for specific test cases but
this resulted in a lot of code duplication and difficulty combining different
framework behavior, such as adding a fake ICD and setting VK_ICD_FILENAMES at
the same time.
-
e8216014
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Refactor TestLayer framework interface
By adding builder style usage to most of the layer interface, it is easier to
create and use layers in tests. This commit refactors the layer interface and
updates most of the tests to use this style.
-
0640d7ac
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Fix Test folders and registry cleaning logic
The test framework was not clearing out old registry values after successive
test runs. The new logic now correctly clears out the files and registry keys
after each run.
-
6849c8d9
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Use std::function in Layer callbacks
Also fixed the compilation issues in the linux build
-
ca9efe3f
by Charles Giessen
at 2021-12-10T17:08:23-07:00
Tests to use unique layer names
While the logic to copy TestLayer binaries was present, it didn't rename them
to a unique string to prevent collisions when using the same binary.
-
24373f2d
by Mark Young
at 2021-12-13T11:05:15-07:00
Add loader policy statements
Define expected behavior for a well-behaved loader, layers, and drivers.
This has been reviewed with other companies so that when issues arise,
it is easy to clearly communicate where one of the components has failed
to properly behave.
Add warnings/errors in the loader output when cases of policy that can
be detected are noticed.
-
a11162fc
by Dave Airlie
at 2021-12-14T19:21:01-07:00
loader/aarch64: attempt to avoid text relocations in the unknown code
-
c6c0a2c3
by Mike Schuchardt
at 2021-12-20T08:46:42-08:00
build: Update to header 1.2.203
- Update known-good
- Generate source
-
db5e3d0f
by Simon McVittie
at 2022-01-06T11:24:11-07:00
loader: Check for processor of compiler, not processor of build system
If we are cross-compiling, for example for aarch64 on x86, then the
compiler we care about here is the machine we are compiling *for*,
e.g. aarch64 (the "target" in CMake terminology, the "host system" in
Autotools/Meson) rather than the machine we are compiling *on*, e.g. x86
(the "host" in CMake terminology, the "build system" in Autotools/Meson).
Signed-off-by: Simon McVittie <smcv@collabora.com>
-
b9936f2b
by Simon McVittie
at 2022-01-06T11:24:11-07:00
loader: Compile x86-specific code on x86 Linux
Unfortunately, the taxonomy used for CMAKE_SYSTEM_PROCESSOR is
OS-specific: on Windows, IA32 is identified as x86, but on Linux,
it can be identified as i386, i486, i586 or i686.
Signed-off-by: Simon McVittie <smcv@collabora.com>
-
6c8e7c7c
by Mark Young
at 2022-01-07T16:56:38-07:00
Fix loader phys dev termin for physical device extensions.
Fix some loader terminator functions for instance physical device
functions (that were pre-Vulkan 1.1). At that point in the API, we
didn't treat VkPhysicalDevices like VkDevices. Now, you must first
query the device for extension support for even VkPhysicalDevice calls.
Back then, the loader had to emulate the functionality.
Added tests to validate many of these functions.
-
afbe02aa
by Mark Young
at 2022-01-07T16:56:38-07:00
Add more WSI tests, and fix some compiler warnings.
Simplified the WSI tests so that they don't actually create the
platform surfaces and attach them. Instead, the test_icd framework
allows us to simply provide a dummy. This allows the tests to work
in the regresssion framework. Because of this, removed the separate
test_wsi test and merged it into test_regression.
Fixed several compiler warnings from my previous change as well.
-
efb8b8f9
by Mark Young
at 2022-01-07T16:56:38-07:00
Fix debug utils wrapping in tests
Also fix another compiler warning.
-
d413d4c6
by Mark Young
at 2022-01-07T16:56:38-07:00
Add device extension layer tests
Need to make sure the loader behaves appropriately for layers which report
one or more device extensions.
-
77c68768
by Mark Young
at 2022-01-07T16:56:38-07:00
Add layer tests for instance extension support
Verify that the loader properly handles instance extensions defined
in a layer (both implicit and explicit).
-
232c6977
by Mark Young
at 2022-01-07T16:56:38-07:00
Fix a few code review snippets
Messages weren't clear on some errors, and rework the library ending
code based on @charles-lunarg suggestions
-
f5d16bf8
by Mark Young
at 2022-01-07T16:56:38-07:00
Remove unnecessary code in test
-
5f8a6e2d
by Charles Giessen
at 2022-01-10T15:49:26-07:00
Fallback to 2KHR terminators if available
The functions added from VK_KHR_get_physical_device_properties2 were made core, but a
recent loader change meant that an application which was trying to use the extension may
use the fallback version (which ignores the pNext chain). This breaks existing
applications and thus needs to be rectified. This commit makes it so that if the core
GetPhysicalDeviceXXX functions aren't available and the extension is supported & enabled,
the extension version is used instead.
-
6d8af313
by Charles Giessen
at 2022-01-10T15:49:26-07:00
Tests separate 1.1 and VK_KHR_get_phys_dev_props2
Previously the TestICD would conflate the 2 distinct situations by accident. This commit
moves the logic into their separate blocks to prevent mixups.
-
3cae9d8c
by Charles Giessen
at 2022-01-10T15:49:26-07:00
Fixup phys_dev_inst_ext_tests
Add tests which exercise the case of a ICD being 1.0 with support for
VK_KHR_get_physical_device_properties2 while the ICD enables 1.1 and the
extension but tries to use the extension.
Removed TEST_F in this file, wasn't needed and caused an extra ICD to be found.
Converted the CompareXXX functions from internally using ASSERT_EQ to returning
a bool. This made the tests more robust since ASSERT_EQ in a function will just
return the function early, not end the test.
-
a72d5bc3
by Charles Giessen
at 2022-01-10T16:07:30-07:00
Add 1.2.1 as valid Layer Manifest version
-
1fb56971
by Mark Young
at 2022-01-11T15:09:46-07:00
Move the LDP_DRIVER_6 message to a warning for now
-
cbe28ac7
by Mark Young
at 2022-01-12T16:53:35-07:00
Consistent loader device ordering
The loader ICD ordering could be random on Linux based on using readdir
to find ICD manifest files. This can result in random behaviors as
applications that select only the first device can switch which device is
used. To resolve this, we now sort based on device type and then
internally to the types based on PCI bus information.
This also introduces a VK_LOADER_DEFAULT_DEVICE environment variable
that can be used to force a specific PCI device. This environment variable
is actually a duplicate of the MESA_VK_DEVICE_SELECT variable, which is
also looked for if the loader environment variable is not found.
Note, that at least one ICD must support it for the extension to be used at all.
So we only do the sorting if one ICD supports it.
Fixes part of #657
-
263ad96d
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Add test for manually enabled implicit layer
If an application manually enabled an implicit layer, the layer should
be enabled without issue.
-
5beb6dd1
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Fix layer manifest version check
The check assumed that 1.1.x was the highest Layer Manifest version in existance.
This causes 1.2 layer manifests to erroneously report a message. No functionality
is affected by the check, so this commit just silences a wrong warning.
-
e9b2008c
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Log meta-layer messages when inst is NULL
The code previously would only log meta-layer messages when the instance
isn't NULL (so never during pre-instance calls). This leads to critical
information being left out while debugging, making issues harder to
diagnose.
-
4b8046ef
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Check for duplicates before adding layer
If an application decided to enable an implicit layer, it would result in the
layer properties being stored twice in the activated layer list. Simply not
adding the layer if it already is in the list prevents the duplication.
-
172861f8
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Fix layers not being removed by meta-layer
The code was faulty and would remove the layers that were supposed to be kept,
such as the meta layer itself. Bugs include taking a copy instead of a pointer
which led to an assignment being forgotten and using the wrong list when
looking through the list of layers.
-
36deb9d9
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Add meta-layer versioning tests
Adds three tests:
* OlderMetaLayerWithNewerInstanceVersion - Checks for interaction between app's
instance version and the meta layer version
* NewerComponentLayerInMetaLayer - When a component layer has an API version
newer than the meta layer, the meta layer is disabled.
* OlderComponentLayerInMetaLayer - When a component layer has an API version
older than the meta layer, the meta layer is disabled.
-
1704ffa3
by Charles Giessen
at 2022-01-12T17:44:07-07:00
Add test for older implicit layer version
Add NewerInstanceVersionThanImplicitLayer test which exercises the loader's
removal of layers whoses API version is less than the application specified
API version.
-
0fd1cf08
by Yilong Li
at 2022-01-13T12:53:21-07:00
murmurhash: Fix an undefined behavior when hashing function names
In Vulkan loader GetProcAddr handlers, for functions that are
not specified in the Vulkan registry, the loader will try loading
the name from ICDs or layers, and store the function entry into
a hashtable. The hashtable uses |murmurhash()| function to hash
Vulkan function names.
murmurhash handles data as 4-byte chunks and read one chunk at a
time; and it simply converts uint8_t pointers to uint32_t pointers
while loading data. However, the address of function name might
not be 32-bit aligned and this will cause an undefined behavior in
C99 / C11.
This change fixes the murmurhash() behavior so that it handles
unaligned access correctly. For most common platforms that supports
unaligned memory access this could compile into a single mov/load
instruction even if compiling using -O0.
Change-Id: I16011720198a0ee96e556855858a9909f95ec376
-
dcd61853
by Charles Giessen
at 2022-01-18T15:51:14-07:00
Add VK_LOADER_TEST_LOADER_PATH env-var for tests
The environment variable VK_LOADER_TEST_LOADER_PATH allows running of tests
using a different binary than the one built by the repo. This is extremely
useful for checking that a test exercises a bugfix, by quickly allowing the
running of the same test on the current 'fixed' loader and an older 'broken'
loader.
-
60d17fe6
by Charles Giessen
at 2022-01-18T16:02:17-07:00
Enable Address Sanitizser in Github Actions
-
dab15e0c
by Charles Giessen
at 2022-01-21T10:58:54-07:00
Downgrade all policy messages from ERROR to WARN
-
aeeab1c1
by Mark Young
at 2022-01-24T09:43:55-07:00
Fix issue #802
The loader assumed if Vulkan 1.1 is supported, then the PCI bus extension
must automatically be supported. This was a mistake as that extension is
not part of core.
-
ec84a665
by Ari Suonpää
at 2022-01-24T10:22:06-07:00
Fix writing to filtered extension list
VK_KHR_get_physical_device_properties2 is added to an extension list
on Linux targets, but the index used for setting the extension string
in that list is wrong, leaving a NULL pointer where the extension
name should be.
-
ef193f2f
by Alexis Hetu
at 2022-01-25T09:59:13-07:00
Add support for building on ChromeOS
-
43a14748
by Mike Schuchardt
at 2022-01-25T10:54:13-08:00
build: Update to header 1.3.204
- Update known-good
- Generate source
-
1bbf128d
by Charles Giessen
at 2022-01-25T10:54:13-08:00
loader: Add GetToolinInfo trampoline/terminator
-
848b669e
by Charles Giessen
at 2022-01-25T10:54:13-08:00
loader: Add 1.3 symbols defs to appropriate files
vulkan-1.def and vulkan.symbols.api for fuschia
-
e874c0b0
by Charles Giessen
at 2022-01-25T10:54:13-08:00
loader: Add core 1.3 function to gpa_helper
-
59cdff6c
by Charles Giessen
at 2022-01-25T10:54:13-08:00
loader: Add manual trampolines for 1.3
-
890eb0ad
by Charles Giessen
at 2022-01-25T10:54:13-08:00
loader: Add basic 1.3 tests
Not complete and mainly just makes sure an app can load the function pointer and call it
without crashing.
-
522e2b6b
by Charles Giessen
at 2022-01-25T10:54:13-08:00
Check for version 1.3 in GetP.D.ToolProperties
To ensure that no crashes occur due to calling into the driver's
vkGetPhysicalDeviceToolProperties. This prevents cases where the function is
exported but the physical device doesn't actually support the function (such
as mesa with its function dispatcher shared between drivers).
-
f40a302a
by Charles Giessen
at 2022-01-25T10:54:13-08:00
TestICD return features, props, & memprops
Make the TestICD return the features, properties, & memory properties of
a physical device.
-
ef3d3375
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Remove redundant layer validity check
The Loader makes sure all component layers in a meta layer are found. It would then do this check
immediately afterwards. This is redundant and can be removed.
-
ca8cac07
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Simplify test framework FolderManager write function
Condense the overloaded write function from taking either an icd manifest or a layer manifest
and only take a string. This reduces the amount of copy-paste code.
-
7d122fc5
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Cleanup loader layer removal code
The loader_read_layer_json function wasn't decrementing the count of layers in the
list if it failed to load, leading to inconsistent results.
Several places were removing layers in a layer list manually when the functions
loader_remove_layer_in_list exists. They also weren't modifying their loop counters
when it was necessary.
-
b9727a88
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Add many meta-layer tests
Add tests for:
ExplicitMetaLayer - meta layer found in explicit paths
MetaLayerNameInComponentLayers - meta layer contains itself
MetaLayerWhichAddsmetaLayer - when a meta layer enables another meta layer
InstanceExtensionInComponentLayer - instance extension propagation
DeviceExtensionInComponentLayer - device extension propagation
OverrideMetaLayer.OlderVersionThanInstance - Checks behavior of override layer
if the applications version is greater.
-
2424889e
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Add check_permutation test helper
This allows easily checking that the returned list of extensions or layers
is a valid permutation. Since the order of layers and extensions isn't
deterministic, tests cannot rely on the returned order to verify the output.
-
f51356c3
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Add meta layer fields to layer manifest in tests
-
a07c7948
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Add meta layer blacklist test
-
415b3e59
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Fixup tests/README to use newlines for sentences
-
928830f7
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Make layer tests specify number of extensions
It is good practice to make use of equality checks vs comparison checks where
possible. Here, the number of extensions is knowable, as its debug_report +
debug_utils + however many come from implicit layers, which some tests do..
-
c3b26246
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Add TestLayerDetails helper struct
Increasingly it is common to need more control over what the framework
environment does when adding layers. While only a refactor, this change
makes it easier to extend the functionality by adding data to the
TestLayerDetails struct.
The code to check whether the lib_path specified in add_layer_impl was
improved by using the `.stem()` functionality of the fs::path abstraction..
size_t was replaced with uint32_t where the compiler gave warnings.
-
cbbcc6bc
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Fix loader manifest version checks
Several version checks were underspecified and either caused false positives
or didn't catch version violations.
For example, a manifest version 1.2.0 is valid but would emit warnings implying
the version is less than 1.1.
-
45c55b25
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Add override_paths tests for OverrideLayer
Add 4 tests:
* Shows the override_paths object in the layer manifest is being used to find a
layer.
* Shows that regular explicit layers are not found
* Shows that the log properly identifies meta layers which have an
override_paths object but shouldn't according to their manifest.
* Shows that implicit layers not in the override paths are not found.
-
41ee578e
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Update LoaderLayerInterface.md documentation
Expand override layer documentation to include override_paths
Add Versioning and Activation Interactions section which details some of the
more complex rules around when a layer is activated or not.
-
997595a9
by Charles Giessen
at 2022-01-25T12:32:56-07:00
Use size_t instead of uint32_t in test_icd
Compiler complained about possible loss of data. This fixes it.
-
50ba247d
by Kevin McCullough
at 2022-01-25T19:33:49-07:00
VK_NN_vi_surface WSI implementation
-
db4c3177
by Kevin McCullough
at 2022-01-25T19:34:27-07:00
Add VK_NN_vi_surface to WSI extension names array
-
356945ba
by Mark Young
at 2022-01-26T12:51:13-07:00
Fix Linux sort order crash
We were completely re-creating the physical device lists every time
EnumeratePhysicalDevices was triggered in the loader. This could
cause applications to have out-dated physical device handles.
We need to copy existing handles that match devices whenever they're
found.
-
8aad559a
by Mark Young
at 2022-01-26T14:24:29-07:00
Test EnumPhysDev to make sure handles don't change
Add a test to make sure that the physical device handles don't change
between calls to vkEnumeratePhysicalDevices
-
8d192539
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Add test for implicit layer with 0.1 API version
The loader disables implicit layers if their API version isn't the same or
greater than the application. Make sure this still works even with pre 1.0
versions.
-
200bd55e
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Use VK_API_VERSION_XXX macros everywhere
The older VK_VERSION_XXX macros are deprecated and cause confusion when they
report a MAJOR version that is above zero. All uses of the deprecated macro are
now replaced with the correct macro.
-
469b7c03
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Warn when the apiVersion's variant isn't 0
The 1.2.175 header release saw the addition of API Variants. For the purposes
of the loader, this should always be set to 0. If this value isn't zero, the
loader should warn about it.
-
b411580d
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Update tests to use correct version macro
The VK_MAKE_API_VERSION macro and the VK_API_VERSION_1_X macros are better to
use. This commit switches the tests over to the non-deprecated versions of the
macros.
-
ddd6b69d
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Detect Variant versions in given api versions
Since it is possible that API versions given to the loader have a variant
component, the loader should know how to handle them. It shouldn't use a
variant other than 0, but that is up to the caller to handle.
-
3a735a34
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Skip ICD's with non zero variant value
If the JSON ICD Manifest contains an api_version that has a non zero variant
value, then the ICD should be skipped since it corresponds to a Vulkan variant.
-
9091b00f
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Refactor json and API version parsing code
Reuse the loader_api_struct struct and associated parsing functions where
appropriate to reduce code duplication.
-
1c64dac9
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Ignore layers with non zero variant value
Layers which contain an API version where the variant value is non zero are not
designed for the Vulkan-Loader, so it should be ignored.
-
393e23f9
by Charles Giessen
at 2022-01-28T16:24:27-07:00
Add wrong Variant tests
-
f4aeed44
by Charles Giessen
at 2022-01-28T16:51:22-07:00
Fix warning for using wrong variant layers
Mistakenly used DRIVER instead of LAYER logging level.
-
be7c48c0
by Mark Young
at 2022-01-31T14:35:07-07:00
loader log error if a requested layer not loaded
This should throw an error message if a requested layer didn't load.
This could happen if the JSON file is present, but only a library
exists on the system for the wrong target (like 32 vs 64-bit).
If it did fail because of being the wrong bit-type, we report an info
message only, unless it was directly requested by the application.
Modify the improper bit-depth layer loading test so that it is now 4
tests:
- Verify bad explicit layer generates VK_ERROR_LAYER_NOT_PRESENT error
- Verify bad implicit layer generates only an info in the loader output
- Test case with both a bad implicit and explicit layer with INFO logging
we should see both messages.
- Test case with both a bad implicit and explicit layer with ERROR logging
we should see only the explicit failure message.
Report info failure for ICD wrong bit-type as well.
Finally, fixed a small compilation warning for disabled code.
-
fbea18e1
by Mark Young
at 2022-02-01T09:39:39-07:00
Add tests to validate layer extensions
We had tests that verified that instance and device extensions defined
in a layer had the non-null pointers returned from the corresponding
vkGetXXXProcAddr functions, but we weren't verifying that the functions
actually got called.
-
5ccc3563
by Adam Jackson
at 2022-02-02T13:10:15-07:00
loader: Try to handle ICD failure in vkEnumeratePhysicalDevices
If any ICD failed to enumerate device groups here, we would fail the call entirely, which means a broken driver for device A could prevent you from using device B. Just skip over the failing ICD instead.
-
81f41199
by Charles Giessen
at 2022-02-02T14:20:08-07:00
Fix incorrect indexing of local_phys_dev_groups
Seems to have been a copy paste error that meant the group's icd_term was assigned
to the incorrect group.
-
cdebcc4e
by Mark Young
at 2022-02-02T16:44:55-07:00
Add a few tests to verify the vkGet***ProcAddr commands
Verify that the loader exported version matches the ones you
receive from vkGet****ProcAddr.
-
7df1967e
by Mark Young
at 2022-02-03T13:00:30-07:00
Add tests to verify extension support in physical devices
Add 2 tests to verify that physical devices supporting instance
and device extensions (which are really physical device extensions)
are properly handled.
-
ddec051d
by Mark Young
at 2022-02-03T15:17:17-07:00
Verify GIPA on device extensions
Verify that using vkGetInstanceProcAddr to get an entrypoint to a device
extension works when the extension is enabled, and crashes when the
extension isn't enabled.
Also, update a copyright notice date for my last commit.
-
26283303
by Brad Grantham
at 2022-02-05T13:10:34-07:00
use the correct instance
-
354fc0a1
by Charles Giessen
at 2022-02-05T19:04:36-07:00
Make vkGetInstanceProcAddr able to get itself
There was a regression with 1.3 that meant vkGetInstanceProcAddr wouldn't be
able to query itself if instance was set for 1.3. This commit makes it possible
to query for vkGetInstanceProcAddr with itself no matter the value of instance.
-
45d0b0df
by Mike Schuchardt
at 2022-02-07T10:26:31-08:00
build: Update to header 1.3.205
- Update known-good
- Generate source
-
610a0516
by Charles Giessen
at 2022-02-07T12:23:44-07:00
Remove Instance and Device extension logging
While the DEBUG level of logging is meant for verbose output, the actual extensions
enumerated rarely are useful for the purposes of debugging the loaders behavior.
With this in mind, the loader will now no longer print all the extensions found.
-
d921cef6
by Charles Giessen
at 2022-02-07T16:14:20-07:00
Update Docs table of contents
-
a332b020
by Mark Young
at 2022-02-08T12:04:02-07:00
Fix Apple build
We don't want Apple builds using the Linux sorting algorithm.
-
15d33b48
by Mark Young
at 2022-02-09T13:19:48-07:00
Add DebugReport
-
3d95ca61
by Mark Young
at 2022-02-09T13:19:48-07:00
Update loader VUID messages
Update the loader VUID messages that were added in validating handles
so that thye include the validation flag when going through debug utils
messenger.
-
b30b2aec
by Mark Young
at 2022-02-09T13:19:48-07:00
Fix loader logging of VUIDs
The loader was logging some VUID failures and it was sending them to the general
message output. Send the information also to the validation stream to make sure
that if anyone enables validation filtering they will still see those errors
-
9ec9ef8d
by Mark Young
at 2022-02-09T13:19:48-07:00
Add debug utils loader testing
-
66ee58e8
by Charles Giessen
at 2022-02-10T16:38:15-07:00
Dont return an error for 0 physical device extensions
Previously the logic of loader_add_device_extensions could return an error from
enumerating device extensions. This was because the code would return immediately
if either an error was returned from the driver or the count was zero. Now the
logic will return an error only if the driver returned an error. Zero device
extensions won't be treated as an error and will simply return VK_SUCCESS..
-
fcdc9ae5
by Charles Giessen
at 2022-02-10T16:38:15-07:00
Test when there are no devices or device extensions
Adds 2 tests:
* ZeroPhysicalDevices - Return VK_ERROR_INITIALIZATION_FAILED if the driver has zero
physical devices.
* ZeroPhyiscalDeviceExtensions - Return VK_SUCCESS if no physical device extensions are
found.
-
f64401a3
by Charles Giessen
at 2022-02-11T11:16:10-07:00
MetaLayer version checking had paren in wrong place
Produced spurious warnings for versions that are correct.
-
0a7407b1
by Charles Giessen
at 2022-02-11T14:16:05-07:00
Clarify behavior of override_paths + VK_LAYER_PATH
If a meta layer which contains `override_paths` is active, all of the paths in
VK_LAYER_PATH are ignored when searchign for explicit layers. This may be changed
changed in the future but for now is better tested and documented.
-
5e96fd54
by Charles Giessen
at 2022-02-14T11:07:09-07:00
Update Windows runtime installer copyright
-
383cf8a6
by Mark Young
at 2022-02-15T10:47:36-07:00
Test layer pre-instance functions
Add tests to verify that the 3 pre-instance functions are properly
intercepted by the layer when everything is well-defined.
Also include two fixes:
1) Disable environment variable value of 0 should be treated the same as not present
2) The vkEnumerateInstanceVersion override path was broken, missing a NULL check
-
f4a52aee
by Mark Young
at 2022-02-15T10:47:36-07:00
Fix NULL check and make a few more consistent
-
451076dc
by Charles Giessen
at 2022-02-15T10:48:53-07:00
Fix Win32 Unknown Device function handling
The handling of unknown device functions queried with vkGetInstanceProcAddr
required an additional pointer dereference to get the dispatch table.
The VkDevice handle is a pointer to the `chain_device` member of
`loader_device`. This member is actually a pointer to `loader_dispatch`, or
put another way, the "start" of `loader_device`. Thus, to get access to the
dispatch table, we need to dereference the VkDevice passed into the function
then dereference the chain_device to get loader_dispatch`.
-
24ce547c
by Charles Giessen
at 2022-02-15T10:48:53-07:00
Update tests function loading implementation
Remove the need for macros and use well crafted helper loading functions which
can figure out the type to convert to based on the type being assigned.
-
b53e8254
by Charles Giessen
at 2022-02-15T10:48:53-07:00
Expand unknown function handling tests
Add tests for unknown device functions queried with both vkGetDeviceProcAddr
and vkGetInstanceProcAddr. Also loops enough times to exhaust the available
unknown function supply.
Had to fix the vk_layerGetPhysicalDeviceProcAddr in TestLayer to make the tests
pass.
MacOS currently skips tests which use vkGetInstanceProcAddr. This is due to the
need for unknown functions being lower priority and so do not warrent the time
needed to write the assembly necessary to resolve the issue fully.
-
77463c03
by Mark Young
at 2022-02-15T11:24:56-07:00
Add a test to verify that VK_INSTANCE_LAYERS behaves properly
-
ae2de336
by Charles Giessen
at 2022-02-15T13:56:21-07:00
Add live_verification tests for runnign with real drivers
Some things need to be verified against real drivers. The supporting code in test_util and
test_environment make it easy to write application code which works against real drivers and
layers. This allows quickly verifying loader behavior out in the wild.
-
2a012c99
by Mark Young
at 2022-02-15T14:56:05-07:00
Add a few device layer tests
Since device layers are pretty much ignored, make sure that they don't
change any behavior.
Also add a few "load" entrypoint helper routines based on what was already
done elsewhere in the test system.
-
32e48f5c
by Mark Young
at 2022-02-15T14:56:05-07:00
Add explicit layer invalid variant number test
-
2b11f6bb
by Mark Young
at 2022-02-15T14:56:05-07:00
Switch ASSERT_EQ(false,true) for FAIL() in tests
-
38b9a27f
by Charles Giessen
at 2022-02-15T16:51:46-07:00
Guard building of live_verification tests
Don't build live verification tests by default. These are meant as manual tests for
developers to run to diagnose issues or verify correctness on a real system.
-
1e882f9c
by Charles Giessen
at 2022-02-15T16:51:46-07:00
Update build.md and README.md for the tests
-
edb793cf
by Mark Young
at 2022-02-15T16:52:43-07:00
Add debug messages for unknown physical device extensions
Add debug messages to the loader so we can identify when an unknown
physical device extension's entrypoints are queried.
-
0a19663f
by Mark Young
at 2022-02-16T08:29:42-07:00
Loader single EnumPhysDev call through layers
The loader trampoline previously would query all devices every time
vkEnumeratePhysicalDevices was called.
To do this, it would make two calls every time:
- First, it would ignore the passed in user values
- Second, it would query the total number of available devices.
- Third, it would query the values for every available device
This resulted in layers reporting 2 vkEnumeratePhysicalDevices call for
every 1 the application made which could get very polluted in output.
It didn't break any functionality, just made things messy.
This change removes that behavior and adds a bunch of test cases to verify
nothing broke in the move.
-
debd9258
by Mark Young
at 2022-02-16T08:29:42-07:00
Code review comment fixes.
Also, cleaned up Linux vs Windows code so that there was less duplication and
complexity.
-
017bf517
by Mark Young
at 2022-02-16T08:29:42-07:00
Fix Windows build and add proper phys dev group sorting
-
be01dafa
by Mark Young
at 2022-02-16T10:09:29-07:00
Clean up layer test
My previous commit to enable physical device modifications in a layer
required new compiled layers to do the work. Since this can more
cleanly be done by setting layer flags (as suggested by @charles-lunarg)
I have gone back and done that.
-
a32af9ca
by Mark Young
at 2022-02-16T11:05:07-07:00
Update Contributing.md file
Add more detail on running and writing tests.
-
18852aa1
by Mark Young
at 2022-02-17T11:37:30-07:00
Enable testing of high-integrity in the loader
Enable testing to check if the loader is running with elevated
privileges. This is to make sure we're ignoring the appropriate
environment variables in those scenarios to potentially avoid
escalation exploits.
-
2dc24100
by Mark Young
at 2022-02-18T08:10:06-07:00
Fix vk_icdGetPhysicalDeviceProcAddr docs
The language was not normative and also made clearer.
-
ff06a164
by Mike Schuchardt
at 2022-02-18T10:04:25-08:00
build: Update to header 1.3.206
- Update known-good
- Generate source
-
df889962
by Charles Giessen
at 2022-02-21T11:49:17-07:00
Add consecutive create instance and device tests
-
4c90ec33
by Charles Giessen
at 2022-02-21T11:49:17-07:00
Fix compiler warnings in regression_tests
-
6e7061cd
by Matt Turner
at 2022-02-23T13:59:30-07:00
docs: Fix typo
The behavior change to physical device ordering happened in v1.3.204.
-
3a1b0842
by Mark Young
at 2022-02-28T12:06:57-07:00
Resolve Angle failure because it breaks with is_high_integrity
Angle drops the security enforcement of the loader on environment
variables and the additional "is_high_integrity" checks on my
previous loader change caused failures in the Angle run.
Revert the high-integrity checks and update the layer test to
work properly.
-
a4fb0b36
by sfricke-samsung
at 2022-02-28T22:58:54-07:00
loader: Fix wayland copy paste error
-
46abc7dc
by Mark Young
at 2022-03-04T15:38:46-07:00
Add "additive" environment variables
Add "additive" environment variables for adding additional layer
paths or driver JSON files instead of replacing default ones.
Also, rename VK_ICD_FILENAMES to VK_DRIVER_FILES since we're trying
to remove references to ICDs because software driver implementations
of Vulkan aren't ICDs (but continue to support the old name as well).
Added documentation around these changes to reflect the new name and
the new variables.
-
1d099bf9
by Mark Young
at 2022-03-04T15:38:46-07:00
Fix WIndows elevation
-
435070c4
by Mark Young
at 2022-03-04T15:38:46-07:00
Changes to additive env var based on code review
-
6524b598
by Charles Giessen
at 2022-03-04T15:40:01-07:00
Add live tests for OS dynamic loader behavior
Executes various combinations of loading and linking to libraries which
export the same symbols.
-
f24a0c67
by Mike Schuchardt
at 2022-03-08T10:32:42-08:00
build: Update to header 1.3.207
- Update known-good
- Generate source
-
51d93c36
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Remove RELEASE_BUILD cmake option
Turned out to be not useful and as such should be removed.
-
595cca67
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Refactor CMake WSI platform defines
Move the WSI macro defines into their own target such that it can be shared
with the loader and test code. Note that this commit is a part of a series
and not intended to work standalone.
-
ff19964f
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Refactor CMake compiler options
Create the target loader_common_options which will contain the compiler
commands, options, and definitions that is shared across the code base.
This includes linking to platform_wsi_defines and moving many of the defines
found in the loader/CMakelists.txt up to this location.
Setting the language standard through an interface target is not possible, so
to avoid using the global state modifiers, each target needing to be on a
specific language standard must specify it for themselves.
Note that this commit is in a series and is not intended to work by itself.
-
3e18c123
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Move git info in CMake to loader_common_options
Make the GIT_BRANCH_NAME and GIT_TAG_INFO apart of the loader_common_options
target so it doesn't apply globally to the C_FLAGS and CXX_FLAGS.
Note that this commit is a part of a series of commits and is not meant to
work by itself.
-
976dcf76
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Refactor loader specific CMake options
Create a new target loader_specific_options that contains the specific flags
and definitions which apply only to the loader. This target links to the
loader_common_options and is used to store various macro defines which
only are relevant to the loader, like the specific language standard to use.
The target also links to the vulkan headers.
Note that this commit is in a series of commits and is not meant to work
by itself.
-
578e4771
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Replace loader_cmake_config.h with definitions
Use CMakes built in ability to define compiler definitions to targets so that
the loader_cmake_config.h file is made redundant. This simplifies the build
process by removing the configure_file and including it. Note that this
commit is a part of a series of commits and not intended to work by itself.
-
c3b4b13a
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Use the CMake Threads package
Instead of manually linking to pthreads, use find_package(Threads) to get the
platform specific name for the threading library and link to it. Use the
THREADS_PREFER_PTHREAD_FLAG to ensure we prefer pthreads before anything
else. Note that this commit is a part of a series of commits and not
intended to work by itself.
-
ab0fe527
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Refactor Windows specific loader CMake code
Merged the loader-norm and vulkan libraries and moved the dirent_on_windows.c
into the same block that adds loader_windows.c to the list of sources. This
commit is a part of a series of commits and not intended to work standalone.
-
a30d1eeb
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Use GLOBs to get macOS vulkan framework headers
This commit recitfies the situation that this list of header files is out of
date with the upstream Vulkan-Headers repo. It uses GLOB_RECURSE to find all
the files and subdirectories in the vulkan headers include directory.
In a perfect world, the list of headers would be removed because users should
be using the Vulkan-Headers for that purpose. But to maintain any existing
users it will be retained.
CMake 3.12 added CONFIGURE_DEPENDS to globs to better support changes in the
list being caught by CMake. Since this repo uses 3.11 as the minimum, it will
not be added unless supported by the currently installed CMake version. While
better, it is not perfect at catching all changing file lists, and thus it
may still be necessary to re-run CMake manually to get an updated list of
headers files.
Note that this commit is a part of a series of commits and not intended to
work standalone.
-
6a4ce576
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Use CMake provided library names on macOS
The ${CMAKE_DL_LIBS} and Threads::Threads provides generic mechanisms to
use the dynamic linker and threading libraries on the system. In addition,
this commit replaces Vulkan::Headers with loader_specific_commits for the
vulkan-framework target. Note that this commit is in a series of commits and
not intended to work standalone.
-
cab0a077
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Remove BUILD_LOADER build option
No reason to have this since the tests depend on the loader being built to function.
-
4d2911ed
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Format unix fallback paths in CMakeLists.txt
-
c90e4d8e
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Report secure_getenv missing when not using MSVC
-
b935341a
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Fix compiler warnings in tests on MSVC
-
02c45781
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Cleanup MSVC CMake code
* Googletest has been updated to 1.11 which means the TR1 deprecation notice is
unecessary.
* The `/permissive-` flag has been moved to loader_common_options so it doesn't
have to be repeated over and over.
* Since we do not support VS 2013 and early, use /guard:cf everywhere
* Remove MSVC_LOADER_COMPILE_OPTIONS in favor of loader_common_options
* Remove reduntant compile options and include directories
-
fa7b4fde
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Use targets CMake logic instead of directories
Replace the last usages of CMake logic that applied compiler definitions and
options to the folder with usage of a target.
-
174a871a
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Specify wrap_objects.cpp in CMake code
While CMake will append appropriate file extensions when the full name isn't
given, such as "wrap_objects", it is best to specify the file with its
extension for explicitness.
-
1282d602
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Make _GNU_SOURCE a common target property
Rather than set it per target that needs it, make it available on the
loader_specific_options target for consistency.
-
2ceafb35
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Set CMake C & C++ standard per target
-
7420e67f
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Fix macOS CMake errors
Used incorrect syntax for CONFIGURE_DEPENDS.
-
bd0adb30
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Refactor CMake to user correct C/C++ Standard
Make sure the correct C++ version but also refactor the tests CMake code
to clean it up.
-
ab8e7d55
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Use target_link_options if available in CMake
-
a0b1b557
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Fix tests compiler warnings from bool conversions
While set_env_var did return a boolean, this caused odd performance warnings
on old compilers and wasn't being used by the tests.
-
7e55b0d8
by Charles Giessen
at 2022-03-09T15:06:30-07:00
Set VK_NO_PROTOTYPES on test targets
Moves the definition of VK_NO_PROTOTYPES out of a header and into cmake so that
so that libraries and executables can set or not set it if they so desire. This
allows binaries to link directly to the loader if need be.
-
eac5f009
by Charles Giessen
at 2022-03-09T15:06:30-07:00
make secure_getenv discovery project wide
Since the tests need to know if secure_getenv exists or not, the detection and
setup logic is now in the top level CMakeLists.txt.
-
42d5db3f
by Charles Giessen
at 2022-03-09T16:02:22-07:00
Remove VK_NO_PROTOTYPES from test_util.h
-
8198bebc
by Mark Young
at 2022-03-10T13:55:26-07:00
Modify loader VK_ADD_DRIVER_FILES behavior
Modify the loader to only use VK_ADD_DRIVER_FILES if
VK_DRIVER_FILES or VK_ICD_FILENAMES is not used.
This could have caused weird issues with systems where VK_DRIVER_FILES
was used to force drivers in a specific order/location for testing.
Resolves issue #871
-
a0c7be05
by Jamie Madill
at 2022-03-14T13:45:57-06:00
Use no-chromium-code in GN build.
Aligns the configs so that new warnings turned on in Chromium
Clang don't show up in the loader project.
Fixes #878
-
972d690b
by Charles Giessen
at 2022-03-14T23:31:26-06:00
Revamp unknown function tests
Make use of multiple different functions that are used so that its more
obvious when a test is actually calling the right function.
-
b5e6d4cb
by Charles Giessen
at 2022-03-14T23:31:26-06:00
Move unknown function logic into dedicated file
unknown_function_handling.c now holds all of the unknown function handling
logic.
-
2ded39d6
by Charles Giessen
at 2022-03-14T23:31:26-06:00
Remove hasing of unknown functions
Use a simple linear search instead. This greatly simplifies the logic and
reduces the places for the logic to go awry.
-
38e9dc8f
by Charles Giessen
at 2022-03-14T23:31:26-06:00
Test framework now shims registry functions
Previously the way the test framework worked was to fake the registry using a
special windows API call. However this led to brittle tests and was incompatible
with googletest's death test capabilities.
These death tests highlighted that the current set of them didn't use the built in
matcher to verify a correct crash/abort. This commit also amends all uses of
ASSERT_DEATH to provide the relevant death message.
If a driver reports an interface version greater than 0 but doesn't export
vk_icdGetInstanceProcAddr, the loader will now skip the driver.
-
6b3cb370
by Charles Giessen
at 2022-03-14T23:31:26-06:00
Tests close layer handles when necessary
The fs::FolderManager can't close objects that are in use, thus if the tests
keep open a binary then the destructor will fail to delete the file. This
commit manually cleans out the FrameworkEnvironment's loaded layers to prevent
this from happening.
-
ab207b08
by Mike Schuchardt
at 2022-03-15T12:06:40-07:00
build: Update to header 1.3.208
- Update known-good
- Generate source
-
829344da
by Mark Young
at 2022-03-25T17:12:49-06:00
Fix non-sorted surface indexing
The physical device terminator was missing the ICD index in the
non-sorted path. This caused crashes in Angle before it was realized
that the sorting code was unintentionally disabled in that build
path.
Also, add tests to catch this case in the future in the WSI code, but
this required converting all the TEST_F tests to TEST since Gtest
didn't like mixing the 2 on my system.
Finally, fix a few WSI error messages in the loader which were
missing spaces.
Fixes #863 for non-sorting paths
-
2b9ca66f
by Charles Giessen
at 2022-03-25T17:12:58-06:00
Remove LDP_DRIVER_6
The cause for this policy was due to dynamic linker behavior which could have
resulted in the wrong symbols being used. However, this didn't occur in
practical usage of the dynamic linker. Also drivers exporting Vulkan
entrypoints was a useful behavior to enable testing and more flexible usage
that this policy actively interfered with.
-
f23fdb29
by Mark Young
at 2022-03-25T17:13:10-06:00
Fix #888 crash in Lutris with Linux sorting
The sorting algorithm needed to take into account both the application
API version as well as the driver API version.
This required additional changes to the sorting algorithm for the fallback
since even if the instance supports the extension or Vulkan 1.1, the individual
drivers may not.
Also, add supporting tests which would catch these cases in the future.
In the process, I realized we assumed that the presence of an extension in the
test_icd indicated "enablement" which was incorrect. So I separated out
that into a set of "enabled instance extensions"
-
b29f461d
by Mark Young
at 2022-03-25T17:13:18-06:00
Apply code review comments from @charles-lunarg
-
0dac537a
by Mike Schuchardt
at 2022-04-07T13:59:28-06:00
build: Update to header 1.3.209
- Update known-good
- Generate source
-
b0c2e068
by unknown
at 2022-04-07T14:01:20-06:00
Fixup several small issues found by Visual Studio
The VS Analyzer went through the codebase and pointed out a dozen warnings and
one possible crash.
-
bfa88a26
by Charles Giessen
at 2022-04-07T14:03:27-06:00
Dont emit warnings on unknown manifest file versions
Since the loader is meant to be forward compatible, it makes little sense to emit
a warning when an ICD or Layer manifest is found with a version that it doesn't
understand. Thus they now are INFO level.
-
213a1f5e
by Mike Schuchardt
at 2022-04-07T14:03:42-06:00
build: Update to header 1.3.210
- Update known-good
- Generate source
-
1e36dfb2
by Charles Giessen
at 2022-04-07T14:06:34-06:00
Fix missed Physical Devices in Windows
The previous logic would cause any non-sorted physical devices to be missed
when aggregating the final list. This caused crashes due to the phys_dev
value not being initialized. The fix is to make sure both sorted and non
sorted physical devices are included in the final output of
setup_loader_term_phys_devs().
-
38a03121
by Mike Schuchardt
at 2022-04-07T14:06:40-06:00
build: Update to header 1.3.211
- Update known-good
- Generate source
-
2b8ce03f
by Charles Giessen
at 2022-04-07T14:08:35-06:00
Warn if portability_enumeration extension should be enabled
Log an error if an application creates a VkDevice from a physical device which
was enumerated from a driver that is a portability driver but the application
didn't correctly enable the portability enumeration flag & extension.
-
159cc6e7
by Charles Giessen
at 2022-04-07T14:09:15-06:00
Document VK_KHR_portability_enumeration support
-
bfb41916
by Charles Giessen
at 2022-04-07T15:32:31-06:00
Fixup loader after cherry-picks
Makes all but 2 tests succeed:
ICDInterfaceVersion2PlusEnumerateAdapterPhysicalDevices.VerifyPhysDevResults
ICDInterfaceVersion2PlusEnumerateAdapterPhysicalDevices.VerifyGroupResults
This is because the Test Infrastructure necessary to make the tests work was not
cherry-picked over.