1. 26 Nov, 2021 1 commit
  2. 25 Nov, 2021 2 commits
  3. 17 Nov, 2021 1 commit
    • Iason Paraskevopoulos's avatar
      Store enabled instance and device extensions · 96657394
      Iason Paraskevopoulos authored
      
      
      Stores the enabled instance and device extensions during
      vkCreateInstance and vkCreateDevice respectively. This fixes an issue
      where function pointers for functions of disabled extensions were
      returned during vkGetInstanceProcAddr/vkGetDeviceProcAddr.
      
      Adds functionality for adding extensions that belong to a subset of
      other extensions in util::extension_list.
      
      Adds function for checking if the proper surface extension has been
      enabled in each WSI backend.
      Signed-off-by: Iason Paraskevopoulos's avatarIason Paraskevopoulos <iason.paraskevopoulos@arm.com>
      Change-Id: If5e23e0d07c9f09006be18c410c4e1d4c3a1e676
      96657394
  4. 15 Nov, 2021 1 commit
    • Dennis Tsiang's avatar
      Add versioning to wsialloc interface · 1701c1fe
      Dennis Tsiang authored
      
      
      The wsialloc interface now has explicit versioning which is used to
      ensure that wsialloc implementations are compatible with the interface.
      wsialloc implementations should define which version they are using and
      upon version mismatch compilation will fail.
      
      Also:
      - add new WSIALLOC_MAX_PLANE macro to define the maximum number of
      planes that the wsialloc should support.
      
      Change-Id: I211fc4341f249deff0c005d946c483ba47366600
      Signed-off-by: Dennis Tsiang's avatarDennis Tsiang <dennis.tsiang@arm.com>
      1701c1fe
  5. 12 Nov, 2021 2 commits
  6. 11 Nov, 2021 3 commits
  7. 10 Nov, 2021 1 commit
  8. 08 Nov, 2021 2 commits
  9. 05 Nov, 2021 2 commits
  10. 02 Nov, 2021 1 commit
    • Matteo Franchin's avatar
      Add documentation for Wayland support · 454ce6c2
      Matteo Franchin authored
      - Clarify requirement of Vulkan 1.1 support in Vulkan Loader and ICDs
      - Add a list of Vulkan extensions required for Wayland
      - Document option to provide a custom implementation of the wsialloc.h
        interface and to disable support for VK_EXT_headless_surface
      - Fix link to Vulkan Loader documentation
      
      Change-Id: I791577a49570855fde86b2ffb1ac8e966f2073d9
      454ce6c2
  11. 01 Nov, 2021 2 commits
  12. 29 Oct, 2021 1 commit
  13. 27 Oct, 2021 1 commit
  14. 26 Oct, 2021 1 commit
  15. 15 Oct, 2021 1 commit
  16. 14 Oct, 2021 1 commit
  17. 11 Oct, 2021 1 commit
  18. 08 Oct, 2021 1 commit
  19. 07 Oct, 2021 1 commit
    • Iason Paraskevopoulos's avatar
      Update json manifest · 212a7314
      Iason Paraskevopoulos authored
      
      
      Updates the api_version to 1.2 in the json manifest. Also, adds the
      entrypoints node in the device extensions as it is mandated by the
      loader's documentation when an extension adds Vulkan API functions.
      
      Removes support for intercepting vkEnumerateInstanceLayerProperties,
      vkEnumerateInstanceExtensionProperties and
      vkEnumerateDeviceExtensionProperties as the loader can get the
      information they provide from the layer's json manifest in its
      terminator functions.
      
      Change-Id: I2c304d1d2ea17d3ea0c723694f8fc4c8a92054a0
      Signed-off-by: Iason Paraskevopoulos's avatarIason Paraskevopoulos <iason.paraskevopoulos@arm.com>
      212a7314
  20. 05 Oct, 2021 2 commits
    • Rosen Zhelev's avatar
      wsi: Fix swapchain teardown causing hangs · d74a006c
      Rosen Zhelev authored
      
      
      The swapchain teardown waits for pending images incorrectly. The
      regression caused the wait to complete before pending images were
      processed as well as a hang when all images are acquired by the
      application or pending presentation. In this case the swapchain
      teardown would hang waiting on the last image presented by a compositor
      that would never be released.
      
      Fixing this exposes additional hangs when swapchain images update the
      free semaphore after being marked as free. There are also potential
      hangs if multiple threads are waiting for all pending images or
      acquiring an image at the same time. These issues are addressed by
      serializing those actions with a mutex.
      
      Change-Id: I266c93a61333d59823f404ea6ba19fb343f46a13
      Signed-off-by: Rosen Zhelev's avatarRosen Zhelev <rosen.zhelev@arm.com>
      d74a006c
    • Iason Paraskevopoulos's avatar
      Remove destroy_image from unpresent function · ba54f0e9
      Iason Paraskevopoulos authored
      
      
      Fixes an issue, where in Wayland the new swapchain hanged during its
      first image presentation in the page flipping thread when it waited for
      the old swapchain to finish presenting its pending images. As the new
      swapchain had started presenting destroy_image was called during the
      unpresent function for the old swapchain and the image's status was set
      to INVALID instead of FREE. So free_image_found never returned true and
      subsequently get_free_buffer was blocked in the loop. The issue is fixed
      by removing the call to destroy_image in unpresent_image as it is
      redundant and is done in swapchain teardown.
      
      Change-Id: I192607f50eb5e5f0e4e9baf66aedf02221f20b63
      Signed-off-by: Iason Paraskevopoulos's avatarIason Paraskevopoulos <iason.paraskevopoulos@arm.com>
      ba54f0e9
  21. 23 Sep, 2021 1 commit
  22. 17 Sep, 2021 1 commit
  23. 14 Sep, 2021 1 commit
    • Rosen Zhelev's avatar
      Use explicit synchronization for Wayland surfaces · d7aabddf
      Rosen Zhelev authored
      
      
      This change adds the use of zwp_linux_explicit_synchronization_v1 to
      attach a Sync FD fence on presented image submitted to the compositor.
      
      The change introduces the wsi/synchronization.hpp header and
      implementation of the synchronization primitives used by WSI
      implementations. Currently only Vulkan fences and fences exportable to
      Sync FD are supported.
      
      Change-Id: Ic7d6b712cc8ae8d171f799af51a70be62585b8a1
      Signed-off-by: Rosen Zhelev's avatarRosen Zhelev <rosen.zhelev@arm.com>
      d7aabddf
  24. 26 Aug, 2021 2 commits
  25. 17 Aug, 2021 4 commits
    • Rosen Zhelev's avatar
      wayland: Add format negotiation · 62821858
      Rosen Zhelev authored
      
      
      Replaces the default format used on swapchain image allocation. Instead
      the format is negotiated between the supported formats by the Wayland
      compositor the Vulkan ICD and any external system allocator.
      
      Change-Id: I4b1261c8832391d54b2932a7cacd34a7a8b13085
      Signed-off-by: Rosen Zhelev's avatarRosen Zhelev <rosen.zhelev@arm.com>
      62821858
    • Rosen Zhelev's avatar
      wsi: Move common objects to the wayland wsi::surface · 24f18c6c
      Rosen Zhelev authored
      
      
      Moves data and Wayland objects such as the registry to the
      wsi::wayland::surface implementation. This also fixes a few issues
      with queries where the Wayland display's default queue was wrongly
      used and minimizes leaking of server memory from registry creation.
      
      Moves the ownership of the zwp_linux_dmabuf_interface object to the
      wsi::wayland::surface as it can be shared between swapchains.
      
      Fixes issues with casting VkSurfaces in the Wayland backend that can
      fail when using other layers that wrap the object.
      
      Change-Id: Ibacf0d4229b73bd685254507f52e58d6341aa9b6
      Signed-off-by: Rosen Zhelev's avatarRosen Zhelev <rosen.zhelev@arm.com>
      24f18c6c
    • Rosen Zhelev's avatar
      Implement objects associated with VkSurface · c7be05e3
      Rosen Zhelev authored
      
      
      Defines an abstract wsi::surface object to be implemented by each WSI
      backend. This object is then associated with the corresponding VkSurface
      object in the instance specific data.
      
      To keep track of these objects the layer now intercepts
      vkDestroySurfaceKHR, while specific surface creation entrypoints are
      intercepted by individual WSI backends.
      
      In addition this change should allow for fixing incompatibility issues
      with layers that wrap VkSurface which breaks casting to the Loader's ICD
      VkSurface type.
      
      Make greater use of util::unique_ptr and allow for such pointers to be
      constructable when casting derived types.
      
      Change-Id: I163e9c47088ad9989583ebce1319b1fc05559d73
      Signed-off-by: Rosen Zhelev's avatarRosen Zhelev <rosen.zhelev@arm.com>
      c7be05e3
    • Ben Davis's avatar
      Fix potential hang on swapchain inheritance · feb2445f
      Ben Davis authored and Rosen Zhelev's avatar Rosen Zhelev committed
      
      
      Introduce a mutex to control access to a swapchain's image statuses,
      also only wait for swapchain images marked as "PENDING"
      
      Change-Id: I7bd530ea50eb44cb98ed4f674167d14de4a30d53
      Signed-off-by: Ben Davis's avatarBen Davis <ben.davis@arm.com>
      feb2445f
  26. 09 Aug, 2021 1 commit
    • Ben Davis's avatar
      Add vulkan 1.1 function entrypoints · bcd934f2
      Ben Davis authored
      
      
      Implement vkGetDeviceGroupSurfacePresentModesKHR,
      vkGetDeviceGroupPresentCapabilitiesKHR, vkAcquireNextImage2KHR and
      vkGetPhysicalDevicePresentRectanglesKHR function entrypoints in the
      layer.
      
      We assume that if the layer should not handle the surface the device or
      instance should handle it as appropriate and fallback to this
      implmentation.
      
      Change-Id: Iafc585d8738ad80413ad616d834d966f92c4f8cb
      Signed-off-by: Ben Davis's avatarBen Davis <ben.davis@arm.com>
      bcd934f2
  27. 28 Jul, 2021 1 commit
  28. 26 Jul, 2021 1 commit