Commit graph

1245 commits

Author SHA1 Message Date
Jakob Bornecrantz a8c254a8cf aux/bindings: Refactor path verify function generation 2022-05-31 13:25:48 +00:00
Jakob Bornecrantz 037c49ce30 aux/bindings: Update generated file copyright 2022-05-31 13:25:48 +00:00
Mateo de Mayo 29aefe2ba8 misc: Use pretty printers and remove stale matrix print functions
Use u_pp_matrix_* instead.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 7d80729358 u/pp: Add array and array2d f64 pretty printers 2022-05-26 18:35:39 +00:00
Mateo de Mayo 8adbdc27e5 t/slam: Allow drivers to send calibration info to SLAM tracker
There were a couple of properties that didn't fit well in our current
calibration structs and so I created t_slam_calib_extras struct to store them.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 02abc49313 t/calib: Add IMU intrinsics struct 2022-05-26 18:35:39 +00:00
Mateo de Mayo 05b8e320a5 a/math: Add multiple isometry-related matrix functions
An isometry is a rigid body transform. In this context I'm using the term to
refer to 4x4 homogeneous matrices in SE(3). I.e., matrices comprised of a
3x3 rotation, a 3x1 translation, and a [0,0,0,1] last row.
This matrix represent both rigid body transforms.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 8b2fa955b9 a/math: Fix matrix identities and use isometry
Isometry3f is a 4x4 matrix transform that performs only rotation and translation
(an SE(3) matrix). Its inverse can be computed trivially by Eigen compared to a
regular 4x4 transform.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 2212cf95cf a/math: Add missing extern C 2022-05-26 18:35:39 +00:00
Jakob Bornecrantz 433915b0bf u/pp: Add math object printers 2022-05-26 14:10:06 +01:00
Moses Turner 5652ddd718 a/util: Fix function signature for u_builder_find_prober_device
Was this ever working?
2022-05-25 20:53:46 +00:00
bjorn d523001b6e aux/vk: Use correct image type for 3D images; 2022-05-25 20:24:17 +00:00
Ryan Pavlik 2da547ce66 a/util: Update pretty printing of results 2022-05-25 18:12:22 +00:00
Ryan Pavlik 596d15a50c a/d3d: Further namespace the d3d11-specific functions 2022-05-25 18:12:22 +00:00
Ryan Pavlik 903fd01272 a/d3d: Add a fence waiting helper 2022-05-24 16:55:45 -05:00
Ryan Pavlik 3f777350e1 a/d3d: Fix docs for fence helper 2022-05-24 16:11:36 -05:00
Ryan Pavlik bb94363f94 a/d3d: Turn off some swapchain formats that we can't roundtrip properly 2022-05-24 16:11:36 -05:00
Mateo de Mayo 2cf07dedf2 t/euroc: Fix crash when recording euroc dataset by providing UI button
Previously, a crash occurred in some situations when the second sample was
written before the first sample was able to create the necessary CSV files.
2022-05-23 17:51:11 -03:00
Jakob Bornecrantz a4983fa5b1 auxiliary: Break apart CMakeLists.txt file 2022-05-23 09:12:54 -05:00
Jakob Bornecrantz 935de808c0 a/bindings: Do not depend on util 2022-05-23 09:12:54 -05:00
Jakob Bornecrantz b64660d458 a/util: Include u_time.h in hand tracking helper 2022-05-23 09:12:54 -05:00
Ryan Pavlik 5656de8b72 a/d3d: Fence helpers 2022-05-23 14:11:43 +00:00
Jakob Bornecrantz 658a21a177 a/d3d: Tidy headers 2022-05-23 14:11:43 +00:00
Moses Turner 9386e56c3d a/util: Paranoia for u_frame_times_widget 2022-05-23 13:19:58 +00:00
Jakob Bornecrantz 490e90b493 a/vk: Also check for d3d12 fence semaphores 2022-05-21 13:37:28 +01:00
Ryan Pavlik 9337ea375c auxiliary: Add new d3d helper library 2022-05-20 22:37:15 +01:00
Ryan Pavlik 907edf10a3 a/os: Add more docs for correct use of condition variables 2022-05-20 21:30:41 +00:00
Ryan Pavlik 588b4831a2 a/util: Improve docs structure 2022-05-20 15:48:19 -05:00
Ryan Pavlik fd25fc75bc a/os: Rearrange time header to get the docs outside of the ifdefs.
Easier to read, easure to be sure we don't accidentally miss something
for doxygen.
2022-05-20 15:48:02 -05:00
Ryan Pavlik ea4c14c3aa a/os: Rename os_thread_helper_stop to os_thread_helper_stop_and_wait 2022-05-20 18:46:37 +01:00
Ryan Pavlik 14aed90183 a/os: Add "initialized" flags to threading primitives (in debug builds)
Failling to init these (other than zero-init) works fine on Linux, but fails on Windows.
So now we at least have an assert on Linux.
2022-05-20 18:40:18 +01:00
Ryan Pavlik 1aba4348dc a/os: Fix naming convention for function pointer 2022-05-20 18:40:16 +01:00
Jakob Bornecrantz 6de4e4afaa u/worker: Init mutex and cond var 2022-05-19 23:13:48 +01:00
Mateo de Mayo 3e6fd9ba73 u/aeg: Fix clang warnings 2022-05-19 18:21:36 -03:00
Mateo de Mayo 85bdbc1817 u/aeg: Implement state machine to correct overshooting and avoid oscillations 2022-05-19 14:03:17 +00:00
Mateo de Mayo bf311f3c2e u/aeg: Add log functions 2022-05-19 14:03:17 +00:00
Mateo de Mayo 63b477d250 a/math: Add MIN, MAX and CLAMP macros 2022-05-19 14:03:17 +00:00
Mateo de Mayo 77139b02a1 u/aeg: Add utility for automatic exposure and gain computation 2022-05-19 14:03:17 +00:00
Mateo de Mayo 7ea7cce930 u/var: Add u_var_histogram_f32 2022-05-19 14:03:17 +00:00
Mateo de Mayo 7d266c76b5 u/var: Add u_var_draggable_u16 2022-05-19 14:03:17 +00:00
Arkadiusz Drohomirecki d444412221 a/math: Add a clear() method to RelationHistory/m_relation_history 2022-05-18 14:45:12 +00:00
Ryan Pavlik 3b54152563 auxiliary: Improve word choice/clarity 2022-05-17 17:40:56 -05:00
Ryan Pavlik 6e78ec1127 a/util: Improve word choice/clarity 2022-05-17 17:39:52 -05:00
Ryan Pavlik 276f24c9ad a/tracking: Improve word choice/clarity 2022-05-17 17:39:52 -05:00
Ryan Pavlik 2a54dcdb19 a/math: Improve word choice/clarity 2022-05-17 17:39:52 -05:00
Ryan Pavlik 9edc6dd0bf a/util: Doc improvements 2022-05-17 14:42:02 -05:00
Ryan Pavlik cc8c034556 a/vk: Improve comment 2022-05-17 14:42:02 -05:00
Jakob Bornecrantz 61323c32d2 xrt: Use error messages in various instance and prober functions 2022-05-17 20:10:40 +01:00
Jakob Bornecrantz 58438db241 xrt: Add some error messages 2022-05-17 20:10:40 +01:00
Jakob Bornecrantz cf9c5b9dc7 u/var: Put in a namespace and add some documentation 2022-05-17 20:09:19 +01:00
Ryan Pavlik 8bd7d199cb a/os: Improve docs in the threading header. 2022-05-17 12:39:44 -05:00
Ryan Pavlik 1e307e8e9f a/os: Add a function to set thread name. 2022-05-17 12:39:44 -05:00
Ryan Pavlik 147624348f a/vk: Add an internal check to ensure graphics buffer ref worked. 2022-05-17 17:38:07 +00:00
Jakob Bornecrantz 9285bee210 u/system_helpers: Use new xrt_prober_create_system function 2022-05-17 11:20:40 +01:00
Jakob Bornecrantz f91db16dac u/builders: Add xrt_builder_helpers 2022-05-17 11:20:40 +01:00
Frederic Plourde 2e42373d21 aux/os: Fix os_semaphore_get_realtime_clock()
Function was previously using output param 'ts' as
input for computing 'now' internally.
2022-05-16 20:56:53 +00:00
Ryan Pavlik 213f4b6003 a/util: Add a COM guard object.
Need COM initialized to do some things (like d3d11) on Windows,
don't know if the app already initialized it, don't have a big preference
for "how" we initialize it.
2022-05-16 11:00:27 -05:00
Jakob Bornecrantz f4ab51f78b u/pp: Add xrt_result_t printing 2022-05-15 15:02:08 +01:00
Jakob Bornecrantz 535cb839fa u/pp: Add stack only sink for printing messages 2022-05-15 14:54:00 +01:00
Moses Turner bcfd50c839 u/sink: Make sure gen-locked frames have the same timestamp 2022-05-13 14:18:02 +01:00
Jakob Bornecrantz faca646193 u/logging: Change suffix to _func_t 2022-05-12 11:59:12 +00:00
Jakob Bornecrantz ceed09d9b5 u/prober: Add helper file for prober functions 2022-05-12 11:59:12 +00:00
Jakob Bornecrantz 1a358d3a92 u/sink: Remove unused downstream2 2022-05-12 12:53:14 +01:00
Jakob Bornecrantz fc093e2c7b u/sink: Assert on downstream being null 2022-05-12 12:53:12 +01:00
Jakob Bornecrantz d84819eee7 u/system_helpers: Add helper code for system devices 2022-05-11 10:14:00 +01:00
Moses Turner e25ee4058d xrt: Remove xrt_tracked_hand 2022-05-10 18:53:58 +01:00
Jakob Bornecrantz e140cfad5c u/pacing: Add vblank timing function for display control 2022-05-10 11:22:04 +01:00
Jakob Bornecrantz 57070ad620 u/pacing: Make the comp time be at least 2ms in fake pacer 2022-05-10 11:18:52 +01:00
Jakob Bornecrantz b9b9ced43d u/pacing: Predict present time and then calculate display time in fake pacer 2022-05-10 11:18:52 +01:00
Jakob Bornecrantz 6c9c1e9249 u/pacing: Make present_to_display_offset_ns more clear 2022-05-10 11:18:51 +01:00
Jakob Bornecrantz 2b042d48ff a/vk: Add function to print opened device info 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 6c61965790 a/vk: Tidy vk_print_device_info 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz e092a3687b a/vk: Pass external_[fence|samaphore]_fd status to vk_init_from_given 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 6a8e679f87 a/vk: Check for VK_KHR_external_fence_fd and VK_KHR_external_semaphore_fd 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 308aeb8e21 a/vk: Sort checked extensions 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 56b77248c9 a/vive: Add bindings to touch controller 2022-05-09 10:46:44 +00:00
Jakob Bornecrantz 7d4b19766c a/vive: Add bindings 2022-05-09 10:46:44 +00:00
Mateo de Mayo e3fadb5364 doc: Fix some doxygen warnings 2022-05-07 15:53:56 +00:00
Ryan Pavlik e79a13f0ac a/util: Fix log corruption on Windows. 2022-05-06 00:26:39 +01:00
Ryan Pavlik 3287c984aa cmake: Reorganize options, renaming some.
Rename XRT_HAVE_SLAM to XRT_FEATURE_SLAM,
moving it from xrt_config_have.h to xrt_config_build.h
accordingly.
2022-05-04 11:24:02 -05:00
Jakob Bornecrantz 4ba23faa6b auxiliary: Deal with clang-format-14 fallout (NFC) 2022-05-04 15:58:01 +01:00
Ryan Pavlik f9b4af04e4 a/tracking: Fix conversion warnings 2022-05-03 22:44:37 +01:00
Ryan Pavlik d8970f25f9 a/math: Fix conversion warnings 2022-05-03 22:44:28 +01:00
Jakob Bornecrantz d1d58c4bce u/distortion: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz d8003b4c8f u/pacing: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz fa988a7f74 u/time: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 5981a508d2 u/sink: Fix conversion warnings 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 1afc18108e m/3dof: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 0a0d4a49d5 m/space: Fix function call warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz d1512f0005 m/lowpass: Fix no define parameter warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 6d2011abfd u/file: Avoid using fopen 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 42ba279050 u/file: Avoid using getenv 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz fbc51366e6 u/config: Avoid using strncpy 2022-05-02 17:16:04 +01:00
Antonio Ospite bd06961188 a/util: Silence percetto warnings also when building with g++
Percetto is using designated struct initializers, but those are not
supported in standard C++ before C++20, resulting in some compilation
warnings.

The previous fix for that was using a diagnostic valid for clang but not
for g++ resulting in another warning when building with g++:

-----------------------------------------------------------------------
In file included from ../monado/src/xrt/auxiliary/math/m_relation_history.cpp:19:
../monado/src/xrt/auxiliary/util/u_trace_marker.h:21:32: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas]
   21 | #pragma GCC diagnostic ignored "-Wc99-designator"
      |                                ^~~~~~~~~~~~~~~~~~
-----------------------------------------------------------------------

For GCC the diagnostics to disable is actually "-Wpedantic", as shown
below:

-----------------------------------------------------------------------
In file included from ../monado/src/xrt/auxiliary/util/u_trace_marker.h:25,
                 from ../monado/src/xrt/auxiliary/math/m_relation_history.cpp:19:
../external/percetto/src/percetto.h: In function ‘void percetto_event_with_args(percetto_category*, uint32_t, const char*, int32_t, const percetto_track*, int64_t, uint64_t)’:
../external/percetto/src/percetto.h:424:5: warning: C++ designated initializers only available with ‘-std=c++2a’ or ‘-std=gnu++2a’ [-Wpedantic]
  424 |     .track = track,
      |     ^
-----------------------------------------------------------------------

And for clang "-Wc++20-designator" should be slightly more accurate:

-----------------------------------------------------------------------
In file included from ../monado/src/xrt/auxiliary/util/u_trace_marker.h:29:
../external/percetto/src/percetto.h:424:5: warning: designated initializers are a C++20 extension [-Wc++20-designator]
    .track = track,
    ^
-----------------------------------------------------------------------

Fix all the warnings by ignoring the right diagnostics depending on the
compiler, taking care of differentiating clang++ from g++ as they both
define __GNUC__.
2022-05-02 17:31:11 +02:00
Jakob Bornecrantz 175ff58f10 build: Remove meson files 2022-04-28 21:36:25 +00:00
Jakob Bornecrantz 0dbe9857c3 a/vk: Add function to check timeline semaphore import/export cap 2022-04-28 10:55:55 +01:00
Ryan Pavlik a10206dce6 a/vk: Fix MSVC build.
Apparently static initializers referring to other statics are not enjoyed
by Microsoft's compiler
2022-04-27 15:23:24 +00:00
Ryan Pavlik 7db9131aab a/util: Add pop_back to HistoryBuffer 2022-04-27 09:51:12 -05:00
nima01 232b3bade5 aux/math: More double-precision matrix and vector support 2022-04-25 19:14:46 +00:00
Jakob Bornecrantz 27e4577acb a/vk: Tidy calls to vk_get_memory_type 2022-04-24 22:47:51 +01:00
Jakob Bornecrantz 045fc9c33f a/vk: Add caller_name argument to vk_alloc_and_bind_image_memory for better debugging 2022-04-24 22:47:51 +01:00
Jakob Bornecrantz 917265d1b2 a/vk: Add vk_convert_timestamps_to_host_ns function 2022-04-24 22:47:51 +01:00
Jakob Bornecrantz f217046810 a/vk: Get the timestamp valid bits 2022-04-24 11:10:03 +01:00
Jakob Bornecrantz 599527fe01 a/vk: Fill in timestamp feature information 2022-04-24 11:10:03 +01:00
Jakob Bornecrantz 3aa4fdb096 a/vk: Add function to print device features 2022-04-24 11:10:03 +01:00
Jakob Bornecrantz f65a8b1eda a/vk: Add VK_EXT_calibrated_timestamps 2022-04-24 00:29:41 +01:00
Jakob Bornecrantz 9e58ab69e0 a/vk: Add VkQueryPool functions 2022-04-24 00:29:41 +01:00
Jakob Bornecrantz 3d35890206 u/pacing: Trace a little bit more to show when the app is late 2022-04-18 23:26:52 +00:00
Jakob Bornecrantz 4f5bcc5c22 u/pacing: Use the correct term for when the GPU work is done 2022-04-18 23:26:52 +00:00
Jakob Bornecrantz 93091157b8 u/pacing: Correct account for the apps full time when predicting 2022-04-18 23:26:52 +00:00
Jakob Bornecrantz c5fe86ccf9 u/trace_marker: Add env varible to enable/disable tracing
Should a application load and unload the OpenXR runtime driver multiple times
the Perfetto code becomes unstable and eventually crashes. This unfortunately
happens with the CTS, to avoid having to recompile Monado and a env variable
to control if tracing should be used.
2022-04-18 22:41:17 +00: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 a55a5a54b3 a/math: Normalize argument order of one euro filter initializing functions. 2022-04-13 09:40:40 -05: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 029fa2496e a/math: Tell clang-tidy to leave our MSVC-mandated define alone.
Also try to avoid redefinition warnings from MSVC.
2022-04-13 01:11:17 +01:00
Ryan Pavlik 4939bc2f59 a/util: Manual fixes to clang-tidy issues. 2022-04-13 01:10:54 +01:00
Ryan Pavlik ad1961fce7 auxiliary: Fix or disable a number of warnings
Both MSVC and doxygen warnings.
2022-04-12 23:06:11 +00:00
Ryan Pavlik 2b5f07c8e4 a/util: Silence warnings if using percetto in C++ 2022-04-12 14:38:58 -05:00
Jakob Bornecrantz e8fb10bd82 u/pretty: Add pretty print helpers 2022-04-11 18:27:39 +01:00
Jakob Bornecrantz 0ee1127431 aux/vk: Rename barrier functions and introduce new variant 2022-04-08 19:17:41 +01:00
Jakob Bornecrantz 9d74e7a8c5 aux/vk: Tidy command buffer related functions 2022-04-08 17:34:30 +00:00
James Hogan 7440e14fb4 aux/ogl: Add GLX API wrapper
Add a wrapper for the GLX API around the GLAD header.

Co-authored-by: Christoph Haag <christoph.haag@collabora.com>
2022-04-07 02:21:34 +02:00
Mateo de Mayo 4c85e3fbb3 t/slam: Refactor tracker to accept a config struct on creation 2022-04-06 11:50:17 -03:00
Mateo de Mayo a80f88eb00 d/euroc: Refactor player to accept a config struct on creation 2022-04-06 11:50:17 -03:00
Mateo de Mayo 2a4a9aa210 t/slam: Add configuration options to tracker
Specifically:
- SLAM_PREDICTION_TYPE
- SLAM_CSV_PATH
2022-04-06 11:50:17 -03:00
Mateo de Mayo b6cd12a860 misc: Add gui nullcheck and initialize thread running field 2022-04-06 11:50:17 -03:00
Jakob Bornecrantz 716ba4db60 tracking: Predeclare struct instead of including cJSON in header 2022-04-06 15:38:44 +01:00
Jakob Bornecrantz 1a00709186 aux/vk: Add vkEnumerateDeviceLayerProperties to instance functions 2022-04-06 11:45:24 +01:00
Ryan Pavlik 8af498aa20 a/vk: Fix typo 2022-04-05 22:48:24 +00:00
Ryan Pavlik 7952773908 a/vk: Expose get_device_memory_handle as vk_get_native_handle_from_device_memory 2022-04-05 22:48:24 +00:00
Jakob Bornecrantz 0595070132 u/pacing: Split draw into draw and wait, improve pipelining 2022-04-05 22:01:17 +00: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 04b9602dd1 u/pacing: Allow more then two frames to be alive at the same time 2022-04-05 22:01:17 +00:00
Jakob Bornecrantz f4b75b3561 u/trace_marker: Add wait pacing track 2022-04-05 22:01:17 +00:00
Jakob Bornecrantz c317a27a1d aux/vk: Remove setting of format on out struct 2022-04-04 16:12:08 +00:00
Jakob Bornecrantz 1c67113e20 aux/vk: Tidy vk_image_allocator 2022-04-04 16:12:08 +00:00
Jakob Bornecrantz 15da4636f8 aux/vk: Use VK_CSCI_FORMATS helper for swapchain image flags 2022-04-01 19:53:02 +01:00
Jakob Bornecrantz aaa2d4e8e6 aux/vk: Move compositor image format list here 2022-04-01 19:44:07 +01:00
Jakob Bornecrantz d31232c794 aux/vk: Move vk_insert_image_memory_barrier declaration (NFC) 2022-04-01 18:54:18 +01:00
Jakob Bornecrantz 4f1dfa7ae4 aux/vk: Refactor out some printing functions 2022-03-30 20:14:38 +01:00
Jakob Bornecrantz 2f73c7569a aux/vk: Refactor out init functions 2022-03-30 20:08:35 +01:00
Jakob Bornecrantz f54894ee0d aux/vk: Refactor out external handle type for compositor swapchain image 2022-03-29 16:26:34 +01:00
Jakob Bornecrantz 65ced47143 aux/vk: Add more formats to vk_format_string 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
Christoph Haag 5d50be0164 aux/vk: Always use dedicated allocation on desktop
Fixes CTS on nvidia.

Example code given by the driver devs in the nvidia forums was
VkBool32 dedicatedAllocation = (memDedicatedReq.requiresDedicatedAllocation != VK_FALSE) ||
                               (memDedicatedReq.prefersDedicatedAllocation != VK_FALSE);

However on GTX 1080, nvidia 470.103 with

    ./conformance_cli "Timed Pipelined Frame Submission" -G Vulkan2

we are to create a VkImage with

  DEBUG [create_image] create_image: Use dedicated allocation: 0 (preferred: 0, required: 0)

doing so causes the VkFence wait in vk_submit_cmd_buffer to fail randomly with
either VK_TIMEOUT or VK_ERROR_DEVICE_LOST.

On AMD radv we are told to use dedicated allocation:

  DEBUG [create_image] create_image: Use dedicated allocation: 1 (preferred: 1, required: 1)
2022-03-28 23:16:05 +02:00
Moses Turner 9417fe8d7f a/tracking: Support different numbers of calib parameters 2022-03-23 20:56:15 +00:00
Jakob Bornecrantz 83c8b1da86 u/sink: Make u_sink_create_format_converter support L8
Co-authored-by: Moses Turner <moses@collabora.com>
2022-03-23 20:56:15 +00:00
Moses Turner e817a18cfd u/worker: Add #pragma once 2022-03-23 20:56:15 +00:00
Ryan Pavlik 8bfb4b3d09 cmake: Update to handle newer Percetto cmake build details 2022-03-23 11:22:10 -05:00