Commit graph

246 commits

Author SHA1 Message Date
Jakob Bornecrantz c0d242e1ed a/vk: Fix doccomment style [NFC] 2023-04-21 14:28:18 +01:00
Jakob Bornecrantz 17ea4a73eb a/vk: Mark unexported function as static [NFC] 2023-04-21 14:28:18 +01:00
Jakob Bornecrantz c7fa7fe701 a/vk: Loop over all optional extensions, not just the first
This caused the event thread to not start
because the needed extensions where not enabled.
2023-04-21 14:27:33 +01:00
Jakob Bornecrantz 86262e8b4e a/vk: Remove global command pool 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 68b8a2f371 a/vk: Add command pool helpers 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 5f1b54bcd5 a/vk: Add blit and copy helpers 2023-04-09 14:04:53 +01:00
Jakob Bornecrantz c0287b690b a/vk: Add command helpers 2023-04-09 12:01:27 +01:00
Jakob Bornecrantz 14f15284a1 a/vk: Update comments for command buffer writers 2023-04-08 00:03:20 +01:00
Jakob Bornecrantz 585e23054d a/vk: Use helper define in vk_csci_get_image_usage_flags 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz 732c4a23ae a/vk: Don't unconditionally set colour attachment usage bit for swapchains 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz 748ec59ddf a/vk: Don't hardcode sampled bit anymore 2023-04-07 21:44:22 +01:00
Ryan Pavlik ae61287f4c a/vk: Enlarge buffer to fix warning 2023-03-03 01:05:14 +00:00
Mateo de Mayo 3cdc02c1bb a/vk: Small improvements
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-02-04 18:52:59 +00:00
Jakob Bornecrantz a8c4d1299e a/vk: Fix crash caused by different signedness comparisons
Closes #234.

All credit for debugging and figuring out what the problem is goes to Mateo, I
made a different fix for it.

Co-authored-by: Mateo de Mayo <mateo.demayo@collabora.com>
2023-02-04 18:52:35 +00:00
Jakob Bornecrantz 3a143cadd1 a/vk: Print more color space formats 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz 7576ce0960 a/vk: Track VK_EXT_swapchain_colorspace 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz b7addee249 a/vk: Track VK_KHR_format_feature_flags2 2023-02-02 20:40:20 +00:00
Christoph Haag 6f263dbda4 a/vk: allow VkImageViewUsageCreateInfo in Vulkan 1.1
Some drivers do not advertise support for VK_KHR_maintenance2 in
Vulkan 1.1, because it has been promoted to core.

This caused a validation error on compositors that use Vulkan 1.1
because the scratch image is allocated with unorm format and STORAGE
usage: an image view with srgb format can not be created with STORAGE
usage on many GPUs.
2023-01-26 12:30:13 +00:00
Christoph Haag a188ef219c a/vk: Store vulkan version in vk_bundle
Also adds code in c/util's Vulkan code to store it.
2023-01-26 12:30:13 +00:00
Ryan Pavlik 85a897a0b5 a/d3d,a/vk,c/client,ipc: D3D Depth texture / DXGI handle support
a/d3d: Improve allocation

Enable D3D11 and D3D112 depth images using DXGI handles

Allow D3D depth by default

D3D: only use DXGI handles

NT handles don't support depth formats and may fail to properly interop with Vulkan with some image dimensions.

Removed D3D_COMPOSITOR_ALLOW_DEPTH env.
D3D now always imports depth.

Added authorship.

Format pass

Fix D3D compositor tests

ipc: Fix HANDLE bit twiddling code

Merge into commits related to D3D depth changes. Makes the code compile
as C++, useful for Windows traceing

Co-authored-by: Robbie Bridgewater <ebridgewater@magicleap.com>
Co-authored-by: Fernando Velazquez Innella <finnella@magicleap.com>
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-01-24 15:35:22 +00:00
Robbie Bridgewater 3802e737bb a/d3d,a/vk: Add R32_SFLOAT formats
Co-authored-by: Catalin Slobodeanu <cslobodeanu@magicleap.com>
2023-01-24 15:35:01 +00:00
Bailey Morgan 35061c1d80 a/vk: Select graphics device based on prefered device type 2022-12-02 14:05:34 +00:00
Jakob Bornecrantz 93fdf0bd74 a/vk: Expose vk_select_physical_device function 2022-11-23 14:53:26 +00:00
Simon Zeni 9293c628d7 a/vk: add VK_FENCE_IMPORT_TEMPORARY_BIT to vk_create_fence_sync_from_native 2022-11-18 16:43:07 -05:00
Patrick Nicolas a8dc902468 a/vk Add extentions for DMA-buf 2022-11-13 22:56:06 +00:00
Ryan Pavlik 2eb259f26a aux: can not -> cannot 2022-11-09 14:48:38 -06:00
Jakob Bornecrantz 6ba07d564c a/vk: If global priority is not available, only allow medium queues 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 379bf36860 a/vk: Also try to use VK_KHR_global_priority when creating device 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz b6803b4bf8 a/vk: Add VK_KHR_global_priority 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 45937312bd a/vk: Print out error on too many images to allocate 2022-11-03 17:43:06 +00:00
Jakob Bornecrantz a41ccb0467 a/vk: Use xrt limits for number of collection images max 2022-11-03 17:43:06 +00:00
Jakob Bornecrantz 51730d2db1 a/vk: Improve the VkResult to string printing (NFC) 2022-10-30 20:17:09 +00:00
Moses Turner 17acb376f9 xrt: Fix some typos that codespell caught 2022-09-11 23:32:28 -05:00
Jakob Bornecrantz 11a4f776e5 a/vk: Add vk_cmd_buffer_create helper 2022-09-09 10:46:21 +01:00
Jakob Bornecrantz 500d5b9954 a/vk: Rename command buffer helpers 2022-09-09 10:43:49 +01:00
Jakob Bornecrantz eeaaaf398b a/vk: Add helper to get buffer handle types
The image version of it was used for buffers as well.
2022-09-07 20:42:27 +01:00
Jakob Bornecrantz 767637abb8 a/vk: Add image view with usage creation helper 2022-08-25 16:57:56 +01:00
Jakob Bornecrantz fa02407726 a/vk: Add mutable R8G8B8A8_[UNORM|SRGB] image creation helper 2022-08-25 16:57:54 +01:00
Jakob Bornecrantz a5efaceba5 a/vk: Add small chain helper 2022-08-25 16:57:36 +01:00
Jakob Bornecrantz e79b23275b a/vk: Remove unused vk_get_access_flags function 2022-08-25 15:06:09 +01:00
Jakob Bornecrantz 90f3adcdd1 a/vk: Group code 2022-08-25 15:06:09 +01:00
Jakob Bornecrantz e7c217cea5 a/vk: Track various limits 2022-08-25 15:06:09 +01:00
Jakob Bornecrantz b0f51acf77 a/vk: Track maintenance extensions 2022-08-25 15:05:44 +01:00
Ryan Pavlik 094498dbf3 a/vk: Fix up and factor out external image support check 2022-08-08 16:44:24 +00:00
Ryan Pavlik 980ad86008 a/vk: Get and show some external buffer data on startup, too. 2022-07-26 14:45:29 +00:00
Ryan Pavlik f69b6d6320 a/vk: Annotate some must-check-return functions 2022-07-14 14:17:35 +00:00
bjorn ce498e18ed a/vk: Relax compute-only queue family check;
This changes the search to prefer compute-only queues, but consider
compute-enabled queues as acceptable fallbacks.
2022-07-11 17:33:59 +00:00
bjorn 128ea42915 c/render: inline vk_command_buffer helper;
It's not really abstracting much anymore, and makes it more difficult to
see what's going on.
2022-07-01 22:01:32 +00:00
bjorn 4c09d20f80 c/render: render_resources has its own command pool;
Currently, there is a single command pool in the vk bundle, shared by
everyone.  Since command pools (and command buffers allocated from those
pools) can only be used on one thread at a time, this requires locking.
However, the main point of having these annoying command pool things in
the first place is that you can use one for each thread/lifetime/area in
the app and avoid the overhead of the locks (both computational and
cognitive).

In this change I have given the rendering bits of the compositor its own
command pool.  Instead of allocating and freeing a command buffer every
frame, a single command buffer is allocated from the pool during
initialization, and the pool is reset at the beginning of each frame.
Normally, multiple pools would need to be used, but this is not
necessary in monado because frames are serialized. The `TRANSIENT` and
`ONE_TIME_SUBMIT` flags have been added, which can allow for some driver
optimizations.  The render code no longer takes out the command pool
mutex.  The shared command pool is still there for a few remaining
places where vulkan work needs to be done outside the compositor.

I used the command buffer vulkan helpers when possible, but I would
maybe propose the idea of removing them, since they aren't really
wrapping much at this point.  The `C` macro helps a lot and it's a bit
easier to see the Vulkan details in front of you instead of needing to
switch back and forth between the helper.

Later, I think it would be cool to apply and document some constraints
like "the queue is only accessed in functions XYZ, the render_resources
command pool must only be accessed in layer_commit from 1 thread" etc.
2022-07-01 22:01:32 +00:00
bjorn 24c9dabfbb aux/vk: Add vkResetCommandPool; 2022-07-01 22:01:32 +00:00