- 26 Nov, 2021 1 commit
-
-
By removing this option, the layer will be enabled by default. Signed-off-by:
David Harvey-Macaulay <david.harvey-macaulay@arm.com> Change-Id: I6d62e770d914098ad6f0d7d74fb45ce3f8fdbc01
-
- 25 Nov, 2021 2 commits
-
-
Fixes an issue, where acquire_next_image was always returning VK_ERROR_OUT_OF_HOST_MEMORY when the swapchain had gone into a faulty state. Change-Id: Iafe016e4e31158d1a5f0d6d785f60d6a724c62ab Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
-
Change the implementation to create wl_buffers immediately on client side and defer the creation of wl_buffers on the server when the first image is presented as that's when all buffered requests will be flushed to the display Additionally remove the swapchain event queue as we no longer need it to dispatch any events Change-Id: Ic0683e7ec457df63638ce0b972c4925ac836b198 Signed-off-by:
Normunds Rieksts <normunds.rieksts@arm.com>
-
- 17 Nov, 2021 1 commit
-
-
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 <iason.paraskevopoulos@arm.com> Change-Id: If5e23e0d07c9f09006be18c410c4e1d4c3a1e676
-
- 15 Nov, 2021 1 commit
-
-
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 <dennis.tsiang@arm.com>
-
- 12 Nov, 2021 2 commits
-
-
There is currently no protocol for setting composite alpha blending mode via Wayland but the expectation is that we use premultiplied alpha so we only report the premultiplied and inherit composite alpha bits Change-Id: If4e103b47cb8e99213ca96216abc06d812c68db1 Signed-off-by:
Ben Davis <ben.davis@arm.com>
-
Iason Paraskevopoulos authored
Change-Id: I153e7a78609651bbfdf4fc0b6675d0ea97763905 Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
-
- 11 Nov, 2021 3 commits
-
-
Fixes an issue where there was a chance that an exception would be thrown when out of memory rather than returning an appropriate VkResult code. Additionally introduces a noncopyable utility class that can be used to mark classes that should not have copy semantics Change-Id: I1f84dc9bb1ea96db2a88a90d56adbee78b17c5e3 Signed-off-by:
Normunds Rieksts <normunds.rieksts@arm.com>
-
We will now run clang-tidy if available as part of the standard build with the bugprone-* and modernize-* checks Change-Id: I4c9d3cf8712f802b912d32a443bca1584169a8b3 Signed-off-by:
Ben Davis <ben.davis@arm.com>
-
Fix warnings given by clang-tidy 8 with checks 'bugprone-*,modernize-*' Change-Id: I2e5660c5872728f957869c66b1143cfcc76bc20e Signed-off-by:
Ben Davis <ben.davis@arm.com>
-
- 10 Nov, 2021 1 commit
-
-
Iason Paraskevopoulos authored
Change-Id: Ibc6c094d85795e532e59184252896ecd05b50019 Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
-
- 08 Nov, 2021 2 commits
-
-
Ensures that all images created from a headless swapchain use the same vkImageCreate info. This ensures that when calling vkCreateImage with a swapchain that is owned by the layer the VkImageSwapchainCreateInfoKHR is not passed further down the chain to ICD on headless implementation. Change-Id: I1bd723589e52577b98fd53ec1ec769e5594a0838 Signed-off-by:
Normunds Rieksts <normunds.rieksts@arm.com>
-
Reduce the number of functions that are exported by the layer. This helps resolve dynamic linking issues where multiple functions are named the same in different shared libraries. Also add function specifiers and calling conventions to all extern "C" functions. Change-Id: I07b33ff8d066e33c5dbdf0cbc13aa7835a78220b Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com>
-
- 05 Nov, 2021 2 commits
-
-
Iason Paraskevopoulos authored
Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com> Change-Id: I2b7882e10eca2f4cfbd3668b6265d5b6093c4272
-
Iason Paraskevopoulos authored
Moves the handling of frame done events from the swapchain object to the surface object. This will prevent failures where a frame done event arrives after the swapchain has been destructed but the surface hasn't. Uses wayland_owners objects for managing the surface event queue and the frame done event callback. Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com> Change-Id: I61459440e7a6fe8d9447d13f65b797cfcf05f0ed
-
- 02 Nov, 2021 1 commit
-
-
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
-
- 01 Nov, 2021 2 commits
-
-
Iason Paraskevopoulos authored
Adds an additional semaphore for every swapchain image to be waited for before the present engine access an image. During a present request with multiple swapchains, these semaphores are grouped together and are signaled after the incoming pWaitSemaphores signal. Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com> Change-Id: I94cabbf5f7d9a45dceef60eec7773b48ccc32078
-
Adds the ability to link the project with a custom wsialloc library. This makes it possible to customize the format selection and allocation to the target system, according to its capabilities. Change-Id: Iade5cd27aa3515d3debb7fe1f2b96453776d77be Signed-off-by:
Normunds Rieksts <normunds.rieksts@arm.com>
-
- 29 Oct, 2021 1 commit
-
-
All files in the project should have an empty line at the EOF. Necessary for some pre-processing tools. Change-Id: Ic4502588f2733f669fc1edc898258f8589c484c6 Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com>
-
- 27 Oct, 2021 1 commit
-
-
Fufu Fang authored
It is valid to create windows exceeding the display size. It is correct to set the image size limits to the GPU limits. Change-Id: I53d0865ad1a540cd2eb92137ef325f000bd76159 Signed-off-by:
Fufu Fang <fufu.fang@arm.com>
-
- 26 Oct, 2021 1 commit
-
-
Adds a build option that provides the ability to build the layer with or without headless extension support Change-Id: Iedefbd38daf80d84f4763ea54117ca18c7fad088 Signed-off-by:
Normunds Rieksts <normunds.rieksts@arm.com>
-
- 15 Oct, 2021 1 commit
-
-
Iason Paraskevopoulos authored
Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com> Change-Id: I1b917f5287c635dbb00b05607c5a36ce7b11767e
-
- 14 Oct, 2021 1 commit
-
-
Adds support for image presentation without relying on the page flipping thread to communicate with the WSI backend. Signed-off-by:
Iason Paraskevopoulos <iason.paraskevopoulos@arm.com> Change-Id: I4fd2b937351fc484897dc7e9597aa6e81b37fbdf
-
- 11 Oct, 2021 1 commit
-
-
Ben Davis authored
Change-Id: I222ec3b352aa220b6c08df3a71de48178b67f06d Signed-off-by:
Ben Davis <ben.davis@arm.com>
-
- 08 Oct, 2021 1 commit
-
-
We need to synchronise access to the ring buffer pool in order to avoid concurrency bugs as multiple threads can mutate the state of the ring buffer and if we do not serialise these changes then they can result in errors. Change-Id: If96e1707716370bcf57416cd505d16aa75c0d68c Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com>
-
- 07 Oct, 2021 1 commit
-
-
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 <iason.paraskevopoulos@arm.com>
-
- 05 Oct, 2021 2 commits
-
-
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 <rosen.zhelev@arm.com>
-
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 <iason.paraskevopoulos@arm.com>
-
- 23 Sep, 2021 1 commit
-
-
Dennis Tsiang authored
This commit adds support for VkBindImageMemorySwapchainInfoKHR and VkImageSwapchainCreateInfoKHR. Change-Id: I3d87cd7df380e59ceb386f08437c5d6f09dcee1f Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com>
-
- 17 Sep, 2021 1 commit
-
-
The vkDestroyDevice entrypoint was listed as a instance level entrypoint, that is, to be returned by vkGetInstanceProcAddr; however, vkDestroyDevice is a device level entrypoint. Consequently, the layer implementation was not called by the loader upon application calls to vkDestroyDevice and this caused memory leaks within the layer. Change-Id: I9d5807ff17965281580cd80eb74b07fb038073b1 Signed-off-by:
David Harvey-Macaulay <david.harvey-macaulay@arm.com>
-
- 14 Sep, 2021 1 commit
-
-
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 <rosen.zhelev@arm.com>
-
- 26 Aug, 2021 2 commits
-
-
Dennis Tsiang authored
CMakeLists.txt updated to extract the explicit sync code and header files from linux-explicit-synchronization-unstable-v1.xml, which is a Wayland extension that allow explicit synchronisation. This is needed to support the MAILBOX presentation mode. Change-Id: Id556b69748663796d14fa8b8ceaa0a9c03e9af6e Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com>
-
Dennis Tsiang authored
Add new utility class implementation ring_buffer and replace existing struct implementation. Change-Id: I725033738bff73d33f938e64cc96ca9acb8a910c Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com> Signed-off-by:
David Harvey-Macaulay <david.harvey-macaulay@arm.com>
-
- 17 Aug, 2021 4 commits
-
-
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 <rosen.zhelev@arm.com>
-
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 <rosen.zhelev@arm.com>
-
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 <rosen.zhelev@arm.com>
-
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 <ben.davis@arm.com>
-
- 09 Aug, 2021 1 commit
-
-
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 <ben.davis@arm.com>
-
- 28 Jul, 2021 1 commit
-
-
Refactors the wsialloc interface in the layer. This patch ensures that wsialloc interface could be ported to different GPU architectures and systems that could have different requirements Change-Id: I6593f2373abc75fb2074700d156ba3797d7ff058 Signed-off-by:
Normunds Rieksts <normunds.rieksts@arm.com> Signed-off-by:
Rosen Zhelev <rosen.zhelev@arm.com>
-
- 26 Jul, 2021 1 commit
-
-
Dennis Tsiang authored
Add brief documentation to explain what the custom util::unique_ptr and deleter class is used for. Change-Id: I7f4d456a34d55c09ad470b7c34e32b069203ca6b Signed-off-by:
Dennis Tsiang <dennis.tsiang@arm.com>
-