Commit graph

692 commits

Author SHA1 Message Date
Jakob Bornecrantz aeef692e08 xrt: Refactor out main compositor creating into own interface 2020-03-02 12:00:22 +00:00
Jakob Bornecrantz 09aa8794b2 aux/vk: Refactor out helper code into own library 2020-03-02 11:58:40 +00:00
Jakob Bornecrantz d4928e1a1c comp: Improve comment on vk_bundle 2020-02-29 21:09:18 +00:00
Jakob Bornecrantz e80775fb63 comp: Reuse vk_create_view function in swapchain 2020-02-29 21:09:18 +00:00
Christoph Haag 1cf742a3dc comp: Add XRT_COMPOSITOR_DESIRED_MODE env var to choose mode for direct mode.
The variable should be set to the index in the enumeration of a modes according to VK_KHR_display.

Monado can print a list of available modes with their indices with the env var XRT_COMPOSITOR_PRINT_MODES=1.
2020-02-19 13:51:00 +00:00
Christoph Haag c2250e5af0 comp: print available modes with XRT_COMPOSITOR_PRINT_MODES=1
To not clutter the user's output with debug info, add a variable to print only the available modes.
2020-02-19 13:51:00 +00:00
Christoph Haag 6b8103f31b comp: Update nominal frame interval to match chosen mode in direct mdoe
This value is used in xrWaitFrame() to throttle the application's rendering
down to the refresh rate of the HMD.
2020-02-19 13:51:00 +00:00
Christoph Haag 36d6b71e8a comp: Choose best mode for direct mode by default
Best mode means: first maximize the rendered pixels, then maximize the refresh rate.
2020-02-19 13:51:00 +00:00
Jakob Bornecrantz 2114fc877d comp: Add option to draw wireframe 2020-01-25 20:19:13 +00:00
Ryan Pavlik e35c87d59e comp: Fix glXGetProcAddress prototype when building as C++ 2020-01-16 22:37:43 +00:00
Ryan Pavlik 871395d5b5 build: Adjust meson build equivalently 2020-01-14 12:28:23 -06:00
Ryan Pavlik c68d3bfe54 build: Adjust CMake build to allow actually disabling dependencies/options 2020-01-14 11:51:12 -06:00
Ryan Pavlik 682f41a37c comp: Fix build when VK_USE_PLATFORM_XLIB_XRANDR_EXT is not defined 2020-01-14 11:51:12 -06:00
Ryan Pavlik 358cde31b7 comp: Add a comment explaining why a function is guarded 2020-01-14 11:51:12 -06:00
Ryan Pavlik 6d60227e06 comp: More renaming for clarity 2019-12-07 18:25:37 +00:00
Ryan Pavlik 9668437c78 comp: Rename comp_xlib_client to indicate it's also GL related 2019-12-07 18:25:37 +00:00
Ryan Pavlik a6d9eea394 comp: Port memory allocation to the helper macros 2019-12-07 18:24:56 +00:00
Christoph Haag fcd43180e6 comp: Error when forcing a nonexistent vulkan gpu index
Instead of segfaulting.
2019-12-03 20:33:46 +01:00
Ryan Pavlik 90e57a4e8a xrt: Fix types related to EGL.
Fixes #46
2019-12-03 09:30:31 -06:00
Simon Ser 9347ecfe00
xrt: check arraySize==1 when using OpenGL ES 2
Only OpenGL ES 3 supports GL_TEXTURE_2D_ARRAY.
2019-11-18 15:16:16 +01:00
Simon Ser 81cace0250
comp: replace glCreateTextures with glGenTextures+glBindTexture
glCreateTextures is only available on OpenGL 4.5. It's not supported on
OpenGL ES.
2019-11-18 15:16:16 +01:00
Simon Ser 5eacb6f309
xrt: add support for OpenGL ES
This commit advertises the extension and adds support for
xrGetOpenGLESGraphicsRequirementsKHR
2019-11-18 15:16:15 +01:00
Jakob Bornecrantz 08e898c111 comp: Do not use cut-off in vive shader 2019-11-14 15:12:17 +00:00
Julian Eisel 05b069b0a0 Fix two use-after-free's and multiple memory leaks 2019-11-13 21:53:16 +01:00
Drew DeVault e5a9cbb2f9
Implement XR_MND_egl_enable
This extension introduces a more robust way of creating an XrSession for
OpenGL. It also lays the groundwork for future OpenGL ES support.

https://github.com/KhronosGroup/OpenXR-Docs/pull/40

Signed-off-by: Simon Ser <contact@emersion.fr>
Signed-off-by: Drew DeVault <sir@cmpwn.com>
2019-11-06 10:07:21 +01:00
Ryan Pavlik e8660a18bd build: Use CMAKE_POSITION_INDEPENDENT_CODE instead of target props.
Reduces repetitive code.
2019-11-01 16:51:54 -05:00
Simon Ser 36102bfa1e
comp: make Wayland window unresizable
This prevents the compositor from issuing resize requests. We ignore
those anyway.
2019-10-31 16:42:26 +01:00
Jakob Bornecrantz b5ee4f0dbd comp: Make it obvious that you should implement destroy yourself 2019-10-30 11:06:02 +00:00
Christoph Haag 7d9ef2f371 comp: Add setting to force a vulkan gpu index 2019-10-25 21:05:06 +02:00
Jakob Bornecrantz 9b6625961a comp: Implement new mesh shader 2019-10-25 13:05:54 +00:00
Ryan Pavlik e90ea99aa8 comp: Adjust frame waiting logic to behave correctly.
Some sub-calculations are still slightly hacky,
but now the overall structure is correct.
2019-10-23 17:18:46 +02:00
Jakob Bornecrantz 742fe05dd8 comp: Cody style shaders 2019-10-23 11:07:33 +01:00
Jakob Bornecrantz 127e5e67b4 comp: Cut-off is not needed 2019-10-23 10:21:33 +01:00
pblack e32902843c comp: Add chromatic aberration correction to mesh 2019-10-22 14:44:26 +01:00
Jakob Bornecrantz 315d3b65f1 comp: Do not destry VK_NULL_HANDLE buffers and memory 2019-10-10 22:11:09 +01:00
Jakob Bornecrantz e86628884b comp: Add disabled shader debugging code 2019-10-10 13:28:01 +01:00
Jakob Bornecrantz 2db8138e8e comp: Hack in a flip of the right eye 2019-10-10 13:28:01 +01:00
Jakob Bornecrantz fafbe287e1 comp: Clamp UV textures to a black border 2019-10-10 13:28:01 +01:00
pblack 898c1b4a9f comp: Add mesh distortion shader 2019-10-10 13:28:01 +01:00
Jakob Bornecrantz e327d56bf4 aux/ogl: Introduce a single small OpenGL library 2019-10-09 17:07:23 +01:00
Jakob Bornecrantz 68e7544f57 comp: Free window swapchain VkImageViews & VkSwapchainKHR 2019-10-08 00:04:25 +01:00
Jakob Bornecrantz 649bf88379 comp: Make sure to free VkImageViews on swapchains 2019-10-07 23:48:39 +01:00
Jakob Bornecrantz 0108207b3d comp: Use VK_NULL_HANDLE 2019-10-07 23:27:09 +01:00
Jakob Bornecrantz 1d9009a461 comp: Set array_size 2019-10-07 23:26:43 +01:00
Benjamin Saunders 3d5872f346 comp: Fix missing usages on Vulkan client swapchains 2019-10-07 22:08:56 +01:00
Lubosz Sarnecki 979536dd4b xrt/comp/cmake: Enable build of Wayland backend.
Add pkgconfig based Wayland build including protocol generation.
2019-10-02 12:22:42 +02:00
Jakob Bornecrantz 5cd4d272a2 comp: Code style, pointer star location 2019-09-29 11:45:23 +01:00
Drew DeVault b4f0c79abd comp_compositor.c: prefer Wayland over XCB 2019-09-26 12:15:27 -04:00
Drew DeVault 9bcfa56f2f compositor: overhaul Wayland backend
This simplifies the Wayland backend, fixes the build configuration for
it, ports it to xdg-shell stable, and reworks some false assumptions
from the original port.
2019-09-26 12:15:27 -04:00
Drew DeVault 064aef3526 build: port to meson 2019-09-26 15:05:22 +00:00
Drew DeVault c6586cfd1e comp_compositor: use nanosleep instead of usleep
Improves portability
2019-09-26 15:05:22 +00:00
Jakob Bornecrantz 5de401ea58 comp: Tidy wait frame 2019-08-31 14:17:41 +01:00
Jakob Bornecrantz cfb1ca3052 comp: Ensure nominal_frame_interval_ns is a sane value 2019-08-31 14:17:41 +01:00
Christoph Haag d9736ba3b7 comp: wait for next frame in xrWaitFrame
fixes 6e396ed

It was unnecessary to move the wait to xrEndFrame.
It does not matter if the compositor renders the frame immediately because the
frame physically can not be displayed before the next HMD refresh.

On the other hand, leaving too short of a time for the compositor to render
may delay the frame past its predicted time.
2019-08-20 10:10:10 +00:00
Jakob Bornecrantz 042d30c590 comp: Fix warnings 2019-08-17 10:34:12 +01:00
Ryan Pavlik e21b495f90 comp: Comment a resource and memory leak 2019-08-16 17:25:19 -05:00
Ryan Pavlik 2aca9821fa comp: Clang-tidy 2019-08-16 17:20:01 -05:00
Ryan Pavlik dbf0bdd014 comp: Factor out some shared functionality.
Simplifies error handling as well.
2019-08-16 17:12:35 -05:00
Nova King 2d016b3385 xrt: Added support for XR Swapchain flags 2019-08-16 22:06:28 +00:00
Ryan Pavlik 1eae45212e comp: Complete initializers for Vulkan structures 2019-08-16 10:54:49 -05:00
Christoph Haag 6e396ed07e comp: Add hack waiting on xrEndFrame() until frame should be displayed.
xrWaitFrame() doesn't block at all, will only predict the time for the next frame.
Once the compositor is multithreaded, this wait should be moved to the compositor thread
and xrWaitFrame should be the function to block until the compositor finished rendering the frame.
2019-08-15 12:29:58 +00:00
Christoph Haag 8cda1b6f67 comp: fix cleanup of direct window, delete with correct type
Found by gcc address sanitizer.
2019-08-13 01:47:50 +02:00
Ryan Pavlik edfa0323a3 comp: Use U_ZERO 2019-06-18 14:14:01 -05:00
Ryan Pavlik b004f95503 comp: Adjust initialization order to match declaration. 2019-06-18 18:43:20 +00:00
Ryan Pavlik 21e324ed57 comp: Codespell fix 2019-06-18 13:09:59 -05:00
Jakob Bornecrantz 4c6de83ea9 comp: Fix uninitialised errors from Valgrind
```txt
Conditional jump or move depends on uninitialised value(s)
   at 0x6A5A7A0: vk_select_physical_device (comp_vk.c:847)
   by 0x6A5AAF9: vk_create_device (comp_vk.c:916)
   by 0x6A5CD82: compositor_check_vulkan_caps (comp_compositor.c:401)
   by 0x6A5D659: comp_compositor_create (comp_compositor.c:656)
   by 0x6A5F99B: xrt_gfx_vk_provider_create (comp_glue_vk.c:57)
   by 0x6A78197: oxr_session_populate_vk (oxr_session_vk.c:32)
   by 0x6A77E59: oxr_session_create_impl (oxr_session.c:536)
   by 0x6A77F53: oxr_session_create (oxr_session.c:567)
   by 0x6A6EA74: oxr_xrCreateSession (oxr_api_session.c:44)
   by 0x2632A8: xrCreateSession (in hello_xr)
   by 0x239F0D: (anonymous namespace)::OpenXrProgram::InitializeSession() (in hello_xr)
   by 0x22ED25: main (in hello_xr)
 Uninitialised value was created by a stack allocation
   at 0x6A5CB05: compositor_check_vulkan_caps (comp_compositor.c:349)
```
2019-06-11 15:27:31 +01:00
Jakob Bornecrantz 1f64f714f6 xrt: Add input, hmd_parts and tracking interface
This patch has been spun of the rather massive amount of work for adding input
devices into Monado. The interfaces feels somewhat stable now so could do
with another pair of eyes on them, before too much work is done on st/oxr.
2019-06-10 14:47:19 +01:00
Benjamin Saunders 74165d7e0e comp: Support sRGB swapchain under OpenGL 2019-05-04 13:25:24 -07:00
Jakob Bornecrantz 690a354bd1 comp: Code style 2019-05-02 14:07:41 +01:00
Benjamin Saunders 13cef1b8b9 comp: Support rendering individual array layers 2019-05-01 17:45:43 -07:00
Benjamin Saunders b6f2013bc5 st/oxr: Frame end uses the most recently released image 2019-05-01 17:45:43 -07:00
Benjamin Saunders f6b8cb25b8 comp: Respect swapchain array size 2019-05-01 17:45:43 -07:00
Jakob Bornecrantz 2caa08f8a8 comp: Debug print more info 2019-04-25 06:46:20 +01:00
Jakob Bornecrantz 95f24f4735 comp: Debug print Vulkan device and version 2019-04-25 06:34:34 +01:00
Jakob Bornecrantz 86d906cb4d comp: Refactor documentation 2019-04-06 13:05:35 +01:00
Jakob Bornecrantz 76c9cd4c67 comp: Filter distortion texture lineary 2019-04-03 17:54:16 +01:00
Jakob Bornecrantz 1873d3a1d2 comp: Tidy code 2019-04-03 17:24:06 +01:00
Pete Black df2b6da078 comp: Add NVIDIA direct mode code 2019-04-03 17:02:07 +01:00
Pete Black ecec5f1a1a comp: Make surface format selection more flexible 2019-04-03 17:02:07 +01:00
Jakob Bornecrantz c6b4b7916a comp: Refactor vk_get_loader_functions function 2019-04-03 17:00:43 +01:00
Lubosz Sarnecki bbf484f51e comp: Free client command pool.
As pointed out by Vulkan validation on the client intance.
2019-03-29 11:00:57 +01:00
Lubosz Sarnecki 00afe442f8 comp: Introduce XRT_COMPOSITOR_VULKAN_VALIDATION.
For enabling Vulkan validation during runtime.
Add CMake option to disable Vulkan validation at build time.
By default the DEBUG extension is enabled but the validation layers
are not when the ENV variable is not set to true.
2019-03-29 10:59:41 +01:00
Ryan Pavlik 8c37377853 comp: Keep track of nominal display interval and last time 2019-03-27 13:39:22 +00:00
Ryan Pavlik f6c97ec253 comp: Pass time state down into compositor 2019-03-27 13:39:22 +00:00
Ryan Pavlik c38026e571 comp: Fix comment typo. 2019-03-22 14:19:19 -05:00
Ryan Pavlik 5b4c3a2f94 comp: Use U_TYPED_CALLOC/U_TYPED_ARRAY_CALLOC 2019-03-22 13:50:29 -05:00
Ryan Pavlik f7d990c7e3 xrt: Use U_TYPED_CALLOC 2019-03-22 13:47:51 -05:00
Ryan Pavlik afd20250ed comp: Fix Vulkan type issues. 2019-03-22 16:54:14 +00:00
Christoph Haag b8c5ba4bc9 comp: handle acquiring direct mode failing 2019-03-22 16:41:53 +00:00
Lubosz Sarnecki 52e11ac4c5 comp: Move VIVE distortion properties to UBO. 2019-03-18 14:45:31 +01:00
Lubosz Sarnecki 6f5ef7a0cb comp: Rename ubo_data to ubo_pano. 2019-03-18 14:45:31 +01:00
Jakob Bornecrantz 15a97422ba xrt: Add all of Monado 2019-03-18 05:52:32 +00:00