Commit graph

775 commits

Author SHA1 Message Date
Ryan Pavlik 16c016c4ca comp/render: Use a helper 2022-04-05 22:48:24 +00:00
Jakob Bornecrantz 48fd3e626c c/client: Tidy VK compositor 2022-04-05 23:22:26 +01:00
Jakob Bornecrantz 3bff3827d9 c/client: Remove acquire_release_fence completely
The barriers are a completely GPU affair no need to syncronize with the host.
2022-04-05 23:22:26 +01:00
Jakob Bornecrantz e7713bf1e4 c/multi: Be slightly smarter about late frames 2022-04-05 23:22:26 +01:00
Jakob Bornecrantz cf413a445f c/multi: Add per client thread that waits for sync objects 2022-04-05 23:22:26 +01:00
Jakob Bornecrantz 47649f56b6 u/pacing: Track when the app wants the frame to be displayed 2022-04-05 22:01:17 +00:00
Jakob Bornecrantz 8e8a0b38c6 u/pacing: Add gpu done time tracking to app pacer 2022-04-05 22:01:17 +00:00
Jakob Bornecrantz cfb8d36b46 c/render: Rename files 2022-04-05 22:45:45 +01:00
Jakob Bornecrantz ee09070608 c/render: Rename all functions and structs with new prefix 2022-04-05 22:45:12 +01:00
Jakob Bornecrantz d93c2dc4d8 c/render: Remove unused comp_rendering_compute_data 2022-04-05 22:45:12 +01:00
Jakob Bornecrantz 2f24353556 c/render: Remove main/comp_compositor include 2022-04-05 22:45:10 +01:00
Jakob Bornecrantz aaa2d4e8e6 aux/vk: Move compositor image format list here 2022-04-01 19:44:07 +01:00
Jakob Bornecrantz dea7bc847e c/util: Make COMP_VULKAN_FORMATS differentiate between depth-stencil, depth and stencil formats 2022-04-01 18:53:47 +01:00
Christoph Haag 5aa7ef25b8 c/util: Remove old format checking code
It's not the compositors job to check the format.
2022-04-01 18:53:47 +01:00
Christoph Haag 322ce27163 c/util: Print warning when attempting to create protected content swapchain 2022-04-01 18:53:47 +01:00
Jakob Bornecrantz 4f0b425da7 c/client: Tidy error messages in GL compositor 2022-03-31 01:14:04 +01:00
Jakob Bornecrantz d53659a476 c/client: Add a littel bit of tracing to GL compositor 2022-03-31 01:09:25 +01:00
Jakob Bornecrantz 38e7a0a1e6 c/client: Format format list 2022-03-31 00:45:51 +01:00
Jakob Bornecrantz 4fe8e89be9 c/client: Add new formats to GL 2022-03-31 00:43:53 +01:00
Jakob Bornecrantz 4f1dfa7ae4 aux/vk: Refactor out some printing functions 2022-03-30 20:14:38 +01:00
Jakob Bornecrantz 922fdff62d c/main: Use new format checking helpers 2022-03-29 16:26:34 +01:00
Jakob Bornecrantz c3eb8cd014 c/util: s/colour/color/g 2022-03-29 16:26:34 +01:00
Jakob Bornecrantz 08e025522f c/util: Add missing AHardwareBuffer formats 2022-03-29 16:26:34 +01:00
Jakob Bornecrantz 658c67b0fc c/util: Add vulkan format checking code 2022-03-29 16:26:34 +01:00
Jakob Bornecrantz 8cfe941c01 aux/vk: Rename vk_[color_]format_string 2022-03-29 16:26:34 +01:00
Antonio Ospite 28b53689f4 c/render: add comp_buffer_init_exportable helper to create exportable buffers
Some downstream user might want to use the very handy comp_buffer_init()
helper to create buffers, but the latter does not cover the case when
the buffer needs to be exportable for API interoperability.

Add a new comp_buffer_init_exportable() helper to cover that case, this
is done in a way that is not particularly invasive for existing users of
comp_buffer_init(), as all the logic about the exportability is handled
by the new function.
2022-03-23 21:38:22 +00:00
Jakob Bornecrantz 074a0afc32 c/vk: Make it possible to request higher Vulkan version 2022-03-22 15:19:48 +00:00
Jakob Bornecrantz 8d660b6994 cmake: Make it possible to select SPIR-V version to target 2022-03-22 15:19:48 +00:00
Jakob Bornecrantz 170fe0e5d9 aux/vk: Refactor out semaphore and native creation into a helper 2022-03-19 00:41:29 +00:00
Moses Turner b6e5c296f5 comp: Factor frame-timing helper out of comp_compositor
So that we can use it for readback and anything else
2022-03-18 19:00:28 -05:00
Jakob Bornecrantz c766411b50 c/client: Impelement xrt_compositor_semaphore interfaces 2022-03-14 19:53:05 +00:00
Jakob Bornecrantz ca7526a3e2 c/multi: Impelement xrt_compositor_semaphore interfaces 2022-03-14 19:53:05 +00:00
Jakob Bornecrantz 8a9a8aeeba c/util: Impelement xrt_compositor_semaphore interfaces 2022-03-14 19:53:05 +00:00
Jakob Bornecrantz 16bae922e2 c/main: Enable timeline semaphores where available 2022-03-14 18:58:35 +00:00
Jakob Bornecrantz f4f2196e34 xrt: Add a way to say that timeline semaphores have been enabled 2022-03-14 18:58:35 +00:00
Antonio Ospite beda8f35b2 xrt: fix -Wmissing-field-initializers warning in comp_window_wayland.c
Newer wayland protocols have a new filed in xdg_toplevel_listener which
is not initialized:

-----------------------------------------------------------------------
[215/315] Building C object src/xrt/compositor/CMakeFiles/comp_main.dir/main/comp_window_wayland.c.o
.../src/xrt/compositor/main/comp_window_wayland.c:182:1: warning: missing field 'configure_bounds' initializer [-Wmissing-field-initializers]
};
^
1 warning generated.
-----------------------------------------------------------------------

Detect the version when this is needed and initialize the field to
silence the warning.
2022-03-09 14:53:06 +01:00
Antonio Ospite e8c9d8f575 xrt: fix -Wunused-variable warnings
Some variables are only used in asserts, so they may be unused
depending on the build type:

-----------------------------------------------------------------------
[68/315] Building C object src/xrt/auxiliary/CMakeFiles/aux_util.dir/util/u_sink_combiner.c.o
.../src/xrt/auxiliary/util/u_sink_combiner.c:188:11: warning: unused variable 'diff_ns' [-Wunused-variable]
                int64_t diff_ns = frames[0]->timestamp - frames[1]->timestamp;
                        ^
1 warning generated.
[205/315] Building C object src/xrt/compositor/CMakeFiles/comp_main.dir/main/comp_renderer.c.o
.../src/xrt/compositor/main/comp_renderer.c:872:17: warning: unused variable 'layer_count' [-Wunused-variable]
        const uint32_t layer_count = c->base.slot.layer_count;
                       ^
1 warning generated.
-----------------------------------------------------------------------

Mark them as XRT_MAYBE_UNUSED to fix the build warnings.
2022-03-09 14:53:06 +01: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
Antonio Ospite 031a53d6fd c/render: assign comp_buffer.size when creating a buffer
The size field in comp_buffer was never assigned, and also never used as
all comp_buffer users rely on the allocation_size field.

Use the size field to store the size originally requested when creating
the buffer which could be different from the value returned in the
allocation_size field.

Having both sizes available allows a user to check if allocation_size is
in fact different from the requested size.
2022-03-02 16:41:00 +00:00
Jakob Bornecrantz eca2e2535f c/util: Return timeout on fence timeout 2022-03-02 11:01:07 +00:00
Jakob Bornecrantz 772b6256d6 c/multi: Handle fence timeouts 2022-03-02 11:01:07 +00:00
Jakob Bornecrantz e13cfd2fec c/shader: Fix color values in compute clear shader 2022-03-01 13:58:07 +00:00
Jakob Bornecrantz 8229905233 c/client: Set default logging level for vk_bundle in vk compositor 2022-02-25 17:11:38 -06:00
Jakob Bornecrantz f6788f5548 c/client: Create and pass down sync_handles to native compositor 2022-02-25 17:11:38 -06:00
Jakob Bornecrantz ac752a651e c/client: Add tracing to Vulkan client compositor 2022-02-24 20:54:47 +00:00
Jakob Bornecrantz dfb1b8d469 c/render: Do not assume nullDescriptor is available 2022-02-22 21:49:06 +00:00
Jakob Bornecrantz b1b6978069 c/main: Pass in correct pipeline stage to wait on 2022-02-22 21:49:06 +00:00
Christoph Haag 996a5d3e9a xrt: Move fov from xrt_view to xrt_hmd_parts::distortion 2022-02-19 13:04:32 +00:00
Moses Turner 86a1ba32e5 c/main: Add readback to gui_window_record 2022-02-18 20:26:27 -06:00
Moses Turner 43fb248271 c/main: Allow framebuffers to be transfer sources 2022-02-18 20:26:27 -06: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
Ryan Pavlik 010599baa6 comp/main: Fix debug typo 2022-02-18 21:22:32 +00:00
Jakob Bornecrantz 9a884931bb c/client: Use correct VkImageAspectFlags in barriers 2022-02-17 19:29:57 +00:00
Christoph Haag fc77db6eca comp/main: Fix debug print of available direct mode modes
fixes 3dfec5f1ab
2022-02-17 17:22:18 +01:00
Jakob Bornecrantz 7f33a55c77 c/client: Wait on Vulkan clients to complete rendering 2022-02-17 00:39:53 +00:00
Jakob Bornecrantz 3eb921b899 c/main: Use xrt_device_get_view_poses 2022-02-16 23:15:14 +00:00
Jakob Bornecrantz a998987efd c/main: Refactor fast path detection 2022-02-16 20:25:41 +00:00
Jakob Bornecrantz 91a2a5d29d c/client: Set correct optimal layout for client swapchains 2022-02-16 18:20:44 +00:00
Mateo de Mayo 4d491c8c8e misc: Fix bad matrix usage on calibration save and fields doc 2022-02-14 10:22:05 -03:00
Ryan Pavlik 73220b268e comp/multi: Zero the predicted GPU time that we don't compute 2022-02-08 10:51:40 -06:00
Ryan Pavlik 0f8565ec71 a/util: Some further internal renames for pacing 2022-02-08 10:51:39 -06:00
Ryan Pavlik a2e1eb7e75 a/util: Have all timestamps be injected into pacing.
No more calling os_monotonic_get_ns() inside the pacing helpers.
Much better testability.
2022-02-08 10:51:39 -06:00
Ryan Pavlik 40caa24d4b c/main: Rename to calc_frame_pacing 2022-02-07 13:11:00 -06:00
Christoph Haag c9b1fcf572 comp/main: Re add accidentally deleted WINDOW_XCB case
Fixes 856d2d39c8
2022-01-25 22:22:02 +01:00
Ryan Pavlik 856d2d39c8 comp/main: Simplify use of u_string_list 2022-01-24 16:34:45 -06:00
Ryan Pavlik c9889f776f xrt: Rename xrt_space_graph to xrt_relation_chain.
Rename all functions and instances accordingly as well,
and add documentation for all methods.
2022-01-21 19:54:30 +00:00
Ryan Pavlik a7c22fd185 a/util: Rename u_render_timing to u_pacing_app and u_frame_timing to u_pacing_compositor.
They both control pacing, but for different uses. Neither actually performs any timing.
2022-01-15 01:06:48 +00:00
Ryan Pavlik 365b3ca8d4 a/util: Make display timing helper more configurable.
Also comment some display timing interfaces better.
2022-01-15 01:06:48 +00:00
Christoph Haag a60fab80e6 c/main: Don't leak non_desktop_reply 2022-01-13 23:46:43 +01:00
Christoph Haag a6935dcc4b c/main: Check surface counter flags 2022-01-13 23:07:46 +01:00
Christoph Haag 8fe465e88f c/main: Make VkDisplayKHR from direct mode accessible in target swapchain 2022-01-13 23:07:34 +01:00
Christoph Haag 73d75aa522 c/main: cache VkDisplayKHR in wayland direct mode window 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 ff4d492b74 c/util: add optional vk instance extensions 2022-01-13 23:05:38 +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 f34816872c c/main: Use u_string_list for vk extensions 2022-01-13 23:04:34 +01:00
Christoph Haag ee366e16e5 c/main: rename extensions num -> count 2022-01-13 23:03:56 +01:00
Christoph Haag 1ae1e695e2 c/util: Fix device extension list comment 2022-01-13 23:03:25 +01:00
Christoph Haag 8d5847d5a9 comp: Fix running with XRT_COMPOSITOR_XCB_FULLSCREEN=1
It required XRT_COMPOSITOR_XCB_DISPLAY to be set to a valid display or the
swapchain creation would fail because the requested width x height was 0x0.

Now the first display with a size other than 0x0 is selected when the current
selected display is 0x0.

fixes #148
2022-01-13 20:50:48 +00:00
Christoph Haag d36123927d comp: avoid an unnecessary struct copy for print modes 2022-01-12 21:57:18 +01:00
Christoph Haag 3dfec5f1ab comp: Don't omit first mode in debug print
Also avoid an unnecessary struct copy.
2022-01-12 21:53:47 +01:00
Antonio Ospite 2b456da531 c/client: make sure layer_commit passes complete frames in comp_gl_client
Make sure `layer_commit` passes on complete frames in `comp_gl_client.c`
even when EGL_ANDROID_native_fence_sync is not available.

The `insert_fence` function defined in `comp_egl_client.c` and passed as
argument to `comp_egl_client::client_gl_compositor_init` is only setting
up a proper fence when EGL_ANDROID_native_fence_sync is available,
resulting in a no-op otherwise.

However the fact that the insert_fence function is still valid results
in the `glFlush` workaround from
`comp_gl_client::client_gl_compositor_layer_commit` not kicking in.

To fix this define a NULL `insert_fence` function when
EGL_ANDROID_native_fence_sync is not available, and while at it turn the
`glFlush` workaround into a `glFinish` for extra safety.

This ensures that frames are always complete after
`client_gl_compositor_layer_commit` has been called.
2022-01-06 14:54:55 +00:00
Ryan Pavlik 1203cf38f0 cmake: Fix build when we have EGL but not GLES headers. 2021-12-13 15:00:24 -06:00
Ryan Pavlik 46d095d978 comp/util: Allow enabling timeline semaphores when creating bundle. 2021-12-08 00:54:12 +00:00
Jakob Bornecrantz 27f80a90d9 c/render: Make it safe to call comp_resources_close in more cases
Fixes #139
2021-12-01 16:08:12 +00:00
Jakob Bornecrantz 0bd38a0a0d c/render: Error on failing to get memory type 2021-11-24 17:05:13 +00:00
Christoph Haag a1c00e14fd st/oxr: Implement a basic version of XR_FB_display_refresh_rate 2021-11-22 20:44:18 +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
Jakob Bornecrantz a56ea7cad6 c/multi: Fix copy-pasto 2021-11-18 20:14:05 +00:00
nima01 70263a6b16 c/util: Use GPU index specified by XRT_COMPOSITOR_FORCE_CLIENT_GPU_INDEX 2021-11-18 14:14:32 +00:00
Ryan Pavlik 185bf61dd8 comp: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Ryan Pavlik dfa0aba496 aux: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Ryan Pavlik 33c0287f8b xrt: Rename all "num" parameters and fields to "count" (or "capacity" as appropriate)
This matches the OpenXR usage: the array is the plural of the element type,
and the count is the singular element type plus "count" (usually CountOutput
because of the two-call idiom)

Includes fixes to other code to match API changes.
2021-11-13 12:04:38 +00:00
Ryan Pavlik cc4007a69e cmake: Substantial cleanups and simplifications
We now have a cmake-format config file.
We no longer use list variables for sources, instead using
target_sources when we need to add, in accordance with current
best practice. (This makes it a lot easier to edit too.) There's no more
include_directories(), add_definitions(), or other gently-deprecated
directory-scoped commands, nor any CMake scripts that include
a parent directory reference (named targets instead)
2021-11-12 09:48:37 -06:00
Ryan Pavlik 201765d3a7 comp: Populate blend mode list in system compositor info from device 2021-11-12 03:05:10 +00:00
Jakob Bornecrantz 7ecf649ac2 c/render: Use new Vulkan helpers 2021-11-10 14:22:28 +00:00
Jakob Bornecrantz 42b0361852 c/main: Use Vulkan helper in util 2021-11-07 15:14:04 +00:00
Jakob Bornecrantz 7703b7104b c/main: Tidy extensions 2021-11-06 10:51:19 +00:00
Jakob Bornecrantz a97523591f c/util: Add Vulkan helper 2021-11-06 10:51:19 +00:00
Jakob Bornecrantz 56b5918d69 c/main: Fix tab CVK_ERROR macro 2021-11-04 20:57:55 +00:00
Jakob Bornecrantz c912c67dc6 c/main: Use comp_base 2021-11-04 20:57:53 +00:00
Jakob Bornecrantz a1b515616a c/render: Documentation 2021-11-04 20:56:21 +00:00
Jakob Bornecrantz 6e28533bdc c/render: Break out into own library 2021-11-04 20:56:21 +00:00
Jakob Bornecrantz e08c1b1f04 c/util: Add comp_base native compositor helper base class 2021-11-04 20:56:21 +00:00
Jakob Bornecrantz c3b8810bb0 c/util: Documentation 2021-11-04 20:56:20 +00:00
Jakob Bornecrantz 029031cfd3 c/util: Break out swapchain and sync into own library 2021-11-04 20:55:48 +00:00
Jakob Bornecrantz 78936d2b4e c/main: Use get_vk more 2021-11-04 20:54:11 +00:00
Jakob Bornecrantz c6031a26e8 c/main: Refactor fence to be more independent 2021-11-04 20:46:09 +00:00
Jakob Bornecrantz 293d617dd5 c/main: Refactor swapchain to be more independent 2021-11-04 20:46:03 +00:00
Ryan Pavlik 3bd0a07aa2 cmake: Split out finding GLX from the rest of OpenGL on Linux.
Fixes #132.
2021-11-04 15:36:58 +00:00
Jakob Bornecrantz 36765256a6 c/render: Free command buffer when closing rendering 2021-11-03 23:10:47 +00:00
Ryan Pavlik 7a26a2339b comp: Fix some it's vs its. 2021-11-03 17:28:17 -05:00
Jakob Bornecrantz ec9cfa690d c/render: s/rts/rtr/g 2021-11-03 13:28:15 +00:00
Jakob Bornecrantz 12bfc8b5c9 c/render: Do not depend on the compositor 2021-11-03 13:26:42 +00:00
Jakob Bornecrantz c346d812c7 c/render: Add helpers to access the vk_bundle 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 648f49f4ef c/render: Change argument order to object first 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz ccc4bbcf86 c/render: Remove unused disable_atw argument 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 56f4466ffa c/render: Move shaders to render 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 8c8d72647b c/render: Refactor out timewarp matrix into util file 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 60024efba9 c/render: If we only have a projection layer skip the layer renderer 2021-11-03 13:25:14 +00:00
Jakob Bornecrantz 4ca35b8b3c c/render: Don't cache comp_rendering 2021-11-03 13:24:20 +00:00
Jakob Bornecrantz 847e322fe5 c/render: Remove stub function decls 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz d8a580d875 c/render: Tidy compute rendering 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz f74812f02e c/render: Refactor rendering code so target data is it's own struct. 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz 08135b6365 c/shaders: Tidy and codestyle 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz 0b9bf9c772 c/main: Do not go via target for compositor 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz 765feb6fe1 c/main: Refactor mesh descriptor and UBO upload 2021-11-02 20:19:05 +00:00
Mario Kleiner a6185490e8 c/direct: Fix direct display RandR leased output on multi-X-Screen.
The old code assumes the HMD is always connected to a RandR
output on X-Screen 0, but this is not neccessarily the case
on multi-X-Screen setups. Use a loop to iterate over all
X-Screens outputs until the HMD output is found.

Tested on single and dual X-Screen setups, also with Oculus
Rift CV1 connected to 2nd X-Screen.

This is rather useful for porting applications from "OpenHMD Rift
on separate X-Screen for performance" to OpenXR Monado direct
mode, so one can quickly switch between Monado and OpenHMD native
without cumbersome xorg.conf + logout + login games.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2021-10-28 12:29:36 +00:00
Ryan Pavlik 782aa11754 comp/main: Initial wiring, but don't actually allow closing the window on Windows for now. 2021-10-15 15:29:58 -05:00
Ryan Pavlik cb3fc65f14 comp/main: Win32: Spawn a thread for our windowed output. 2021-10-15 15:13:00 -05:00
Ryan Pavlik 2790f6d29f comp: Fix windows build - near and far are keywords. 2021-10-15 10:15:16 -05:00
Ryan Pavlik 884a312011 build: Fix build with CMake before 3.14 2021-10-01 11:21:35 -05:00
Christoph Haag 2ef9e0aa61 comp: Don't disconnect from NULL wayland_display
Fixes crash when not running on wayland.
2021-09-20 13:54:36 +00:00
Jakob Bornecrantz d36eec8fbb c/main: Guard against XRT_HAVE_WAYLAND_DIRECT 2021-09-17 11:54:57 +00:00
Jakob Bornecrantz 02d67a52c5 c/main: Guard use of VK_EXT_acquire_drm_display identifier 2021-09-17 11:54:57 +00:00
Jakob Bornecrantz a58b8df4a9 cmake: Link with WAYLAND_LIBRARIES or SDL gets sad 2021-09-17 11:54:57 +00:00
Simon Zeni 47be806428 c/main: Implement WINDOW_DIRECT_WAYLAND 2021-09-15 18:44:18 +00:00
Jakob Bornecrantz c5c07eced2 c/render: Remove the hacks 2021-09-14 16:15:27 +00:00
Jakob Bornecrantz 5bff6f3c9b c/render: Add ATW support for compute rendering 2021-09-14 16:15:27 +00:00
Jakob Bornecrantz 3795004208 c/main: Add compute distortion rendering backend 2021-09-14 16:15:27 +00:00
Christoph Haag 79fe29f674 c/main: Use ns_to_ms helper for nominal frame interval 2021-09-13 21:28:10 +01:00
Christoph Haag 83e194e9d3 comp: Wait for release/acquire fence before destroying swapchain
Fixes validation warning when quitting Vulkan OpenXR applications
like hello_xr -G Vulkan2:

VUID-vkDestroyImage-image-01000(ERROR / SPEC): msgNum: -221078694 - Validation Error: [ VUID-vkDestroyImage-image-01000 ] Object 0: handle = 0x55d4d96e4960, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf2d29b5a | Cannot call vkDestroyImage on VkImage 0xcb1c7c000000001b[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000)
    Objects: 1
        [0] 0x55d4d96e4960, type: 3, name: NULL

This is an addition to commit 778515739f that
introduced this fence.
2021-09-07 11:51:03 +02:00
Christoph Haag 527efd379f comp: debug print the numeric format
helps to see which format it is when it can not be translated to a string
2021-09-03 15:32:35 +00:00
korejan 42af354f65 c/multi: Fixes some uninitialized mutexes.
Fixes some uninitialized/null mutexes that causes crash bug during the creation of the multi compositors (seen on Windows).
2021-08-21 11:34:33 +01:00
Jakob Bornecrantz 9178e0ef59 c/main: Constify argument 2021-08-17 12:04:49 +01:00
Christoph Haag 778515739f comp: Guard acquire/release with a fence
Fixes validation warning when acquiring images before the command buffer
of the previous acquire or release on the same queue has finished.

VUID-vkQueueSubmit-pCommandBuffers-00071(ERROR / SPEC): msgNum: 774851941 - Validation Error: [ VUID-vkQueueSubmit-pCommandBuffers-00071 ] Object 0: handle = 0x558634c5c750, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x2e2f4d65 | vkQueueSubmit(): pSubmits[0].pCommandBuffers[0] VkCommandBuffer 0x558634b85a10[] is already in use and is not marked for simultaneous use. The Vulkan spec states: If any element of the pCommandBuffers member of any element of pSubmits was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkQueueSubmit-pCommandBuffers-00071)
    Objects: 1
        [0] 0x558634c5c750, type: 3, name: NULL
2021-08-16 15:52:57 +02:00
Christoph Haag b249af9415 comp: Bind the correct GL texture for importing memory objects 2021-08-09 15:17:25 +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
Jakob Bornecrantz 9d9879ca3e c/multi: Make sure there are at least some predicted data
To avoid asserts in non-service mode.
2021-07-22 17:19:45 +01:00
Christoph Haag ab209bcf18 c/main: Add return value for when asserts are disabled
It's not worth introducing a new error code for this case, just
return XRT_ERROR_VULKAN.

Fixes error with asserts disabled

../src/xrt/compositor/main/comp_compositor.c: In function 'compositor_mark_frame':
../src/xrt/compositor/main/comp_compositor.c:186:1: warning: control reaches end of non-void function [-Wreturn-type]
  186 | }
      | ^
2021-07-15 01:31:19 +02:00
Ryan Pavlik 2d20a6436c comp: Wrap a unistd include for Windows. 2021-06-15 17:37:14 -05:00
Jakob Bornecrantz ebc2208a73 c/main: Also resize on VK_SUBOPTIMAL_KHR 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 9996d686e4 c/main: Tidy 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 1eebc12780 c/main: Refactor out viewport calculation into own function 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 6d011e25d4 c/main: Give the correct queue family argument to vkGetPhysicalDeviceSurfaceSupportKHR 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz f38932cb64 c/main: Tidy comp_renderer fence creation a bit 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 65ca3113f8 c/main: Allow to specifiy image usage for target images 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz fd1a916e0b c/main: Tidy and add a bit of debug to comp_target_swapchain 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 0f07e5b899 c/main: Tweak swapchain formats a bit 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 928ae5b27a c/render: Add support for non-freeable descriptor pools 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 6c033658a8 c/render: Add support for storage image descriptors 2021-06-15 19:45:14 +00:00
Jakob Bornecrantz 8a7d857dde aux/vk: Add the option to handle optional device features 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 b805742a53 c/main: Do not list VK_FORMAT_A2B10G10R10_UNORM_PACK32 as a supported format 2021-06-15 14:27:07 +00:00
Jakob Bornecrantz f9b5097134 c/client: Use the EGL compositor's display in swapchain 2021-06-02 14:26:59 +00:00
Jakob Bornecrantz 13a5036b24 c/main: Make temp_vk be a pointer 2021-05-11 16:34:10 +00:00
Jakob Bornecrantz 9b6b5b7e6a c/main: Do not copy vk_bundle 2021-05-11 16:34:10 +00:00
Jakob Bornecrantz bd6e15c70c c/main: Follow style of using vk variable for vk_bundle interactions 2021-05-11 16:34:10 +00:00
Jakob Bornecrantz 3af65d60d2 c/client: Follow style of using vk variable for vk_bundle interactions 2021-05-11 16:34:10 +00:00
Jakob Bornecrantz 35beaeead4 c/client: Add EGL comment (NFC) 2021-05-05 16:14:00 +00:00
Jakob Bornecrantz c1ac7fc679 c/client: s/comp_egl_glue.c/comp_egl_client.c (NFC) 2021-05-05 16:14:00 +00:00
Jakob Bornecrantz 3a537b8374 c/client: Tidy EGL code (NFC) 2021-05-05 16:14:00 +00:00
Jakob Bornecrantz 12489295cb c/client: Do not blindly try to restore no EGLDisplay contexts 2021-05-05 16:14:00 +00:00
Jakob Bornecrantz 41817b6e11 c/client: Tidy EGL code (NFC) 2021-05-05 16:14:00 +00:00
Jakob Bornecrantz 1af00e7cbe c/client: Fix swapchain leak 2021-04-30 21:56:09 +00:00
Jakob Bornecrantz 76ed4d16ce c/client: Tidy and lower the logging level 2021-04-28 12:25:53 +00:00
Ryan Pavlik 2dd81f53e3 comp: Port to using new zero/identity defines 2021-04-26 22:38:42 +00:00
Jakob Bornecrantz 41ad1dcf99 c/main: Better Vulkan error printing 2021-04-26 22:56:08 +01:00
Jakob Bornecrantz 159eeb81a7 c/main: Pass in preferred dimensions to create images
Fixes #120
2021-04-26 20:28:32 +00:00
Jakob Bornecrantz 9c4b41f58e c/main: Assert that preferred dimensions are somewhat valid 2021-04-26 20:28:32 +00:00
Jakob Bornecrantz 2efd2f543f c/main: Tidy code in comp_target_swapchain (NFC) 2021-04-26 20:28:32 +00:00
Jakob Bornecrantz 5915318654 c/main: Clarify in code that it is preferred dimensions (NFC) 2021-04-26 20:28:32 +00:00
Jakob Bornecrantz ceb6c8b3fe c/main: Remove trailing newline in error message (NFC) 2021-04-26 20:28:32 +00:00
Jakob Bornecrantz 846a663942 c/main: Make instance extension list more readable (NFC) 2021-04-26 20:28:32 +00:00
Jakob Bornecrantz 64093dfaaf c/main: Expose more formats 2021-04-26 20:26:30 +01:00
Jakob Bornecrantz a377fb135f c/client: Vulkan formats are listed as numbers not hex 2021-04-26 18:52:31 +00:00
Jakob Bornecrantz c1d18f9b25 c/client: Add support for more formats in GL 2021-04-26 18:52:31 +00:00
Jakob Bornecrantz 7af531a6c5 c/main: Refactor so we can do an early acquire 2021-04-21 17:56:29 +00:00
Christoph Haag c47775a95d comp: Fix warning after Vulkan 1.2.174 VK_NULL_HANDLE change
../src/xrt/compositor/main/comp_layer_renderer.c:317:17: warning: initialization of 'unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
  317 |      .subpass = VK_NULL_HANDLE,
      |                 ^~~~~~~~~~~~~~
2021-04-19 13:04:59 +02:00
Jakob Bornecrantz daff92a275 c/main: None functional refactor of renderer.
Not ment to change the functionallity of the code only reflow the code.
2021-04-17 00:12:22 +01:00
Jakob Bornecrantz 5d605c7b3f c/main: Do not create images when initing swapchain. 2021-04-16 02:27:22 +01:00
Ryan Pavlik 1521953813 c/main: Re-arrange comp_renderer to allow late init.
Co-author: Jakob Bornecrantz <jakob@collabora.com>
2021-04-16 02:27:22 +01:00
Ryan Pavlik 1cf39ec2c0 c/main: Add comp_target::has_images, and implement in comp_target_swapchain. 2021-04-16 01:51:05 +01:00
Ryan Pavlik 90192118d0 c/main: Add comp_target::check_ready, and implement in comp_target_swapchain. 2021-04-16 01:45:38 +01:00
Jakob Bornecrantz 780ec4fac9 c/main: Turn debug into spew 2021-04-16 01:45:38 +01:00
Ryan Pavlik 7c2ea1369f c/main: Normalize destroy pattern for comp_renderer. 2021-04-15 23:28:47 +01:00
Ryan Pavlik 70982e9c39 c/main: Remove unimplemented comp_renderer function. 2021-04-15 23:28:47 +01:00