Commit graph

150 commits

Author SHA1 Message Date
Jakob Bornecrantz 8cfe941c01 aux/vk: Rename vk_[color_]format_string 2022-03-29 16:26:34 +01:00
Jakob Bornecrantz 170fe0e5d9 aux/vk: Refactor out semaphore and native creation into a helper 2022-03-19 00:41:29 +00:00
Jakob Bornecrantz 29acdba23f aux/vk: Tidy get/import functions for native handles (NFC) 2022-03-18 23:20:20 +00:00
Jakob Bornecrantz e89e3d5276 aux/vk: Add XRT_CHECK_RETURN to sync functions 2022-03-15 00:16:17 +00:00
Jakob Bornecrantz 37354b953c aux/vk: Add more timeline semaphore functions 2022-03-14 18:58:35 +00:00
Jakob Bornecrantz 17e9e06de7 aux/vk: Detect external semaphore support 2022-03-08 21:04:56 +00:00
Jakob Bornecrantz c0bd8ce3ba aux/vk: Let vk_init_from_given enable timeline semaphores 2022-03-08 21:04:56 +00:00
Jakob Bornecrantz 3c8378631f aux/vk: Properly set log_level in given vk_bundles 2022-03-08 21:04:56 +00:00
Jakob Bornecrantz 3044794f93 aux/vk: Rename timeline_semaphores to features.timeline_semaphore 2022-03-08 21:04:56 +00:00
Jakob Bornecrantz f5c77dfb32 aux/vk: Add vk_create_and_submit_fence_native 2022-02-24 20:54:47 +00:00
Jakob Bornecrantz 78f3340bf5 aux/vk: Check which fence types support import and export 2022-02-24 20:54:47 +00:00
Jakob Bornecrantz ebe895bdb8 aux/vk: Add vkGetPhysicalDeviceExternal[Buffer|Fence|Semaphore]PropertiesKHR (NFC) 2022-02-24 17:51:59 +00:00
Jakob Bornecrantz 543f28abf9 aux/vk: Add vkGetFenceWin32HandleKHR (NFC) 2022-02-24 17:51:59 +00:00
Jakob Bornecrantz 36025886ee aux/vk: Refactor our sync primitives (NFC) 2022-02-24 17:51:59 +00:00
Moses Turner 727c087366 aux/vk: Add helper for adding image memory barriers 2022-02-18 20:06:20 -06:00
Moses Turner 5a2088ee3e aux/vk: Add vkCmdBlitImage to vk_helpers 2022-02-18 20:06:20 -06:00
Moses Turner 00984aa021 aux/vk: Add advanced create image function 2022-02-18 20:06:20 -06:00
Jakob Bornecrantz ba0f7cba8b aux/vk: More comments 2022-02-19 00:34:01 +00:00
Jakob Bornecrantz 5222dfd728 aux/vk: Refactor and document various compositor swapchain image flags
This also fixes two errors:
* VK_IMAGE_USAGE_SAMPLED_BIT was not always added to depth formats.
* VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT was added to image
  views for sampling, where the spec only allows one of them.
2022-02-18 21:32:05 +00:00
Jakob Bornecrantz 05771e7b9e aux/vk: Rename compositor swapchain image helper functions (NFC) 2022-02-18 21:32:05 +00:00
Jakob Bornecrantz ad5a057737 aux/vk: Refactor out swapchain functions to own file (NFC) 2022-02-18 21:32:05 +00:00
Jakob Bornecrantz 4539b74e56 aux/vk: Re-org one function (NFC) 2022-02-18 21:32:05 +00:00
Jakob Bornecrantz 9a884931bb c/client: Use correct VkImageAspectFlags in barriers 2022-02-17 19:29:57 +00:00
Jakob Bornecrantz 91a2a5d29d c/client: Set correct optimal layout for client swapchains 2022-02-16 18:20:44 +00:00
Christoph Haag 3eecb0f991 aux/vk: Add vkGetPhysicalDeviceSurfaceCapabilities2EXT function 2022-01-13 23:07:16 +01:00
Christoph Haag 693aceb755 aux/vk: Add VK_EXT_display_control functions 2022-01-13 23:07:16 +01:00
Christoph Haag 8e020fac2d c/main: Add and enable VK_EXT_display_control optional device ext 2022-01-13 23:06:40 +01:00
Christoph Haag b7d179b1b3 c/main: Add display surface counter optional vk instance ext 2022-01-13 23:06:15 +01:00
Christoph Haag ce6339e237 c/main: Make more use of string list for device ext 2022-01-13 23:05:06 +01:00
Christoph Haag 13e3db6128 aux/vk: Add vkEnumerateInstanceExtensionProperties 2022-01-13 23:03:38 +01:00
Ryan Pavlik 0b11ce3a27 a/vk: Add timeline semaphore to the list of optional features. 2021-12-08 00:54:12 +00:00
Jakob Bornecrantz b621955873 a/vk: Put vendor extensions last 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 5289b081c5 a/vk: Check for VK_KHR_timeline_semaphore 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 0eca48ec2b a/vk: Add all functions for VK_KHR_timeline_semaphore 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 3f98ea5595 xrt: Tidy s/ll/log_level/g
Also make sure all variable logging uses the right type for logging variables.
2021-11-22 14:29:10 -06:00
Ryan Pavlik dfa0aba496 aux: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Jakob Bornecrantz e8b0ab3b35 aux/vk: Add many more helper functions 2021-11-10 14:22:28 +00:00
Ryan Pavlik 35d7e85266 a/vk: Return of the justification and function rename 2021-11-09 15:36:24 -06:00
Ryan Pavlik b816c08141 a/vk: Add to the file comments mentioning the script. 2021-11-09 11:05:15 -06:00
Ryan Pavlik 8a56046c1d a/vk: Also generate the extension list/checking 2021-11-09 11:05:15 -06:00
Ryan Pavlik 9fc992d540 a/vk: Normalize member names in extensions 2021-11-09 11:05:15 -06:00
Ryan Pavlik 01c02897dc a/vk: Update vulkan files: generate from script 2021-11-09 11:05:15 -06:00
Jakob Bornecrantz a081bacc5d aux/vk: Guard vkSignalSemaphore with VK_KHR_timeline_semaphore 2021-11-08 17:36:58 +00:00
Jakob Bornecrantz 4c4e30d875 aux/vk: Add more functions 2021-11-08 17:21:31 +00:00
Simon Zeni 26c684d42f aux/vk: Add VK_EXT_acquire_drm_display functions 2021-09-15 18:44:18 +00:00
Christoph Haag 4982a14541 aux/vk: Add Tegra detection 2021-09-03 15:32:35 +00:00
Christoph Haag 32d09aadc3 aux/vk: Add vkGetFenceStatus function 2021-08-16 15:37:29 +02:00
Christoph Haag 1b179306dc comp: Only use dedicated allocation when supported/preferred
Fixes OpenGL depth formats on Tegra
2021-08-09 15:17:25 +02:00
Ryan Pavlik ad44f42b24 aux/vk: Add fence import for windows 2021-06-15 17:37:14 -05:00
Jakob Bornecrantz 8a7d857dde aux/vk: Add the option to handle optional device features 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 4bbc13f5d4 aux/vk: Add support for VK_EXT_robustness2 and tidy 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 57d24ecdbb aux/vk: Make it possible to get a compute only queue 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz c42d681db0 aux/vk: Add vkCmdCopyBufferToImage and vkCmdCopyImageToBuffer 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 8899b267a6 aux/vk: Add vkCmdDispatch, vkCreateComputePipelines and vkResetDescriptorPool functions 2021-06-15 19:45:14 +00:00
Christoph Haag 82d9ed75c2 aux/vk: Check that native handles are importable 2021-05-18 03:01:44 +02:00
Jakob Bornecrantz 1b51cbd1a7 aux/vk: Add support for VK_EXT_global_priority 2021-04-12 22:16:31 +00:00
Ryan Pavlik cf08cbba78 aux/vk: Docs for Vulkan native import helpers. 2021-04-09 18:11:52 +01:00
Jakob Bornecrantz 07fb9941b3 aux/vk: Add fence import function 2021-04-07 00:50:10 +01:00
Ryan Pavlik f65635f378 aux/vk: Fix doxygen warning 2021-03-31 12:02:41 -05:00
Ryan Pavlik adb5eefb86 aux/vk: Add functions to initialize and clean up mutexes in the vk_bundle 2021-03-30 20:46:00 +00:00
Ryan Pavlik 4004402c40 aux/vk: Wrap statement defines in do {} while (0) 2021-03-26 17:10:53 -05:00
Jakob Bornecrantz a40c2e7d50 aux/vk: Load VK_GOOGLE_display_timing functions 2021-03-08 11:20:52 +00:00
Ryan Pavlik b7cc966cb0 aux/vk: Add docs to helpers 2021-02-22 16:50:00 -06:00
Christoph Haag cc81174b70 comp: Fix VkDisplayKHR direct mode build without libx11-xcb 2021-02-10 22:02:30 +01:00
Jakob Bornecrantz 2b996f30c4 xrt: Reflow after column change 2021-01-15 13:50:32 +00:00
Lubosz Sarnecki b005f4e2fa comp/vk: Guard VkCommandBuffer usage with command pool mutex.
Lock all queue submits with 2 mutexes using a new vk_locked_submit
function.
2021-01-13 12:42:26 +01:00
Lubosz Sarnecki fc3b7fef25 comp/vk: Lock command pool calls with a mutex.
This patch resolves multithreading issues as detected by the Vulkan
validation when running the OpenXR CTS using OpenGL.
2021-01-13 12:33:15 +01:00
Lubosz Sarnecki 9a9d46b85a comp/vk: Lock our only VkQueue with a mutex.
This resolved mutlithreading issues as seen in the `multithreading` test
of the OpenXR CTS.

This patch fixes the test on Vulkan Android and resolves Vulkan
validation errors when running on Linux with OpenGL.
2021-01-13 12:33:15 +01:00
Christoph Haag 726c752db2 comp: Add support for list of optional device extensions
If one of the supplied optional extensions is VK_GOOGLE_display_timing and it is
supported by the driver, vk_bundle::has_GOOGLE_display_timing will be set to true.
2021-01-07 19:12:41 +01:00
Lubosz Sarnecki ba1d966f9f aux/vk: Port to u_logging.
Fix log calls where no valid state struct was provided.
2020-12-28 13:04:11 +00:00
Ryan Pavlik 66811b436a xrt: Have the vk_helper vk_create_device take in a list of device extensions, and fix usages. 2020-11-23 14:27:21 -06:00
Ryan Pavlik a792b08ed7 aux/vk: Minimal, untested implementations of these for Windows - fixes build 2020-11-10 03:09:07 +00:00
Lubosz Sarnecki 2cc8252c05 aux/vk: Add vkGetAndroidHardwareBufferPropertiesANDROID. 2020-10-28 12:12:31 -05:00
Jakob Bornecrantz 438a8e71f9 aux/vk: Add vkFreeDescriptorSets 2020-10-13 18:59:28 +01:00
Ryan Pavlik 581f59a2eb vk: Add an Android function to the vk_bundle 2020-08-26 16:31:38 +01:00
Christoph Haag 6dc4a1f237 aux/vk: Report appropriate errors on unsupported image usage flags 2020-08-24 10:18:12 +02:00
Christoph Haag fbe390813c vk: Add update_buffer helper function 2020-08-21 02:11:03 +02:00
Christoph Haag cf5596adba comp: Use CLAMP_TO_EDGE for swapchains
Avoids sampling black at the edges of layers.
2020-08-21 02:09:20 +02:00
Ryan Pavlik 9087d1c7a9 xrt: Use our generic graphics buffer typedefs all over.
This adds some Android support in composition clients,
and fixes the breakage from 2 commits ago.

Thanks to Jakob for finding my error in an earlier version.
2020-08-13 17:34:05 -05:00
Jakob Bornecrantz cd9da1c1e1 aux/vk: Make xrt_swapchain_create_info const 2020-08-07 17:00:10 +01:00
Christoph Haag e48c748a57 xrt: suggest correct GPU in xrGetVulkanGraphicsDevice()
As before, on the service side the GPU index the compositor runs on can be selected with
* XRT_COMPOSITOR_FORCE_GPU_INDEX=INDEX1

By default xrGetVulkanGraphicsDevice() will suggest the same GPU the compositor runs on.

It is also possible to override the GPU index suggested to applications with
* XRT_COMPOSITOR_FORCE_CLIENT_GPU_INDEX=INDEX2

The reason this is both done on the service side is that if compositor and client run
on different GPUs, the swapchains use linear tiling instead of optimal tiling.

To make chosen GPUs comparable across the compositor's and the client's vulkan instance,
VkPhysicalDeviceIDProperties.deviceUUID is used.
2020-08-07 17:01:13 +02:00
Jakob Bornecrantz 3a7a86aafc vk: Refactor VkImageUsageFlags code into helper function 2020-08-06 14:28:23 +00:00
Ryan Pavlik 07f2e62e76 aux/vk: vk_create_semaphore_from_fd -> vk_create_semaphore_from_native 2020-08-05 20:50:00 +00:00
Jakob Bornecrantz a8a4e80746 vk: Use xrt_swapchain_create_info in vk_create_image_from_native 2020-07-20 13:50:01 +00:00
Jakob Bornecrantz 5a9fa0a7e6 vk: Remove unused vk_image 2020-07-20 13:50:01 +00:00
Ryan Pavlik 54f56716fd xrt: Rename references to compositor/swapchain/image_fd to ..._native.
Reflecting that the native buffer isn't an FD on all platforms.
2020-07-15 09:11:58 -05:00
Jakob Bornecrantz e8d62d948f aux/vk: Add helper to create image view with component swizzles 2020-06-18 13:48:10 +01:00
Benjamin Saunders f81f568931 aux/vk: Add helper to translate usage bits to Vulkan bits 2020-06-16 00:01:48 +00:00
Benjamin Saunders fe734bb6e2 aux/vk: Add functions to create semaphores from FDs 2020-06-16 00:01:48 +00:00
Benjamin Saunders f45f482d5e aux/vk: Store Vulkan queue handle directly 2020-06-16 00:01:48 +00:00
Lubosz Sarnecki 435d5a9b9e c/comp: Remove internal Vulkan validation init.
Instead of maintaining this chunk of code and build options, the Vulkan
loader can be used to load up validation. This has the advantage that no
layer name needs to be hard coded inside Monado, which was subject of
change recently.

Instead of using our own environment variable we can easily set the one
from the loader, e.g. `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation`.
2020-06-03 11:17:51 +00:00
Lubosz Sarnecki 68c5eecb96 aux/vk: Add image helper struct and functions. 2020-05-28 22:16:56 +00:00
Lubosz Sarnecki 589c7e4fef aux/vk: Add buffer helper structs and functions. 2020-05-28 22:16:56 +00:00
Lubosz Sarnecki e8d273bc41 aux/vk: Add vkFlushMappedMemoryRanges. 2020-05-11 20:22:51 +01:00
Lubosz Sarnecki 54985b110a aux/vk: Add descriptor set functions. 2020-05-11 20:22:50 +01:00
Lubosz Sarnecki f131739c00 aux/vk: Take VkExtent2D and VkImageUsageFlags in vk_create_image_simple. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki c09beb9efb aux/vk: Add vk_get_access_flags. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 06ce79272d aux/vk: Add vk_check_error macro. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 8d3a0938fa aux/vk: Add vkResetFences. 2020-04-15 16:43:57 +02:00
Jakob Bornecrantz 09aa8794b2 aux/vk: Refactor out helper code into own library 2020-03-02 11:58:40 +00:00
Renamed from src/xrt/compositor/common/comp_vk.h (Browse further)