diff --git a/CMakeLists.txt b/CMakeLists.txt index b547b1527..79ef4455c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -270,10 +270,10 @@ option_with_deps(XRT_MODULE_COMPOSITOR_MAIN "Build main compositor host function XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN ) +option_with_deps(XRT_MODULE_AUX_RENDER "Build auxiliary render library" DEPENDS XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN) +option_with_deps(XRT_MODULE_AUX_SHADERS "Build render shaders" DEPENDS XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN) option_with_deps(XRT_MODULE_COMPOSITOR_MULTI "Build multi-client compositor library" DEPENDS XRT_MODULE_COMPOSITOR) option_with_deps(XRT_MODULE_COMPOSITOR_NULL "Build testing null compositor" DEPENDS XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN) -option_with_deps(XRT_MODULE_COMPOSITOR_RENDER "Build compositor render library" DEPENDS XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN) -option_with_deps(XRT_MODULE_COMPOSITOR_SHADERS "Build compositor shaders" DEPENDS XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN) option_with_deps(XRT_MODULE_COMPOSITOR_UTIL "Build compositor utility library" DEPENDS XRT_MODULE_COMPOSITOR XRT_HAVE_VULKAN) option_with_deps(XRT_MODULE_COMPOSITOR_MOCK "Build mock compositor library" DEPENDS XRT_MODULE_COMPOSITOR) option_with_deps(XRT_MODULE_MERCURY_HANDTRACKING "Enable Mercury hand tracking" DEPENDS XRT_HAVE_OPENCV XRT_HAVE_ONNXRUNTIME) diff --git a/cmake/MonadoSetOptions.cmake b/cmake/MonadoSetOptions.cmake index eed32ad7a..d30ba8c5f 100644 --- a/cmake/MonadoSetOptions.cmake +++ b/cmake/MonadoSetOptions.cmake @@ -97,6 +97,8 @@ function(monado_set_options) XRT_HAVE_XLIB XRT_HAVE_XRANDR # XRT_MODULE_* - Core modules + XRT_MODULE_AUX_RENDER + XRT_MODULE_AUX_SHADERS XRT_MODULE_AUX_VIVE XRT_MODULE_COMPOSITOR XRT_MODULE_COMPOSITOR_CLIENT @@ -104,8 +106,6 @@ function(monado_set_options) XRT_MODULE_COMPOSITOR_MOCK XRT_MODULE_COMPOSITOR_MULTI XRT_MODULE_COMPOSITOR_NULL - XRT_MODULE_COMPOSITOR_RENDER - XRT_MODULE_COMPOSITOR_SHADERS XRT_MODULE_COMPOSITOR_UTIL XRT_MODULE_IPC XRT_MODULE_MERCURY_HANDTRACKING diff --git a/src/xrt/auxiliary/CMakeLists.txt b/src/xrt/auxiliary/CMakeLists.txt index c6467c460..1bfffa150 100644 --- a/src/xrt/auxiliary/CMakeLists.txt +++ b/src/xrt/auxiliary/CMakeLists.txt @@ -66,3 +66,8 @@ endif() if(XRT_HAVE_ONNXRUNTIME) add_subdirectory(onnx) endif() + +# Render library +if(XRT_MODULE_AUX_RENDER) + add_subdirectory(render) +endif() diff --git a/src/xrt/compositor/render/CMakeLists.txt b/src/xrt/auxiliary/render/CMakeLists.txt similarity index 70% rename from src/xrt/compositor/render/CMakeLists.txt rename to src/xrt/auxiliary/render/CMakeLists.txt index 8b0014d39..cb982c092 100644 --- a/src/xrt/compositor/render/CMakeLists.txt +++ b/src/xrt/auxiliary/render/CMakeLists.txt @@ -7,7 +7,7 @@ # add_library( - comp_render STATIC + aux_render STATIC render_buffer.c render_compute.c render_distortion.c @@ -19,7 +19,12 @@ add_library( ) # The aux_vk library needs to be public to include Vulkan. target_link_libraries( - comp_render - PUBLIC xrt-interfaces aux_vk comp_includes comp_shaders + aux_render + PUBLIC xrt-interfaces aux_vk comp_includes aux_shaders PRIVATE aux_util aux_os ) + +# Shaders library +if(XRT_MODULE_AUX_SHADERS) + add_subdirectory(shaders) +endif() diff --git a/src/xrt/compositor/render/render_buffer.c b/src/xrt/auxiliary/render/render_buffer.c similarity index 99% rename from src/xrt/compositor/render/render_buffer.c rename to src/xrt/auxiliary/render/render_buffer.c index 05776cc11..611a6342d 100644 --- a/src/xrt/compositor/render/render_buffer.c +++ b/src/xrt/auxiliary/render/render_buffer.c @@ -5,7 +5,7 @@ * @brief Buffer functions. * @author Lubosz Sarnecki * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "vk/vk_mini_helpers.h" diff --git a/src/xrt/compositor/render/render_compute.c b/src/xrt/auxiliary/render/render_compute.c similarity index 99% rename from src/xrt/compositor/render/render_compute.c rename to src/xrt/auxiliary/render/render_compute.c index 8dd219d4a..3623e8788 100644 --- a/src/xrt/compositor/render/render_compute.c +++ b/src/xrt/auxiliary/render/render_compute.c @@ -4,7 +4,7 @@ * @file * @brief The compositor compute based rendering code. * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "math/m_api.h" diff --git a/src/xrt/compositor/render/render_distortion.c b/src/xrt/auxiliary/render/render_distortion.c similarity index 99% rename from src/xrt/compositor/render/render_distortion.c rename to src/xrt/auxiliary/render/render_distortion.c index 3bb40fa9a..ec476c57a 100644 --- a/src/xrt/compositor/render/render_distortion.c +++ b/src/xrt/auxiliary/render/render_distortion.c @@ -4,7 +4,7 @@ * @file * @brief Code for handling distortion resources (not shaders). * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "xrt/xrt_device.h" diff --git a/src/xrt/compositor/render/render_gfx.c b/src/xrt/auxiliary/render/render_gfx.c similarity index 99% rename from src/xrt/compositor/render/render_gfx.c rename to src/xrt/auxiliary/render/render_gfx.c index 8838e9737..06ff75349 100644 --- a/src/xrt/compositor/render/render_gfx.c +++ b/src/xrt/auxiliary/render/render_gfx.c @@ -5,7 +5,7 @@ * @brief The NEW compositor rendering code header. * @author Lubosz Sarnecki * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "vk/vk_mini_helpers.h" diff --git a/src/xrt/compositor/render/render_interface.h b/src/xrt/auxiliary/render/render_interface.h similarity index 99% rename from src/xrt/compositor/render/render_interface.h rename to src/xrt/auxiliary/render/render_interface.h index 4775d6946..50d7c20a3 100644 --- a/src/xrt/compositor/render/render_interface.h +++ b/src/xrt/auxiliary/render/render_interface.h @@ -6,7 +6,7 @@ * @brief The NEW compositor rendering code header. * @author Lubosz Sarnecki * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #pragma once @@ -26,14 +26,14 @@ extern "C" { /*! - * @defgroup comp_render Compositor render code + * @defgroup aux_render Compositor render code * @ingroup comp * * @brief Rendering helper that is used by the compositor to render. */ /*! - * @addtogroup comp_render + * @addtogroup aux_render * @{ */ diff --git a/src/xrt/compositor/render/render_resources.c b/src/xrt/auxiliary/render/render_resources.c similarity index 99% rename from src/xrt/compositor/render/render_resources.c rename to src/xrt/auxiliary/render/render_resources.c index 4df599dd0..dc221f479 100644 --- a/src/xrt/compositor/render/render_resources.c +++ b/src/xrt/auxiliary/render/render_resources.c @@ -5,7 +5,7 @@ * @brief Shared resources for rendering. * @author Lubosz Sarnecki * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "xrt/xrt_device.h" diff --git a/src/xrt/compositor/render/render_sub_alloc.c b/src/xrt/auxiliary/render/render_sub_alloc.c similarity index 99% rename from src/xrt/compositor/render/render_sub_alloc.c rename to src/xrt/auxiliary/render/render_sub_alloc.c index 70b515ecb..118dd9a9c 100644 --- a/src/xrt/compositor/render/render_sub_alloc.c +++ b/src/xrt/auxiliary/render/render_sub_alloc.c @@ -4,7 +4,7 @@ * @file * @brief Sub allocation functions. * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "vk/vk_mini_helpers.h" diff --git a/src/xrt/compositor/render/render_util.c b/src/xrt/auxiliary/render/render_util.c similarity index 99% rename from src/xrt/compositor/render/render_util.c rename to src/xrt/auxiliary/render/render_util.c index 52cffc215..7d65eda01 100644 --- a/src/xrt/compositor/render/render_util.c +++ b/src/xrt/auxiliary/render/render_util.c @@ -4,7 +4,7 @@ * @file * @brief The compositor compute based rendering code. * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "math/m_api.h" diff --git a/src/xrt/compositor/shaders/CMakeLists.txt b/src/xrt/auxiliary/render/shaders/CMakeLists.txt similarity index 74% rename from src/xrt/compositor/shaders/CMakeLists.txt rename to src/xrt/auxiliary/render/shaders/CMakeLists.txt index c27402546..dd7377827 100644 --- a/src/xrt/compositor/shaders/CMakeLists.txt +++ b/src/xrt/auxiliary/render/shaders/CMakeLists.txt @@ -6,12 +6,7 @@ # Shaders headers # -set(DEPENDS - blit.inc.glsl - hsv.inc.glsl - layer_defines.inc.glsl - srgb.inc.glsl - ) +set(DEPENDS blit.inc.glsl hsv.inc.glsl layer_defines.inc.glsl srgb.inc.glsl) set(SHADERS blit.comp @@ -29,8 +24,6 @@ set(SHADERS layer_projection.frag layer_quad.vert layer_quad.frag - DEPENDS - ${DEPENDS} ) # Compile all the non-specialized shaders @@ -40,6 +33,8 @@ spirv_shaders( 1.0 # Currently targeting Vulkan 1.0 SOURCES ${SHADERS} + DEPENDS + ${DEPENDS} ) # Create a custom target that depends on the shader headers. @@ -52,16 +47,17 @@ add_custom_target(comp_shaders_headers DEPENDS ${SHADER_HEADERS}) # Shader library # -add_library(comp_shaders STATIC ${SHADER_HEADERS} render_shaders_interface.h render_shaders.c) +add_library(aux_shaders STATIC ${SHADER_HEADERS} render_shaders_interface.h render_shaders.c) target_link_libraries( - comp_shaders + aux_shaders PUBLIC xrt-interfaces aux_vk comp_includes PRIVATE aux_util ) # Ensure shader headers are built before compiling this library -add_dependencies(comp_shaders comp_shaders_headers) +add_dependencies(aux_shaders comp_shaders_headers) # Shaders - marked SYSTEM so we get no warnings -target_include_directories(comp_shaders SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +target_include_directories(aux_shaders SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +target_include_directories(aux_shaders PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/xrt/compositor/shaders/blit.comp b/src/xrt/auxiliary/render/shaders/blit.comp similarity index 100% rename from src/xrt/compositor/shaders/blit.comp rename to src/xrt/auxiliary/render/shaders/blit.comp diff --git a/src/xrt/compositor/shaders/blit.inc.glsl b/src/xrt/auxiliary/render/shaders/blit.inc.glsl similarity index 100% rename from src/xrt/compositor/shaders/blit.inc.glsl rename to src/xrt/auxiliary/render/shaders/blit.inc.glsl diff --git a/src/xrt/compositor/shaders/blit_ms.comp b/src/xrt/auxiliary/render/shaders/blit_ms.comp similarity index 100% rename from src/xrt/compositor/shaders/blit_ms.comp rename to src/xrt/auxiliary/render/shaders/blit_ms.comp diff --git a/src/xrt/compositor/shaders/clear.comp b/src/xrt/auxiliary/render/shaders/clear.comp similarity index 100% rename from src/xrt/compositor/shaders/clear.comp rename to src/xrt/auxiliary/render/shaders/clear.comp diff --git a/src/xrt/compositor/shaders/distortion.comp b/src/xrt/auxiliary/render/shaders/distortion.comp similarity index 100% rename from src/xrt/compositor/shaders/distortion.comp rename to src/xrt/auxiliary/render/shaders/distortion.comp diff --git a/src/xrt/compositor/shaders/hsv.inc.glsl b/src/xrt/auxiliary/render/shaders/hsv.inc.glsl similarity index 100% rename from src/xrt/compositor/shaders/hsv.inc.glsl rename to src/xrt/auxiliary/render/shaders/hsv.inc.glsl diff --git a/src/xrt/compositor/shaders/layer.comp b/src/xrt/auxiliary/render/shaders/layer.comp similarity index 100% rename from src/xrt/compositor/shaders/layer.comp rename to src/xrt/auxiliary/render/shaders/layer.comp diff --git a/src/xrt/compositor/shaders/layer_cylinder.frag b/src/xrt/auxiliary/render/shaders/layer_cylinder.frag similarity index 100% rename from src/xrt/compositor/shaders/layer_cylinder.frag rename to src/xrt/auxiliary/render/shaders/layer_cylinder.frag diff --git a/src/xrt/compositor/shaders/layer_cylinder.vert b/src/xrt/auxiliary/render/shaders/layer_cylinder.vert similarity index 100% rename from src/xrt/compositor/shaders/layer_cylinder.vert rename to src/xrt/auxiliary/render/shaders/layer_cylinder.vert diff --git a/src/xrt/compositor/shaders/layer_defines.inc.glsl b/src/xrt/auxiliary/render/shaders/layer_defines.inc.glsl similarity index 100% rename from src/xrt/compositor/shaders/layer_defines.inc.glsl rename to src/xrt/auxiliary/render/shaders/layer_defines.inc.glsl diff --git a/src/xrt/compositor/shaders/layer_equirect2.frag b/src/xrt/auxiliary/render/shaders/layer_equirect2.frag similarity index 100% rename from src/xrt/compositor/shaders/layer_equirect2.frag rename to src/xrt/auxiliary/render/shaders/layer_equirect2.frag diff --git a/src/xrt/compositor/shaders/layer_equirect2.vert b/src/xrt/auxiliary/render/shaders/layer_equirect2.vert similarity index 100% rename from src/xrt/compositor/shaders/layer_equirect2.vert rename to src/xrt/auxiliary/render/shaders/layer_equirect2.vert diff --git a/src/xrt/compositor/shaders/layer_projection.frag b/src/xrt/auxiliary/render/shaders/layer_projection.frag similarity index 100% rename from src/xrt/compositor/shaders/layer_projection.frag rename to src/xrt/auxiliary/render/shaders/layer_projection.frag diff --git a/src/xrt/compositor/shaders/layer_projection.vert b/src/xrt/auxiliary/render/shaders/layer_projection.vert similarity index 100% rename from src/xrt/compositor/shaders/layer_projection.vert rename to src/xrt/auxiliary/render/shaders/layer_projection.vert diff --git a/src/xrt/compositor/shaders/layer_quad.frag b/src/xrt/auxiliary/render/shaders/layer_quad.frag similarity index 100% rename from src/xrt/compositor/shaders/layer_quad.frag rename to src/xrt/auxiliary/render/shaders/layer_quad.frag diff --git a/src/xrt/compositor/shaders/layer_quad.vert b/src/xrt/auxiliary/render/shaders/layer_quad.vert similarity index 100% rename from src/xrt/compositor/shaders/layer_quad.vert rename to src/xrt/auxiliary/render/shaders/layer_quad.vert diff --git a/src/xrt/compositor/shaders/mesh.frag b/src/xrt/auxiliary/render/shaders/mesh.frag similarity index 100% rename from src/xrt/compositor/shaders/mesh.frag rename to src/xrt/auxiliary/render/shaders/mesh.frag diff --git a/src/xrt/compositor/shaders/mesh.vert b/src/xrt/auxiliary/render/shaders/mesh.vert similarity index 100% rename from src/xrt/compositor/shaders/mesh.vert rename to src/xrt/auxiliary/render/shaders/mesh.vert diff --git a/src/xrt/compositor/shaders/render_shaders.c b/src/xrt/auxiliary/render/shaders/render_shaders.c similarity index 99% rename from src/xrt/compositor/shaders/render_shaders.c rename to src/xrt/auxiliary/render/shaders/render_shaders.c index 5d4539ab1..4fbf38537 100644 --- a/src/xrt/compositor/shaders/render_shaders.c +++ b/src/xrt/auxiliary/render/shaders/render_shaders.c @@ -6,7 +6,7 @@ * @brief Shader loading code. * @author Lubosz Sarnecki * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #include "vk/vk_mini_helpers.h" diff --git a/src/xrt/compositor/shaders/render_shaders_interface.h b/src/xrt/auxiliary/render/shaders/render_shaders_interface.h similarity index 98% rename from src/xrt/compositor/shaders/render_shaders_interface.h rename to src/xrt/auxiliary/render/shaders/render_shaders_interface.h index dad8a3584..3b18f97aa 100644 --- a/src/xrt/compositor/shaders/render_shaders_interface.h +++ b/src/xrt/auxiliary/render/shaders/render_shaders_interface.h @@ -6,7 +6,7 @@ * @brief Shader loading interface. * @author Lubosz Sarnecki * @author Jakob Bornecrantz - * @ingroup comp_render + * @ingroup aux_render */ #pragma once diff --git a/src/xrt/compositor/shaders/srgb.inc.glsl b/src/xrt/auxiliary/render/shaders/srgb.inc.glsl similarity index 100% rename from src/xrt/compositor/shaders/srgb.inc.glsl rename to src/xrt/auxiliary/render/shaders/srgb.inc.glsl diff --git a/src/xrt/compositor/CMakeLists.txt b/src/xrt/compositor/CMakeLists.txt index 66de0f98c..30cff5bca 100644 --- a/src/xrt/compositor/CMakeLists.txt +++ b/src/xrt/compositor/CMakeLists.txt @@ -14,21 +14,11 @@ target_link_libraries(comp_includes INTERFACE xrt-interfaces) # Sub directories (order matters for some of them) # -# Shaders library -if(XRT_MODULE_COMPOSITOR_SHADERS) - add_subdirectory(shaders) -endif() - # Client library if(XRT_MODULE_COMPOSITOR_CLIENT) add_subdirectory(client) endif() -# Render library -if(XRT_MODULE_COMPOSITOR_RENDER) - add_subdirectory(render) -endif() - # Util library if(XRT_MODULE_COMPOSITOR_UTIL) add_subdirectory(util) diff --git a/src/xrt/compositor/main/CMakeLists.txt b/src/xrt/compositor/main/CMakeLists.txt index 4d4a0626a..50225e945 100644 --- a/src/xrt/compositor/main/CMakeLists.txt +++ b/src/xrt/compositor/main/CMakeLists.txt @@ -32,7 +32,7 @@ target_link_libraries( aux_os aux_vk comp_util - comp_render + aux_render ) if(XRT_HAVE_XCB) diff --git a/src/xrt/compositor/null/null_compositor.h b/src/xrt/compositor/null/null_compositor.h index d8fa9bedf..b4c592b67 100644 --- a/src/xrt/compositor/null/null_compositor.h +++ b/src/xrt/compositor/null/null_compositor.h @@ -44,7 +44,7 @@ struct u_pacing_compositor; * renamed, and with most implementations removed. Compare with similarly-named * files there to see what was removed, and what helper functionality has been * factored out and may be reusable. For example, you may be able to use @ref - * comp_renderer, @ref comp_resources, @ref comp_shaders, and @ref comp_target, + * comp_renderer, @ref comp_resources, @ref aux_shaders, and @ref comp_target, * among others. */ diff --git a/src/xrt/compositor/util/CMakeLists.txt b/src/xrt/compositor/util/CMakeLists.txt index bb737d9ee..571dc7c34 100644 --- a/src/xrt/compositor/util/CMakeLists.txt +++ b/src/xrt/compositor/util/CMakeLists.txt @@ -34,5 +34,10 @@ add_library( target_link_libraries( comp_util PUBLIC xrt-interfaces comp_includes - PRIVATE aux_util aux_os aux_vk comp_render + PRIVATE + aux_util + aux_os + aux_vk + aux_render + aux_shaders ) diff --git a/src/xrt/compositor/util/comp_render_cs.c b/src/xrt/compositor/util/comp_render_cs.c index ff7313f6f..2c43df8c4 100644 --- a/src/xrt/compositor/util/comp_render_cs.c +++ b/src/xrt/compositor/util/comp_render_cs.c @@ -26,7 +26,7 @@ #include "render/render_interface.h" -#include "shaders/layer_defines.inc.glsl" +#include "layer_defines.inc.glsl" #include "util/comp_render.h" #include "util/comp_render_helpers.h" diff --git a/src/xrt/include/xrt/xrt_config_build.h.cmake_in b/src/xrt/include/xrt/xrt_config_build.h.cmake_in index c5d8dc317..21459133f 100644 --- a/src/xrt/include/xrt/xrt_config_build.h.cmake_in +++ b/src/xrt/include/xrt/xrt_config_build.h.cmake_in @@ -13,6 +13,8 @@ /* keep sorted */ +#cmakedefine XRT_MODULE_AUX_RENDER +#cmakedefine XRT_MODULE_AUX_SHADERS #cmakedefine XRT_MODULE_AUX_VIVE #cmakedefine XRT_MODULE_COMPOSITOR #cmakedefine XRT_MODULE_COMPOSITOR_CLIENT @@ -20,8 +22,6 @@ #cmakedefine XRT_MODULE_COMPOSITOR_MOCK #cmakedefine XRT_MODULE_COMPOSITOR_MULTI #cmakedefine XRT_MODULE_COMPOSITOR_NULL -#cmakedefine XRT_MODULE_COMPOSITOR_RENDER -#cmakedefine XRT_MODULE_COMPOSITOR_SHADERS #cmakedefine XRT_MODULE_COMPOSITOR_UTIL #cmakedefine XRT_MODULE_IPC #cmakedefine XRT_MODULE_MERCURY_HANDTRACKING diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0d0789d5e..63eaa0cc4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -97,7 +97,7 @@ if(XRT_HAVE_VULKAN) target_link_libraries( tests_comp_client_vulkan PRIVATE comp_client comp_mock comp_util aux_vk ) - target_link_libraries(tests_uv_to_tangent PRIVATE comp_render) + target_link_libraries(tests_uv_to_tangent PRIVATE aux_render) endif() if(XRT_FEATURE_OPENXR)