Commit graph

71 commits

Author SHA1 Message Date
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