Closing this ticket, as the sentence demanding that implict layers are disabled if their version is below apiVersion
has been removed. The Loader has also been changed accordingly. See https://github.com/KhronosGroup/Vulkan-Loader/pull/1011
When calling vkCreateInstance
, an application can provide the VkInstanceCreateInfo::pApplicationInfo::apiVersion
field, defined as the highest Vulkan version the application is designed to use, see https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkApplicationInfo.html. This is not necessarily the API version that the application will end up using. In particular, the application may end up using an earlier Vulkan API version if there are no Installable Client Drivers (ICDs) in the system that support the newer version.
At the same time, the Vulkan specification demands that: “Implicit layers must be disabled if they do not support a version at least as high as apiVersion
” and the Khronos Vulkan loader implements this recommendation. Unfortunately, this recommendation is problematic for implicit layers that implement one or more Vulkan extensions. It means that an implementation of a Vulkan extension provided as an implicit layer can stop working for applications that advertise ability to use newer Vulkan APIs. The problem would not occur if the extension was implemented in the ICD, instead.
This problem can be worked around by updating the Vulkan WSI Layer so that it supports the latest Vulkan API at all times. However, this approach may not be practical in certain cases. For example, in cases where a device stops receiving updates but still allows its user to access applications from an online store, which is continuously updated.
Another possible workaround is changing the Vulkan Loader to never disable the Vulkan WSI Layer. It is then the system integrator’s responsibility to ensure the Vulkan runtime is consistent, i.e. the Vulkan WSI Layer supported API version is not lower than the API version supported by all the other components in the Vulkan runtime (loader, ICDS, other layers.)
A solution to this problem is currently being investigated.
Matteo Franchin (962472c7) at 25 Aug 10:24
Add Pre-commit config and add to CI pipeline
Add a precommit CI job that runs clang-format and fails if formatting issues are found
Fixed
I am a bit confused by the number of precommit jobs we have (2). It seems to me they are redundant.
Matteo Franchin (8444165b) at 19 Aug 08:56
Update WSI layer to use C++17
This commit updates the layer to build with C++ 17 and replaces usages of the custom util::optional
with the std::optional
offered by the standard.
Matteo Franchin (e40628a1) at 03 Aug 13:43
Remove duplication of create_aliased_image_handle implementations
... and 1 more commit
Matteo Franchin (36b640c4) at 03 Aug 13:43
Fix issue found by static analysis
Replaced call to unsafe function strcpy() with call to snprintf().
Matteo Franchin (36b640c4) at 03 Aug 13:39
Fix issue found by static analysis
... and 2 more commits
Matteo Franchin (425b885f) at 25 Jul 15:06
All of the issues that this patch fixes should not occur in practice, but make the code a bit more robust. For example, this patch default-initializes structures passed to Vulkan for initialization. Normally, initialization should be done by the Vulkan entrypoint, so it should be fine not initializing the structure as long as the Vulkan API entrypoint exits with success status. It is still a good idea to default-initialize anyway to make the behaviour deterministic in cases where something is wrong in the system. All changes made should have a negligible impact on performance for typical applications.
Change-Id: Ia606ad2d3ea1627f9dfef0cadf93c7468ab568d8 Signed-off-by: Matteo Franchin matteo.franchin@arm.com
Matteo Franchin (425b885f) at 22 Jul 15:54
Fix issues found by static analysis
... and 71 more commits
Signed-off-by: Lior Dekel lior.dekel@arm.com Change-Id: Ia5053b202f4e64fd7a255ede513653a951ab3d41
Matteo Franchin (91583f1a) at 15 Jul 13:18
Create common functions in surface_capabilities class
Change-Id: Ifa3f945a1216677c9410c09f4b4341a70d918514 Signed-off-by: Rosen Zhelev rosen.zhelev@arm.com
Matteo Franchin (711836af) at 13 Jul 09:17
Update Khronos headers API version