platform/upstream/Vulkan-Loader.git
3 years agobuild: Update known-good files for 1.2.169 header
Shannon McPherson [Tue, 2 Feb 2021 21:03:46 +0000 (14:03 -0700)]
build: Update known-good files for 1.2.169 header

Changes:
- Updated `known_good.json`

Change-Id: Iaf11b12afdcd11b06ebce4b66a0b56b2b097522f

3 years agoloader: Do not return OOM when layer count is 0
J.D. Rouan [Mon, 1 Feb 2021 22:03:04 +0000 (14:03 -0800)]
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

3 years agoCMake tweak for macOS cross compilers, seems okay elsewhere too
richard-lunarg [Mon, 1 Feb 2021 23:31:41 +0000 (18:31 -0500)]
CMake tweak for macOS cross compilers, seems okay elsewhere too

3 years agoloader: Fix AArch64 Android build
Kévin Petit [Fri, 29 Jan 2021 16:05:43 +0000 (16:05 +0000)]
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>
3 years agoFix crash with NULL messenger
nihui [Sat, 23 Jan 2021 12:00:34 +0000 (20:00 +0800)]
Fix crash with NULL messenger

3 years agoloader: Fix Android build
Kévin Petit [Thu, 28 Jan 2021 20:15:51 +0000 (20:15 +0000)]
loader: Fix Android build

- Add missing prototype
- Fix incorrect parameter handling

Signed-off-by: Kévin Petit <kevin.petit@arm.com>
3 years agoloader: Do not remove duplicated layers
Ludovico de Nittis [Tue, 1 Dec 2020 16:03:03 +0000 (17:03 +0100)]
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>
3 years agobuild: Update known-good files for 1.2.166 header
Shannon McPherson [Mon, 4 Jan 2021 18:14:09 +0000 (11:14 -0700)]
build: Update known-good files for 1.2.166 header

Changes:
- Updated `known_good.json`

Change-Id: Idf48ead0a4cad20ec6f1675741be0ebae45770a0

3 years agoloader: silence fread unused result
Charles Giessen [Mon, 28 Dec 2020 19:33:17 +0000 (13:33 -0600)]
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

3 years agobuild: Update known-good files for 1.2.165 header
Shannon McPherson [Fri, 18 Dec 2020 22:33:16 +0000 (15:33 -0700)]
build: Update known-good files for 1.2.165 header

Changes:
- Updated `known_good.json`
- Generated new source files

Change-Id: I5156923b1d3fb96d9e4fbe8dddb533f93561adfd

3 years agoRename LIB_SUFFIX to VULKAN_LIB_SUFFIX
Michel Zou [Wed, 16 Dec 2020 14:03:23 +0000 (15:03 +0100)]
Rename LIB_SUFFIX to VULKAN_LIB_SUFFIX

Closes #527

3 years agocmake: remove mingw lib prefix
Michel Zou [Thu, 26 Nov 2020 21:12:58 +0000 (22:12 +0100)]
cmake: remove mingw lib prefix

we want the dll to be named vulkan-1.dll and not libvulkan-1.dll
as it is the default on mingw (for drop-in replacement)

3 years agoloader: Remove SEEK_END usage
Lenny Komow [Tue, 1 Dec 2020 17:49:01 +0000 (10:49 -0700)]
loader: Remove SEEK_END usage

Change-Id: I699caaf048d70756649d9f6a2c7dfb012c6d2342

3 years agoloader: Properly check for elevated permissions
Charles Giessen [Mon, 19 Oct 2020 23:22:13 +0000 (17:22 -0600)]
loader: Properly check for elevated permissions

The status message for the loader not searching environment
variables when running with elevated permissions didn't properly
check. This commit adds in proper guards to make sure the status
message only prints when compiled with explicit use of non-secure
getenv

Change-Id: I993bb08de21bb0e338852368c24fe615d0d1f9b9

3 years agobuild: Update known-good files for 1.2.162 header
Shannon McPherson [Mon, 23 Nov 2020 16:19:03 +0000 (09:19 -0700)]
build: Update known-good files for 1.2.162 header

Changes:
- Updated `known_good.json`
- Generated new source files

Change-Id: Ic0f414ccf230314fa648abbb00da9509e1389a31

3 years agoAdd GGP WSI platform support to Vulkan-Loader
J.D. Rouan [Mon, 16 Nov 2020 23:36:42 +0000 (15:36 -0800)]
Add GGP WSI platform support to Vulkan-Loader

Add GGP WSI platform support to Vulkan-Loader. GGP is Google Games
Platform, the platform for Stadia.

3 years agoscripts: Add default return type for VkDeviceSize
Mike Schuchardt [Mon, 6 Jul 2020 23:05:57 +0000 (16:05 -0700)]
scripts: Add default return type for VkDeviceSize

3 years agoloader: Cast dxgi object to void** to suppress gcc warnings.
Biswapriyo Nath [Thu, 12 Nov 2020 13:05:06 +0000 (18:35 +0530)]
loader: Cast dxgi object to void** to suppress gcc warnings.

3 years agopkgconfig: Missing lib suffx on win32
Michel Zou [Mon, 16 Nov 2020 20:09:38 +0000 (21:09 +0100)]
pkgconfig: Missing lib suffx on win32

on win32 the library name is vulkan-1, not vulkan

3 years agobuild: Update known-good files for 1.2.161 header
Shannon McPherson [Mon, 16 Nov 2020 19:55:26 +0000 (12:55 -0700)]
build: Update known-good files for 1.2.161 header

Changes:
- Updated `known_good.json`

Change-Id: Ib6f5ff539b627b6978e81e6247ecfdeee1506c1f

3 years agoReland "Generate libvulkan.so.1 on Linux instead of libvulkan.so"
Shahbaz Youssefi [Tue, 3 Nov 2020 03:32:02 +0000 (22:32 -0500)]
Reland "Generate libvulkan.so.1 on Linux instead of libvulkan.so"

Chromium now uses VK_KHR_xcb_surface instead of VK_KHR_xlib_surface, so
it's able to use the gn build of Vulkan-Loader.

3 years agobuild: Update known-good files for 1.2.160 header
Shannon McPherson [Tue, 10 Nov 2020 18:07:08 +0000 (11:07 -0700)]
build: Update known-good files for 1.2.160 header

Changes:
- Updated `known_good.json`
- Generated new source files

Change-Id: I8afe698dd58a062d28f40a49f51cfa6c19409387

3 years agobuild: Update known-good files for 1.2.159 header
Shannon McPherson [Mon, 2 Nov 2020 18:46:58 +0000 (11:46 -0700)]
build: Update known-good files for 1.2.159 header

Changes:
- Updated `known_good.json`

Change-Id: I7c30f49ac3514e8c3dd1866b07bf3bc3ee2fe55e

3 years agoRevert "Generate libvulkan.so.1 on Linux instead of libvulkan.so"
Shahbaz Youssefi [Fri, 30 Oct 2020 05:21:10 +0000 (01:21 -0400)]
Revert "Generate libvulkan.so.1 on Linux instead of libvulkan.so"

Causes Chromium to pick up ANGLE's build of Vulkan-Loader instead of the
system one, with the caveat that the gn build of Vulkan-Loader doesn't
support VK_KHR_xlib_surface which Chromium depends on.

This change can be re-introduced once Chromium switches to
VK_KHR_xcb_surface.

This reverts commit 8308d6744d50e4dc357e60282436f6ec0942b8c8.

3 years agoAdd an option to disable MASM
Michel Zou [Thu, 22 Oct 2020 21:29:35 +0000 (23:29 +0200)]
Add an option to disable MASM

MASM generally goes with msvc, but it is not necessarily available with MinGW.

3 years agoConfigure vulkan.pc when pkg-config is available
xantares [Tue, 20 Oct 2020 17:51:16 +0000 (19:51 +0200)]
Configure vulkan.pc when pkg-config is available

This allows vulkan.pc to be enabled on MinGW

3 years agoGenerate libvulkan.so.1 on Linux instead of libvulkan.so
Shahbaz Youssefi [Fri, 23 Oct 2020 01:48:53 +0000 (21:48 -0400)]
Generate libvulkan.so.1 on Linux instead of libvulkan.so

This is the Linux way.  Previously, a copy step was added to copy
libvulkan.so to libvulkan.so.1.  However, that only runs if everything
is built and not when a specific target is built.

There is no need for libvulkan.so on Linux, so this change makes the
libvulkan target directly generate libvulkan.so.1 and removes the copy
step.

3 years agobuild: Update known-good files for 1.2.158 header
Shannon McPherson [Mon, 19 Oct 2020 16:09:31 +0000 (10:09 -0600)]
build: Update known-good files for 1.2.158 header

Changes:
- Updated `known_good.json`
- Generated new source files

Change-Id: I5f06eec6afb61bac576cbad3e6e6982c0bd0440c

3 years agotests: Use cmake -E copy instead of xcopy
Michel Zou [Thu, 22 Oct 2020 21:24:24 +0000 (23:24 +0200)]
tests: Use cmake -E copy instead of xcopy

3 years agoAdd support for VK_FUCHSIA_imagepipe_surface
Craig Stout [Mon, 26 Oct 2020 19:05:15 +0000 (12:05 -0700)]
Add support for VK_FUCHSIA_imagepipe_surface

4 years agoFix vulkan link to on cfgmgr32 case-sensitive fs
xantares [Tue, 20 Oct 2020 17:37:43 +0000 (19:37 +0200)]
Fix vulkan link to on cfgmgr32 case-sensitive fs

On MinGW from Linux this fails because cfgmgr32 is lowercase. This will still work on win32.

4 years agoCMake: Fix libdir in pkg-config file, dehardcode includedir
Rémi Verschelde [Mon, 12 Oct 2020 10:46:18 +0000 (12:46 +0200)]
CMake: Fix libdir in pkg-config file, dehardcode includedir

Fixes #489.
Supersedes #214.

4 years agoAdd Fuchsia support
Craig Stout [Thu, 1 Oct 2020 02:59:30 +0000 (22:59 -0400)]
Add Fuchsia support

Fuchsia (fuchsia.dev) builds with GN and uses a loader service to load
the ICD into the application's address space.

ANGLE builds have been verified.
Reemoves unused variable is_icd.

4 years agobuild: Update known-good files for 1.2.157 header
Shannon McPherson [Mon, 12 Oct 2020 20:37:47 +0000 (14:37 -0600)]
build: Update known-good files for 1.2.157 header

Changes:
- Updated `known_good.json`

Change-Id: I7705cbe942a67c7b915349a1c34c7615d1dc4691

4 years agoHandling also zero size override paths.
Dorian Apanel [Wed, 7 Oct 2020 22:46:12 +0000 (00:46 +0200)]
Handling also zero size override paths.

4 years agoloader: Override layer load when custom allocator used.
Dorian Apanel [Wed, 7 Oct 2020 09:18:51 +0000 (11:18 +0200)]
loader: Override layer load when custom allocator used.

When custom allocator is used, and is requested to allocate
zero size allocation, it can return NULL, which is then
interpreted as VK_ERROR_OUT_OF_HOST_MEMORY.

When such allocator was used, override layer was not loaded.

fix #485

4 years agoFix formatting issue.
Piers Daniell [Wed, 7 Oct 2020 18:29:54 +0000 (12:29 -0600)]
Fix formatting issue.

4 years agoFix some issues when EnumerateAdapterPhysicalDevices is available
Piers Daniell [Wed, 7 Oct 2020 16:39:39 +0000 (10:39 -0600)]
Fix some issues when EnumerateAdapterPhysicalDevices is available

1) Fix a memory leak with sorted_array[].physical_devices when EnumerateAdapterPhysicalDevices  returns an error. This fixes a failure with the "dEQP-VK.api.device_init.create_instance_device_intentional_alloc_fail" Vulkan CTS test.

2) Fix an issue with vkEnumeratePhysicalDeviceGroups() when fpCreateDXGIFactory1() fails, which will happen with Windows versions before version 10.

4 years agobuild: Update known-good files for 1.2.156 header
Shannon McPherson [Tue, 6 Oct 2020 16:47:13 +0000 (10:47 -0600)]
build: Update known-good files for 1.2.156 header

Changes:
- Updated `known_good.json`

Change-Id: Iefcdd52d8021515764d644ca86b0c5cd3dce8e16

4 years agoloader: Fixes build with MinGW-w64 8.0.0.
Brecht Sanders [Tue, 29 Sep 2020 16:14:55 +0000 (18:14 +0200)]
loader: Fixes build with MinGW-w64 8.0.0.

See http://winlibs.com for a release of such GCC compiler
See issue https://github.com/KhronosGroup/Vulkan-Loader/issues/474

4 years agodocs: Update build.md for static build changes
Charles Giessen [Mon, 5 Oct 2020 22:58:04 +0000 (16:58 -0600)]
docs: Update build.md for static build changes

macOS is the only supported platform for a static loader.
Changes the build.md and CMakeList.txt to correctly specify
the option and warning message.

Change-Id: Iaf00e65e60ce5833516b7fe290eed7198436b48b

4 years agodocs: Remove outdated references to WDK
Lenny Komow [Mon, 5 Oct 2020 22:38:35 +0000 (16:38 -0600)]
docs: Remove outdated references to WDK

Change-Id: Iab787fa84e76fefd5b22bd97566dbf47cf642ed0

4 years agoloader: Fix incorrect allocation error cleanup
Lenny Komow [Thu, 1 Oct 2020 17:03:25 +0000 (11:03 -0600)]
loader: Fix incorrect allocation error cleanup

4 years agodocs: Update static linking info
Charles Giessen [Tue, 29 Sep 2020 20:00:21 +0000 (14:00 -0600)]
docs: Update static linking info

When static linking was removed as a build option, the documentation
for it was not ammended. This commit changes the text to describe that
it used to be supported, is no longer supported, and why the feature
was removed.

Change-Id: I8da0c1c811be7e9dc5119c4c27c34a5cbb30edf8

4 years agobuild: Update known-good files for 1.2.154 header
Shannon McPherson [Mon, 21 Sep 2020 16:21:48 +0000 (10:21 -0600)]
build: Update known-good files for 1.2.154 header

Changes:
- Updated `known_good.json`
- Generated new source files

Change-Id: I909289d4e1523ed32aa62516a4725a2ff2df4f65

4 years agoRevert "loader: Return error if layer loading failed"
Charles Giessen [Thu, 17 Sep 2020 22:31:16 +0000 (16:31 -0600)]
Revert "loader: Return error if layer loading failed"

This reverts commit 49648d8fb398ac7d3d8e159939de060b8e759ecf.
Many layers were relying on silently failing to allow 32/64 bit versions
to work on linux. A later commit will properly check for failing layers.

4 years agoloader Fix issues with physical device sorting
Piers Daniell [Thu, 10 Sep 2020 22:48:19 +0000 (16:48 -0600)]
loader Fix issues with physical device sorting

Change-Id: I0bf01e5348aba2422eb0735928cfdcd682d1cd54

4 years agobuild: Update known-good files for 1.2.153 header
Shannon McPherson [Mon, 7 Sep 2020 19:37:45 +0000 (13:37 -0600)]
build: Update known-good files for 1.2.153 header

Changes:
- Updated `known_good.json`

Change-Id: I54f79fa08f65ff333ab47b651939dfd05b3c5094

4 years agodocs: Add info on VkConfig and override layer
Charles Giessen [Mon, 1 Jun 2020 17:45:30 +0000 (11:45 -0600)]
docs: Add info on VkConfig and override layer

Change-Id: I7fab8f7ff25a7f3ffd00a88da82daeac69e4e83c

4 years agoUpdate Linux distro used in Travis pipeline
Trung Lê [Fri, 10 Apr 2020 06:11:55 +0000 (16:11 +1000)]
Update Linux distro used in Travis pipeline

Ubuntu bionic comes with cmake 3.10.2. We could get rid of the custom cmake installation step.

4 years agoloader: Make device extensions return same count
Charles Giessen [Wed, 5 Aug 2020 19:42:44 +0000 (13:42 -0600)]
loader: Make device extensions return same count

Previously the loader would return a different count in the call to
vkEnumeratePhysicalDeviceExtensionProperties if any implicit layers contained extensions
that a driver also happened to support, thus causing a duplicate entry to the count, but
was later resolved in the second call to that function. This commit de-duplicates the
extensions when getting the count, preventing such an issue from occuring.

Change-Id: I3b3c0b8871e412d26dda916ed1e1e3fe3299491e

4 years agoloader: Return error if layer loading failed
Charles Giessen [Mon, 1 Jun 2020 22:26:54 +0000 (16:26 -0600)]
loader: Return error if layer loading failed

Loader will now fail vkCreateInstance with VK_ERROR_LAYER_NOT_PRESENT
if the layer's library failed to load. Previously, it would log the
error but continue, leading to false positives since it would return
VK_SUCCESS.

Change-Id: I00804b6f02cc6e927ac0219b4cb0c2361d6561fe

4 years agodocs: Remove mention of old layers
Charles Giessen [Thu, 27 Aug 2020 22:27:06 +0000 (16:27 -0600)]
docs: Remove mention of old layers

The LoaderAndLayerInterface.md contained references to layers that
are no longer exist. This commit cleans that up.

Change-Id: I09a78513ba6f56cad6b6e9f2432242b86a291e93

4 years agobuild: Update known-good files for 1.2.152 header
Shannon McPherson [Thu, 27 Aug 2020 17:51:32 +0000 (11:51 -0600)]
build: Update known-good files for 1.2.152 header

Changes:
- Updated `known_good.json`

Change-Id: Ia6090de3d029dd2bf96a8d745d3c95461fd31bd6

4 years agotests: Change license to Apache 2.0
Lenny Komow [Thu, 27 Aug 2020 17:22:26 +0000 (11:22 -0600)]
tests: Change license to Apache 2.0

Change-Id: Id0d23d1373154512b9e94af89a046b6b4e6d932b

4 years agoGN: Add missing header dependencies.
Jamie Madill [Thu, 27 Aug 2020 03:40:09 +0000 (23:40 -0400)]
GN: Add missing header dependencies.

These headers were detected as missing by an ANGLE tool. Adding them
should fix some edge cases with incremental builds.

4 years agorepo: Prevent cmake name mismatch warning
Lenny Komow [Tue, 25 Aug 2020 20:42:53 +0000 (14:42 -0600)]
repo: Prevent cmake name mismatch warning

Change-Id: I76c2c38ee42cf3b2956ecbeca4cd038dc4ffd800

4 years agoFix formatting
Ryan Harrison [Wed, 26 Aug 2020 14:02:28 +0000 (10:02 -0400)]
Fix formatting

4 years agoMove variables into scope they are referenced within
Ryan Harrison [Wed, 26 Aug 2020 14:01:14 +0000 (10:01 -0400)]
Move variables into scope they are referenced within

This prevents unused variable warnings/errors on non-Windows
platforms.

Fixes #459

4 years agoloader: Fix invalid cleanup on allocation error
Lenny Komow [Tue, 18 Aug 2020 21:38:08 +0000 (15:38 -0600)]
loader: Fix invalid cleanup on allocation error

Change-Id: I781ba00a65fa59a02423ea0d7c4168bda2c50193

4 years agoloader: Fix some non-msvc compiler warnings
Biswapriyo Nath [Wed, 29 Jul 2020 04:58:18 +0000 (10:28 +0530)]
loader: Fix some non-msvc compiler warnings

changes:
* loader/loader.c: cast dxgi_factory to void** type
* tests/loader_validation_tests.cpp: check if __STDC_FORMAT_MACROS is already defined
* tests/test_common.h: check if NOMINMAX is already defined
* tests/test_commogn.h: check _MSC_VER instead of WIN32 before pragma warning directive

Change-Id: I2fd78b760a90c2ac0e6463a60f5593a24ca904b8

4 years agoloader: Fixes for gn build
Cody Northrop [Mon, 17 Aug 2020 20:28:20 +0000 (14:28 -0600)]
loader: Fixes for gn build

4 years agobuild: Update known-good files for 1.2.151 header
Shannon McPherson [Mon, 17 Aug 2020 17:41:19 +0000 (11:41 -0600)]
build: Update known-good files for 1.2.151 header

Changes:
- Updated `known_good.json`

Change-Id: I1b10c8c50ddbdafc545b5cf8b41e28f5fe79efbd

4 years agodocs: Remove COPYRIGHT.txt from the readme
Fxshlein [Sun, 16 Aug 2020 08:29:50 +0000 (10:29 +0200)]
docs: Remove COPYRIGHT.txt from the readme

the COPYRIGHT.txt file itself was removed in https://github.com/KhronosGroup/Vulkan-Loader/commit/d7452989ff0cfbaeaecfb63d8516cab63cf41bee

4 years agorepo: Set appveyor build to use Win10 SDK
Lenny Komow [Fri, 14 Aug 2020 20:57:27 +0000 (14:57 -0600)]
repo: Set appveyor build to use Win10 SDK

Change-Id: Ic5dbf10dfd0a6229cd6783e5d2edd2f02c1b8ae4

4 years agoloader: Move tag to avoid linux warning
Lenny Komow [Fri, 14 Aug 2020 20:48:42 +0000 (14:48 -0600)]
loader: Move tag to avoid linux warning

4 years agoloader: Fix physical device sorting crash
Piotr Bialecki [Fri, 7 Aug 2020 18:02:02 +0000 (20:02 +0200)]
loader: Fix physical device sorting crash

Fixed crash in device enumeration when there are adapters which do not
support Vulkan. Fixed incorrect error code returned from device
enumeration.

Change-Id: Ieaa1994b3766083a30738a09408e020813e27188

4 years agoloader: Remove illegal asssignment
Lenny Komow [Mon, 3 Aug 2020 21:17:48 +0000 (15:17 -0600)]
loader: Remove illegal asssignment

4 years agoloader: Fix variable name
Lenny Komow [Mon, 3 Aug 2020 17:03:22 +0000 (11:03 -0600)]
loader: Fix variable name

Change-Id: Ib8f9e5aa9de79705ec3665baebab3c0b829abd62

4 years agoloader: Fixpossible memory corruption
Lenny Komow [Mon, 3 Aug 2020 16:40:22 +0000 (10:40 -0600)]
loader: Fixpossible memory corruption

This fixes a possible memory corruption on Linux when using ICDs
without a corresponding physical device.

Change-Id: Ib0c4ed8fa8452fbee78b535372283141331d483d

4 years agoloader: Add reporting for physical device sorting
Lenny Komow [Fri, 31 Jul 2020 00:10:06 +0000 (18:10 -0600)]
loader: Add reporting for physical device sorting

4 years agodocs: Update loader doc with device sorting info
Lenny Komow [Mon, 6 Apr 2020 14:07:37 +0000 (08:07 -0600)]
docs: Update loader doc with device sorting info

4 years agoloader: Sort physical devices on Windows
Lenny Komow [Mon, 27 Jul 2020 17:33:45 +0000 (11:33 -0600)]
loader: Sort physical devices on Windows

This change adds a mechanism to allow sorting of physical devices
and physical device groups on Windows 10 if a driver supports a new
interface.

4 years agobuild: Update known-good files for 1.2.150 header
Shannon McPherson [Thu, 13 Aug 2020 19:22:41 +0000 (13:22 -0600)]
build: Update known-good files for 1.2.150 header

Changes:
- Updated `known_good.json`

Change-Id: I39f42dafe28afcec9b1fa8c9966d108fb7e703b9

4 years agoFix double delete in loaderScanForImplicitLayers.
Jamie Madill [Thu, 13 Aug 2020 18:33:48 +0000 (14:33 -0400)]
Fix double delete in loaderScanForImplicitLayers.

Adds a missing NULL assignment. This problem surfaced when using the
Vulkan configurator.

Fixes #452

4 years agoloader: Make invalid std val layer an error
Lenny Komow [Thu, 6 Aug 2020 23:00:25 +0000 (17:00 -0600)]
loader: Make invalid std val layer an error

Standard validation was changed to khronos validation. This change
moves the warning when illegally using standard validation to an
error that will not allow a user to continue and will tell the user
to use khronos validation.

Change-Id: Iaeae6cffa4494a299f408033569163a7c61d3105

4 years agoloader: fix memory leak of failed to load layers
Dorian Apanel [Thu, 6 Aug 2020 11:50:49 +0000 (13:50 +0200)]
loader: fix memory leak of failed to load layers

fix #445

4 years agodocs: Pass inst handles when getting func pointers
Lenny Komow [Wed, 5 Aug 2020 20:09:52 +0000 (14:09 -0600)]
docs: Pass inst handles when getting func pointers

This fixes some documentation that incorrectly showed passing a NULL
instance when getting function pointers from vkGetInstanceProcAddr.

Change-Id: I56b4e8f244ec79ffb489ad86e09b30b8df8bc006

4 years agoloader: fix override paths leaking in VerifyAllMetaLayers
Charles Giessen [Wed, 5 Aug 2020 19:45:37 +0000 (13:45 -0600)]
loader: fix override paths leaking in VerifyAllMetaLayers

Change-Id: Ic1649d72e71fe0b6ff0a950e30e18feb387f5919

4 years agobuild: Update known-good files for 1.2.148 header
Shannon McPherson [Mon, 20 Jul 2020 18:36:53 +0000 (12:36 -0600)]
build: Update known-good files for 1.2.148 header

Changes:
- Updated `known_good.json`

Change-Id: Ib18f665a1782af4cd9e34923de67b7c3b7ad8393

4 years agoscripts: fix update_deps retry clone
Bob Ellison [Wed, 15 Jul 2020 21:13:48 +0000 (15:13 -0600)]
scripts: fix update_deps retry clone

There was a subtle bug in the original change; "git fetch"
would retry correctly, but "git clone" failed because the
destination directory was missing (after having been removed,
to ensure a clean clone operation).

The test case that was used (hundreds of times) happened to
provoke an error on the "git fetch" path; I was unaware that
the "git clone" failure path had never been exercised.

4 years agobuild: Update known-good files for 1.2.147 header
Shannon McPherson [Tue, 14 Jul 2020 17:25:34 +0000 (11:25 -0600)]
build: Update known-good files for 1.2.147 header

Changes:
- Updated `known_good.json`

Change-Id: I2309eef9e654cdca58770161a9397929a0b23de8

4 years agoloader: Remove RTLD_DEEPBIND flag
Lenny Komow [Tue, 14 Jul 2020 19:54:05 +0000 (13:54 -0600)]
loader: Remove RTLD_DEEPBIND flag

This causes trouble when used with the steam fossilize layer. We'd
still like to use RTLD_DEEPBIND, but we need to work out the issues
first.

Change-Id: Ic44b5a9de9a4e7a1163cbc68e4d5e692315b285c

4 years agoscripts: udpate_deps retry on clone or fetch failure
Bob Ellison [Mon, 13 Jul 2020 17:28:10 +0000 (11:28 -0600)]
scripts: udpate_deps retry on clone or fetch failure

Duplicate change from b636386a7824eb4e6a0d99962e1491ac68d3a295
on KhronosGroup/Vulkan-ValidationLayers, to keep update_deps.py
in sync across all repos.  Original commit message is:

We see spurious failures to connect to github when trying to
run update_deps.py (up to 7% of runs, depending on the machine).
This is an annoyance when running by hand, but a headache and
a serious resource waste when running in automation (as a single
broken "git clone" or "git fetch" can cause the whole run to fail).

These changes allow update_deps.py to automatically retry
"git fetch" and "git clone" operations on failure.

These changes will be duplicated in follow-on PRs to the
other repositories that include "update_deps.py", to keep
them all in sync. These are KhronosGroup/Vulkan-Tools,
KhronosGroup/Vulkan-Loader, LunarG/VulkanSamples, and
LunarG/VulkanTools.

I'm also including a "technical debt" update here, because
VulkanTools/scripts/update_deps.py had diverged from the other
"update_deps.py" versions, to add a way to avoid building a
dependency if that dependency is not supported on the current
build platform. This should be harmless to the other
repositories (though potentially useful in the future). The
original commit was aaabc9df034f1fdf9a976a6293d0983b079143ee
with description:

    In update deps, this will check that a dependency is actually supported
    on the platform being built. This is needed because the loader is a
    dependency on all platforms other than Windows.

4 years agoloader: Make RTLD_DEEPBIND conditional on ASAN
Charles Giessen [Thu, 9 Jul 2020 20:20:10 +0000 (14:20 -0600)]
loader: Make RTLD_DEEPBIND conditional on ASAN

Address Sanitizer (ASAN) is broken by the inclusion of RTLD_DEEPBIND. This commit
removes that dlopen flag if ASAN is detected during compilation.

Change-Id: Ibc3cc329b2f6335a3d5982691b6491efc8c3bbe9

4 years agobuild: Roll GN DEPS file
Mike Schuchardt [Thu, 2 Jul 2020 21:59:18 +0000 (14:59 -0700)]
build: Roll GN DEPS file

Sync standalone GN toolchain revisions with current ANGLE revisions

4 years agoRemove duplicate key / value in scripts/common_codegen.py
Nicolas Caramelli [Tue, 7 Jul 2020 19:56:13 +0000 (21:56 +0200)]
Remove duplicate key / value in scripts/common_codegen.py

4 years agobuild: Update known-good files for 1.2.146 header
Shannon McPherson [Mon, 6 Jul 2020 17:20:11 +0000 (11:20 -0600)]
build: Update known-good files for 1.2.146 header

Changes:
- Updated `known_good.json`
- Generated new source files

Change-Id: Ifbd578d254d544a454e7e84738330eae9983c462

4 years agoloader: Add support for directfb surface extension
Nicolas Caramelli [Sat, 4 Jul 2020 20:53:59 +0000 (22:53 +0200)]
loader: Add support for directfb surface extension

The new VK_EXT_directfb_surface extension is a WSI extension and
thereforce needs loader support like the other surface extensions.

4 years agoloader: Fix symbol lookup order
Alexander Batashev [Sun, 5 Jul 2020 10:27:38 +0000 (13:27 +0300)]
loader: Fix symbol lookup order

Some Vulkan implementations may rely on external libraries.
One example is mesa driver, that uses libLLVM.so. If user
application also links with LLVM, some clashes may take place.
This patch ensures that library's own symbols are looked up
before any other symbols in current process.

4 years agoConvert GN libs lists to frameworks
Sylvain Defresne [Thu, 2 Jul 2020 16:05:01 +0000 (18:05 +0200)]
Convert GN libs lists to frameworks

GN recently added support for Apple frameworks to link, rather than
overloading the libs lists. This pulls .frameworks out of the libs
lists, so that GN can stop supporting .frameworks in libs in the
future.

Bug: chromium:1052560

4 years agoloader: fix wrongly returned error code
Charles Giessen [Wed, 1 Jul 2020 21:34:23 +0000 (15:34 -0600)]
loader: fix wrongly returned error code

vkEnumerateInstanceExtensionProperties was returning INITIALIZATION_FAILED
when a single malformed manifest file was found. This was due to the way
loader_scan_icd only returns an error if no valid ICD's were found.

Change-Id: I84b39774b766d20d607c990bddc921b1c2a4297a

4 years agoloader: fix TSAN warning
Charles Giessen [Thu, 2 Jul 2020 21:26:41 +0000 (15:26 -0600)]
loader: fix TSAN warning

The trampoline vkEnumerateDeviceExtensionProperties locked/unlocked the
loader mutex, but the terminator function also unlocked, causeing a double
free. Removing the locking in the terminator fixes the problem.

Change-Id: I714b243f3410a7fdc371b740def5ab962ae74a6f

4 years agobuild: Update known-good files for 1.2.145 header
Shannon McPherson [Tue, 9 Jun 2020 19:34:36 +0000 (13:34 -0600)]
build: Update known-good files for 1.2.145 header

Changes:
- Updated `known_good.json`
- Propagated `loader_genvk.py` changes
- Modified scripts to accommodate new genvk functionality
- Generated new source files

Change-Id: If54251171bb3c70cef305d1e954aa02124432106

4 years agobuild: include system headers last
Jan Beich [Fri, 19 Jun 2020 10:19:08 +0000 (10:19 +0000)]
build: include system headers last

4 years agoloader: Use MoltenVK in app bundle if found
Charles Giessen [Mon, 15 Jun 2020 19:20:11 +0000 (13:20 -0600)]
loader: Use MoltenVK in app bundle if found

The loader now loads the first ICD in an app bundle if one exists.
This is to prevent multiple copies of MoltenVK being loaded.

Change-Id: I1e4b8e854e5d709c6e229c9591f4a8856e3b2b41

4 years agoloader: Fix crash in vkGetDeviceQueue2
Lenny Komow [Thu, 11 Jun 2020 15:33:04 +0000 (09:33 -0600)]
loader: Fix crash in vkGetDeviceQueue2

This function allows an driver to return a null handle. A previous
change caused that to crash.

Change-Id: Ic2e375b1959bb5a16a6c4854715521e4d392a616

4 years agoscripts: Use named params for generator options
dan sinclair [Tue, 9 Jun 2020 17:14:55 +0000 (13:14 -0400)]
scripts: Use named params for generator options

When calling in the vulkan header python generator the options have
changed in 1.2.142 which causes the options passed by the loader to be
off by one. This ends up setting the emitExtensions to the value of the
sortProcedure and eventually causes the script to fail.

This CL updates the loader to used named parameters for the generator so
that the addition of the genpath does not throw off the parameter
positioning.

Change-Id: I14fda7e90be985216c5243457a22fdcb01b5c82b

4 years agoBuild: Update known-good files for 1.2.141 header
Shannon McPherson [Mon, 25 May 2020 22:43:56 +0000 (16:43 -0600)]
Build: Update known-good files for 1.2.141 header

Change-Id: Ib5f2fab581fb98fa1391c8fde1009bb8bd1c09c7

4 years agoloader: add per-application override layer settings
Charles Giessen [Mon, 28 Oct 2019 20:15:11 +0000 (14:15 -0600)]
loader: add per-application override layer settings

An array of strings was added to the override layer to provide
per-application overrides. The loader will now look for an override profile
which contains an app_key entry that matches the path & name of the currently
running executable. Previous behavior with a global override still works as
intended.

This changes is in conjunction with the VkConfig rewrite to allow for more
than one override profile to be enabled.

Changes to be committed:
modified:   loader/loader.c
modified:   loader/loader.h
modified:   loader/vk_loader_platform.h

Change-Id: I9ddbc98a098d48064110db6c29998eddb336fcda