Commit graph

213 commits

Author SHA1 Message Date
Dennis Tsiang
201914d7cc Make layer require VK_KHR_bind_memory2 extension and intercept KHR
Enables the layer to intercept vkBindImageMemory2KHR, and by requiring
the extension we ensure we can always call the entrypoint down the
chain as well.

Signed-off-by: Dennis Tsiang <dennis.tsiang@arm.com>
Change-Id: I1ec5f8c6ba648151e08101549cb795e990c84aeb
2025-03-31 13:42:18 +01:00
Rosen Zhelev
0562f6c433 Merge 'Fix the bugs with function dispatcher and swapchain handling' into 'main'
See merge request mesa/vulkan-wsi-layer!145
2025-03-14 16:15:36 +00:00
Normunds Rieksts
637b847465 Fix the bugs with function dispatcher and swapchain handling
Fixes two bugs:
  - The handling when swapchains are destroyed when VK_NULL_HANDLE is
    passed for the vkDestroySwapchain function to terminate early rather
    than forward it to any dispatch functions below us which could
    potentially not be exported by the layers/ICDs below us.
  - The dispatcher did not implement get_fn() correctly as if the
    function that we attempted to acquire was NULL, this function still
    returned a valid std::optional with the function pointer itself
    being set to NULL if no layers/ICDs under ours did not implement
    these entrypoints. This fixes other issues that could arise in the
    layer when this function is used.

Change-Id: If4fb67c246ef48a97f88914acfb8db3df734b133
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-03-13 17:47:43 +00:00
Rosen Zhelev
64175e7666 Merge 'Fix regression with swapchain_maintenance' into 'main'
See merge request mesa/vulkan-wsi-layer!144
2025-03-13 16:46:30 +00:00
Iason Paraskevopoulos
d8b094cf60 Merge 'Change the condition to add extensions to the layer' into 'main'
See merge request mesa/vulkan-wsi-layer!141
2025-03-12 10:25:28 +00:00
Dennis Tsiang
ce542a16a3 Change the condition to add extensions to the layer 2025-03-12 10:25:28 +00:00
Iason Paraskevopoulos
c2e4b32cbf Merge 'Fix issue with swapchain_time_domain not having virtual destructor' into 'main'
See merge request mesa/vulkan-wsi-layer!140
2025-03-10 16:12:27 +00:00
Normunds Rieksts
5885ad4836 Fix issue with swapchain_time_domain not having virtual destructor 2025-03-10 16:12:27 +00:00
Normunds Rieksts
ad47eb201f Fix regression with swapchain_maintenance
Fixes a regression with swapchain_maintenance1 extension after extension
refactor that did not communicate the changed presentation mode back to
the swapchain and improperly checked whether swapchain supports
presentation modes at swapchain creation time when this extension was
being used.

Change-Id: If06d3c72b44c8f3a06728b4c5c2455346c97ad63
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-03-07 17:51:20 +00:00
Rosen Zhelev
8f077c5c86 Merge 'Fix compiler warnings when building the layer' into 'main'
See merge request mesa/vulkan-wsi-layer!139
2025-02-25 13:05:17 +00:00
Normunds Rieksts
6ae7c7f452 Fix compiler warnings when building the layer
Fixes issues that generate warnings when building under specific
compiler versions.

Change-Id: I2a90429c7b56658be06ddd46fa8acfd660cafdd0
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-02-24 13:38:23 +00:00
Rosen Zhelev
3b48400fc4 Merge 'Introduce an extensions abstraction in the layer and expand VK_EXT_present_timing support' into 'main'
See merge request mesa/vulkan-wsi-layer!134
2025-02-19 16:35:41 +00:00
Normunds Rieksts
279896dda6 Merge branch 'main' of upstream into 'ext_refactor'
Merges upstream 'main' into 'ext_refactor' branch and fix merge
conflict.

Change-Id: I718ec54cb11b7f456d713728b976c61ea7811eb0
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-02-17 15:49:21 +00:00
Rosen Zhelev
2cb94e7047 Merge 'Fix surface_maintenance1 being documented as device extension' into 'main'
See merge request mesa/vulkan-wsi-layer!137
2025-02-13 13:40:03 +00:00
Normunds Rieksts
16d1f2d5cb Fix surface_maintenance1 being documented as device extension 2025-02-13 13:40:02 +00:00
Iason Paraskevopoulos
f649d0e8e3 Merge 'Document *_maintenance1 as supported by the layer' into 'main'
See merge request mesa/vulkan-wsi-layer!136
2025-02-13 10:50:27 +00:00
Normunds Rieksts
dc81527ecc Document *_maintenance1 as supported by the layer 2025-02-13 10:50:26 +00:00
Rosen Zhelev
68c6625fa5 Merge 'Remove guards on swapchain maintenance features' into 'main'
See merge request mesa/vulkan-wsi-layer!135
2025-02-12 15:59:35 +00:00
Normunds Rieksts
67fb41be2d Fix bugs with vkGetSwapchainTimeDomainPropertiesEXT entrypoint
Fixes bugs with the vkGetSwapchainTimeDomainPropertiesEXT entrypoint:
  - The time domains counter identifies the current list of available
    time domains
  - The time domain properties correctly reports the available time
    domains and returns them to the application

Change-Id: Ic69578bd93804e823e27879f9f2ee1a5d49a01ce
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-02-11 16:48:00 +00:00
Normunds Rieksts
a92fa2a8d9 Add support for querying swapchain timing properties
Adds initial support to the headless and Wayland backends to query
swapchain timing properties. This patch also moves all present timing
backend specific code into its own file and refactors the private_data
code that is specific to present timing entrypoints into a more common
format.

Change-Id: I377197a6e14b3cbd968e35735d43060d19dfe5bc
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-02-11 16:47:42 +00:00
Angeliki Agathi Tsintzira
03804c74fe Remove guards on swapchain maintenance features
The development of the swapchain maintenance features
has been finalized. As a result, the temporary guards
used during development have been removed, as they are
no longer necessary.

Change-Id: I768358d4b650ba13c84af1a65ff407f2c44b2283
Signed-off-by: Angeliki Agathi Tsintzira <angelikiagathi.tsintzira@arm.com>
2025-02-06 21:51:35 +00:00
Ginu Jacob
02ae04d08f Introduce an extensions abstraction in the layer
In this change, an abstraction layer is added to the swapchain
extensions. The extensions present_timing, present_id,
image_compression_control, frame_boundary, and swapchain_maintenance1
are moved to the new extensions abstraction framework.

Additionally, the compression control extension has been formalized in
the layer as it is part of Vulkan spec so compression control guards
have been removed.

Change-Id: Ib28739ca35dfbf5df987241a9010619279f3e1bb
Signed-off-by: Ginu Jacob <ginu.jacob@arm.com>
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2025-01-31 17:31:32 +00:00
Rosen Zhelev
6fef4eea25 Merge 'Fix the error caused in release builds due to unused variables' into 'main'
See merge request mesa/vulkan-wsi-layer!132
2025-01-31 12:58:34 +00:00
Ginu Jacob
a8f7bb40e1 Fix the error caused in release builds due to unused variables
The variables 'physicalDevice' and 'planeIndex' are unused in release
builds in the following APIs causing build error:
GetDisplayPlaneCapabilitiesKHR
GetDisplayPlaneSupportedDisplaysKHR
GetPhysicalDeviceDisplayPlanePropertiesKHR
GetPhysicalDeviceDisplayPropertiesKHR

This issue is fixed in this change.

Signed-off-by: Ginu Jacob <ginu.jacob@arm.com>
Change-Id: Id34f5162204249b5c1604a1eb4ba198b60393bee
2025-01-30 14:11:04 +00:00
Rosen Zhelev
17ec9b5411 Merge 'Add DRM support for ABGR210101010 format' into 'main'
See merge request mesa/vulkan-wsi-layer!131
2025-01-28 17:07:50 +00:00
Normunds Rieksts
2924e17553 Add DRM support for ABGR210101010 format 2025-01-28 17:07:50 +00:00
Rosen Zhelev
196af34b9f Merge 'Add -Wextra flag and fix warnings' into 'main'
See merge request mesa/vulkan-wsi-layer!130
2025-01-21 13:47:22 +00:00
Angeliki Agathi Tsintzira
5c3d3a9d7c Add -Wextra flag and fix warnings
With the addition of the -Wextra flag, additional compiler warnings
are enabled, which help identify potential issues in the code.
However, enabling -Wextra caused compilation failures due to the
-Werror flag, which treats warnings as errors. This commit enables
-Wextra and addresses all the warnings produced, ensuring the
code compiles successfully while maintaining higher code quality standards.

Change-Id: I0bbaead9b2b15530d2565a3dddf1ed676901269b
Signed-off-by: Angeliki Agathi Tsintzira <angelikiagathi.tsintzira@arm.com>
2025-01-20 10:19:25 +00:00
Rosen Zhelev
1771fed103 Merge 'Check for unsupported surfaces in the layer' into 'main'
See merge request mesa/vulkan-wsi-layer!129
2025-01-15 11:45:20 +00:00
Angeliki Agathi Tsintzira
1f37310208 Check for unsupported surfaces in the layer
Change-Id: I64eca7bf0f5f095c4dbc916c84377ae17350b3ec
Signed-off-by: Angeliki Agathi Tsintzira <angelikiagathi.tsintzira@arm.com>
2025-01-13 10:53:31 +00:00
Rosen Zhelev
8b18c35cb3 Merge 'Re-add assertion to check for valid synchronisation primitives' into 'main'
See merge request mesa/vulkan-wsi-layer!128
2024-12-02 16:23:05 +00:00
Rosen Zhelev
cb1a50cf7e Merge 'Fix the VK_KHR_DISPLAY implementation within the WSI Layer' into 'main'
See merge request mesa/vulkan-wsi-layer!127
2024-11-25 11:32:34 +00:00
Iason Paraskevopoulos
c8d4f85a46 Merge 'Add vkGetSwapchainTimeDomainPropertiesEXT support' into 'main'
See merge request mesa/vulkan-wsi-layer!126
2024-11-15 12:49:31 +00:00
Angeliki Agathi Tsintzira
3051ca8b67 Add vkGetSwapchainTimeDomainPropertiesEXT support 2024-11-15 12:49:31 +00:00
Ginu Jacob
3675833d19 Fix the VK_KHR_DISPLAY implementation within the WSI Layer
Surface extents are initialized in this change. This fixes the issues
with execution of the wsi layer display backend. Additionally,
functional code snippets are moved out of assert calls in the file
wsi/display/swapchain.cpp to avoid them being stripped out by ndebug
compilation. This change also fixes the unused variable error in ndebug
compilation.

Signed-off-by: Ginu Jacob <ginu.jacob@arm.com>
Change-Id: I4ad33ef52dbb81faaf580ce7b89ce74ffe96e002
2024-11-14 16:48:34 +00:00
Iason Paraskevopoulos
d0671474e5 Merge 'Pass frame boundary events unconditionally' into 'main'
See merge request mesa/vulkan-wsi-layer!125
2024-11-13 17:09:48 +00:00
Normunds Rieksts
91edd710b7 Pass frame boundary events unconditionally 2024-11-13 17:09:48 +00:00
Iason Paraskevopoulos
4bd840fdb6 Merge 'Add dma_buf_heaps wsialloc implementation' into 'main'
See merge request mesa/vulkan-wsi-layer!124
2024-11-11 14:20:33 +00:00
Normunds Rieksts
484d906a86 Re-add assertion to check for valid synchronisation primitives
Re-adds assertion that checked that valid synchronisation primitives
were passed to vkAcquireNextImageKHR due to failing CTS tests that were
breaking the Vulkan spec. After fixing the tests, the assertion is no
longer necessary

Change-Id: Ic600714be4012575b6d7e4f568ea54cbf2e0ca4f
Signed-off-by: Normunds Rieksts <normunds.rieksts@arm.com>
2024-11-06 15:06:33 +00:00
Iason Paraskevopoulos
be2fee5043 Rename KERNEL_DIR to KERNEL_HEADER_DIR
Renames KERNEL_DIR to KERNEL_HEADER_DIR to allow getting the kernel
headers from a directory that is not coupled with the kernel source
tree.

Change-Id: Ic98b39dd2ec117ef4bc413cb3bf86eee89ebe4fd
Signed-off-by: Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
2024-10-31 10:40:09 +00:00
Iason Paraskevopoulos
cd19e3827b Add dma_buf_heaps wsialloc implementation
Change-Id: I738f8cbfb1aec52a122689ebaeb7f5b898ba200a
Signed-off-by: Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
2024-10-31 10:40:09 +00:00
Iason Paraskevopoulos
8619f42973 Add helper functions to wsialloc
Moves out the non ion specific code from the wsialloc ion implementation
to a new wsialloc_helpers file.

Change-Id: I7ca816b27eb7e68fd1f138ec7bda006b204c0cbe
Signed-off-by: Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
2024-10-31 10:40:09 +00:00
Dennis Tsiang
21dbc4d332 Merge 'Changes to move the functional code outside of assert() call' into 'main'
See merge request mesa/vulkan-wsi-layer!123
2024-10-29 08:49:31 +00:00
Ginu Jacob
bbac6f52cf Changes to move the functional code outside of assert() call 2024-10-29 08:49:31 +00:00
Rosen Zhelev
0f5f241337 Merge 'Add stdexcept in custom_allocator.hpp' into 'main'
See merge request mesa/vulkan-wsi-layer!122
2024-10-25 09:57:24 +00:00
Iason Paraskevopoulos
7ebafbfb79 Add stdexcept in custom_allocator.hpp 2024-10-25 09:57:24 +00:00
Rosen Zhelev
b612383789 Merge 'Disable the FIFO present thread implementation on Wayland by default' into 'main'
See merge request mesa/vulkan-wsi-layer!121
2024-10-23 10:00:47 +00:00
Dennis Tsiang
4cfbc06cdb Merge 'Enable -Werror on Vulkan WSI Layer' into 'main'
See merge request mesa/vulkan-wsi-layer!120
2024-10-22 09:14:54 +00:00
Maged Elnaggar
57fedd8cdb Enable -Werror on Vulkan WSI Layer 2024-10-22 09:14:54 +00:00
Dennis Tsiang
259f5e6140 Merge 'Fix issues flagged by static analysis tools' into 'main'
See merge request mesa/vulkan-wsi-layer!119
2024-10-22 09:13:43 +00:00