Jakob Bornecrantz
32d563d26c
c/main: Fix conversion warnings
...
c/main: Fix conversion warnings
2022-05-02 17:16:04 +01:00
Jakob Bornecrantz
91facd10f1
xrt: Add xrt_uuid_t
2022-05-02 17:16:04 +01:00
Jakob Bornecrantz
c6208482b8
c/util: Avoid using sprintf
2022-05-02 17:16:04 +01:00
Jakob Bornecrantz
175ff58f10
build: Remove meson files
2022-04-28 21:36:25 +00:00
Jakob Bornecrantz
bc89a23280
c/client: Use helper function to see if timeline semaphore is avaiable
2022-04-28 10:55:55 +01:00
Jakob Bornecrantz
3aa4fdb096
a/vk: Add function to print device features
2022-04-24 11:10:03 +01:00
Jakob Bornecrantz
7b82b63896
c/render: Remove unused timewarp shader
2022-04-18 18:48:54 +01:00
Jakob Bornecrantz
95d5343c9a
c/render: Make distortion shader optionally do timewarp
2022-04-18 18:48:54 +01:00
Jakob Bornecrantz
0be36ccc9d
c/render: Use shader specialisation to set distortion_texel_count
2022-04-18 18:48:54 +01:00
Jakob Bornecrantz
7ba7f43e83
a/vk: Add specialization_info argument to vk_create_compute_pipeline
2022-04-18 18:48:54 +01:00
Ryan Pavlik
5dcb5c360c
comp: Fix warnings on MSVC
2022-04-18 10:53:02 -05:00
Ryan Pavlik
11e0d7ed76
comp: Fix comment typo
2022-04-18 10:52:45 -05:00
Jakob Bornecrantz
8ed5a082be
c/render: Add missing comments to timewarp shader
2022-04-18 13:03:32 +01:00
Jakob Bornecrantz
1999891a19
c/render: Use a Vulkan projection matrix with Y down in projection space
2022-04-18 13:03:32 +01:00
Jakob Bornecrantz
e561bec87d
c/render: Use specialization constant for distortion size
...
This would allow Vulkan shader specialization to be used to change
the size and runtime instead of having to recompile.
2022-04-18 13:03:32 +01:00
Jakob Bornecrantz
87ea035416
c/render: Document compute distortion shader sampling code
2022-04-18 13:03:32 +01:00
Jakob Bornecrantz
f4d3c8a93f
c/render: Correctly calculate uv to tan angle offset values
2022-04-18 13:03:32 +01:00
Jakob Bornecrantz
f20031ec99
c/render: Correctly convert shader index to target pixel uv
2022-04-18 13:03:32 +01:00
Jakob Bornecrantz
ca33ac434c
c/render: Correctly scale uv for compute distortion
2022-04-17 15:26:51 +00:00
Christoph Haag
7ebd11e1d4
comp/render: Add VkExternalMemoryBufferCreateInfo
...
Fixes validation error when calling render_buffer_init_exportable
VUID-vkBindBufferMemory-memory-02726(ERROR / SPEC): msgNum: -168767885 - Validation Error: [ VUID-vkBindBufferMemory-memory-02726 ] Object 0: handle = 0xe88693000000000c, type = VK_OBJECT_TYPE_BUFFER; Object 1: handle = 0xcad092000000000d, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0xf5f0ce73 | vkBindBufferMemory(): The VkDeviceMemory (VkDeviceMemory 0xcad092000000000d[]) has an external handleType of VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT which does not include at least one handle from VkBuffer (VkBuffer 0xe88693000000000c[]) handleType Unhandled VkExternalMemoryHandleTypeFlagBits. The Vulkan spec states: If the value of VkExportMemoryAllocateInfo::handleTypes used to allocate memory is not 0, it must include at least one of the handles set in VkExternalMemoryBufferCreateInfo::handleTypes when buffer was created (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkBindBufferMemory-memory-02726 )
Objects: 2
[0] 0xe88693000000000c, type: 9, name: NULL
[1] 0xcad092000000000d, type: 8, name: NULL
2022-04-15 01:27:38 +02:00
Ryan Pavlik
3e6ec47296
monado: Apply clang-tidy fixes to most of the codebase.
...
All at least visually inspected, some revised from the auto-fixit
2022-04-13 09:34:54 -05:00
Ryan Pavlik
0ae0316400
cmake: Format build files
2022-04-13 01:11:13 +01:00
Ryan Pavlik
f769ff8977
comp/main: Manual fixes to clang-tidy issues
2022-04-13 01:10:46 +01:00
Ryan Pavlik
71580213aa
comp/client: Fix doxygen warnings
2022-04-12 23:06:11 +00:00
Ryan Pavlik
b999b326dc
comp/render: Silence warning
2022-04-12 23:06:11 +00:00
Ryan Pavlik
fe7cf853e9
comp/render: Guard gcc pragmas
2022-04-12 23:06:11 +00:00
Jakob Bornecrantz
b26a602322
c/main: Fix copy-typo
2022-04-08 20:15:00 +01:00
Jakob Bornecrantz
42df7b7b21
c/main: Lock cmd pool mutex when reading back frames
2022-04-08 19:30:06 +01:00
Jakob Bornecrantz
400c3900f0
c/render: Take the pool lock to fix threading errors
2022-04-08 19:20:33 +01:00
Jakob Bornecrantz
0ee1127431
aux/vk: Rename barrier functions and introduce new variant
2022-04-08 19:17:41 +01:00
Jakob Bornecrantz
6e13a0a21b
aux/vk: Use correct aspect for image barrier
2022-04-08 17:34:30 +00:00
Jakob Bornecrantz
0d152381a8
c/client: Move NOOP begin/end to EGL client
2022-04-08 11:32:40 +01:00
Jakob Bornecrantz
46debec4fd
c/client: Use begin and end in layer commit
2022-04-08 11:21:06 +01:00
Jakob Bornecrantz
7996457f3e
c/client: Tidy
2022-04-08 11:21:06 +01:00
Christoph Haag
cb7855b8bd
c/client: Ensure the correct GL context is current
...
when running OpenGL functions.
Co-authored-by: James Hogan <james@albanarts.com>
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2022-04-07 20:17:29 +02:00
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