layer: improve how layer handles Vulkan extensions
authorJoe Jenner-Bailey <joe.jenner-bailey@arm.com>
Wed, 24 Jun 2020 08:36:21 +0000 (09:36 +0100)
committerMatteo Franchin <matteo.franchin@arm.com>
Fri, 5 Feb 2021 11:22:32 +0000 (11:22 +0000)
commit950cdd406a8d6b2546d450a32fdc1fc4d9bb4491
treef4d9754a2823c3d0607ac8ad216164c609fc818d
parentf0dcf4fb3679f5e7d7b385799128e92ec95f4d54
layer: improve how layer handles Vulkan extensions

In vkCreateInstance:

- ppEnabledExtensionNames is checked to determine which window-system
  platforms the layer should enable support for.
- support in the layer is always enabled if possible, even if this may
  be provided by the ICDs. Platforms not supported by the layer should
  still be correctly supported by the ICDs (untested.)
- pApplicationInfo is changed to bump the Vulkan API version
  in order to enable instance extensions that are necessary for some
  of the platforms implemented in the layer.

In vkCreateDevice:

- ppEnabledExtensionNames is extended with device extensions required
  by the layer.
- if the extensions are not supported by the physical device, the
  layer fails to initialize the device.

Change-Id: Ibdd69fca38e7909d5b8f0ac7698805ea5f425ac6
Signed-off-by: Joe Jenner-Bailey <joe.jenner-bailey@arm.com>
Signed-off-by: Matteo Franchin <matteo.franchin@arm.com>
13 files changed:
layer/VkLayer_window_system_integration.json
layer/layer.cpp
layer/private_data.cpp
layer/private_data.hpp
layer/surface_api.cpp
layer/surface_api.hpp
layer/swapchain_api.cpp
util/extension_list.cpp
util/platform_set.hpp [new file with mode: 0644]
wsi/headless/surface_properties.cpp
wsi/surface_properties.hpp
wsi/wsi_factory.cpp
wsi/wsi_factory.hpp