From 92f556ff57f1a55d8f649090e343c455a6c76816 Mon Sep 17 00:00:00 2001 From: Alejandro Saucedo Date: Sun, 21 Feb 2021 09:28:05 +0000 Subject: [PATCH] Added flag to be able to disable shader utilities --- CMakeLists.txt | 14 +++++--- docs/overview/build-system.rst | 2 ++ python/src/main.cpp | 3 +- single_include/kompute/Kompute.hpp | 2 ++ src/CMakeLists.txt | 52 ++++++++++++++++-------------- src/Shader.cpp | 2 ++ src/include/kompute/Shader.hpp | 3 ++ 7 files changed, 48 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d4b04c527..4f35414a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ option(KOMPUTE_OPT_ENABLE_SPDLOG "Extra compile flags for Kompute, see docs for option(KOMPUTE_OPT_REPO_SUBMODULE_BUILD, "Use the submodule repos instead of external package manager" 0) option(KOMPUTE_OPT_ANDOID_BUILD "Enable android compilation flags required" 0) option(KOMPUTE_OPT_DISABLE_VK_DEBUG_LAYERS "Explicitly disable debug layers even on debug" 0) +option(KOMPUTE_OPT_DISABLE_SHADER_UTILS "Remove shader util code and dependencies including glslang" 0) # Build flags set(KOMPUTE_EXTRA_CXX_FLAGS "" CACHE STRING "Extra compile flags for Kompute, see docs for full list") @@ -42,10 +43,15 @@ if(KOMPUTE_OPT_DISABLE_VK_DEBUG_LAYERS) set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DKOMPUTE_DISABLE_VK_DEBUG_LAYERS=1") endif() -if(KOMPUTE_OPT_INSTALL) - # Enable install parameters for glslang (overrides parameters passed) - set(ENABLE_GLSLANG_INSTALL ON CACHE BOOL "Enables install of glslang" FORCE) - set(BUILD_SHARED_LIBS ON CACHE BOOL "Enables build of shared libraries" FORCE) +if(NOT KOMPUTE_OPT_DISABLE_SHADER_UTILS) + if(KOMPUTE_OPT_INSTALL) + # Enable install parameters for glslang (overrides parameters passed) + # When install is enabled the glslang libraries become shared + set(ENABLE_GLSLANG_INSTALL ON CACHE BOOL "Enables install of glslang" FORCE) + set(BUILD_SHARED_LIBS ON CACHE BOOL "Enables build of shared libraries" FORCE) + endif() +else() + set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DKOMPUTE_DISABLE_SHADER_UTILS=1") endif() set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG=1 ${KOMPUTE_EXTRA_CXX_FLAGS} -DUSE_DEBUG_EXTENTIONS") diff --git a/docs/overview/build-system.rst b/docs/overview/build-system.rst index 6f5a602cf..620711cc4 100644 --- a/docs/overview/build-system.rst +++ b/docs/overview/build-system.rst @@ -65,6 +65,8 @@ Compile Flags - Enable debug build including debug flags (enabled by cmake debug build) * - -DKOMPUTE_DISABLE_VK_DEBUG_LAYERS - Disable the debug Vulkan layers, mainly used for android builds + * - -DKOMPUTE_DISABLE_SHADER_UTILS + - Disable the shader utils and skip adding glslang as dependency Dependencies diff --git a/python/src/main.cpp b/python/src/main.cpp index 978a35943..ab7d64e41 100644 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -30,7 +30,7 @@ PYBIND11_MODULE(kp, m) { .value("storage", kp::Tensor::TensorTypes::eStorage, "Tensor with host visible gpu memory.") .export_values(); - +#if !defined(KOMPUTE_DISABLE_SHADER_UTILS) || !KOMPUTE_DISABLE_SHADER_UTILS py::class_(m, "Shader", "Shader class") .def_static("compile_source", []( const std::string& source, @@ -51,6 +51,7 @@ PYBIND11_MODULE(kp, m) { }, "Compiles sources provided with file names and returns the value in bytes", py::arg("sources"), py::arg("files") = std::vector(), py::arg("entryPoint") = "main", py::arg("definitions") = std::vector>() ); +#endif // KOMPUTE_DISABLE_SHADER_UTILS py::class_>(m, "Tensor", DOC(kp, Tensor)) .def(py::init( diff --git a/single_include/kompute/Kompute.hpp b/single_include/kompute/Kompute.hpp index 9459d195d..3aaeb0409 100755 --- a/single_include/kompute/Kompute.hpp +++ b/single_include/kompute/Kompute.hpp @@ -107,6 +107,7 @@ extern py::object kp_debug, kp_info, kp_warning, kp_error; #endif // KOMPUTE_SPDLOG_ENABLED #endif // KOMPUTE_LOG_OVERRIDE +#if !defined(KOMPUTE_DISABLE_SHADER_UTILS) || !KOMPUTE_DISABLE_SHADER_UTILS #include #include @@ -159,6 +160,7 @@ public: }; } +#endif // DKOMPUTE_DISABLE_SHADER_UTILS /* THIS FILE HAS BEEN AUTOMATICALLY GENERATED - DO NOT EDIT diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9a1c10892..b3cbad3a3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -109,35 +109,37 @@ endif() #################### GLSLANG ####################### ##################################################### -if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD) - add_subdirectory(${PROJECT_SOURCE_DIR}/external/glslang - ${CMAKE_CURRENT_BINARY_DIR}/kompute_glslang) +if(NOT KOMPUTE_OPT_DISABLE_SHADER_UTILS) + if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD) + add_subdirectory(${PROJECT_SOURCE_DIR}/external/glslang + ${CMAKE_CURRENT_BINARY_DIR}/kompute_glslang) - target_include_directories( - kompute PRIVATE - ${PROJECT_SOURCE_DIR}/external/glslang) + target_include_directories( + kompute PRIVATE + ${PROJECT_SOURCE_DIR}/external/glslang) - target_link_libraries(kompute - # Not including hlsl support - # HLSL - # glslang includes OGLCompiler, OSDependent, MachineIndependent - glslang - SPIRV - glslang-default-resource-limits) -else() - find_package(glslang CONFIG REQUIRED) + target_link_libraries(kompute + # Not including hlsl support + # HLSL + # glslang includes OGLCompiler, OSDependent, MachineIndependent + glslang + SPIRV + glslang-default-resource-limits) + else() + find_package(glslang CONFIG REQUIRED) - target_include_directories( - kompute PRIVATE - ${GLSLANG_GENERATED_INCLUDEDIR}) + target_include_directories( + kompute PRIVATE + ${GLSLANG_GENERATED_INCLUDEDIR}) - target_link_libraries(kompute - # Not including hlsl support - # glslang::HLSL - # Adding explicit dependencies to match above - glslang - SPIRV - glslang-default-resource-limits) + target_link_libraries(kompute + # Not including hlsl support + # glslang::HLSL + # Adding explicit dependencies to match above + glslang + SPIRV + glslang-default-resource-limits) + endif() endif() diff --git a/src/Shader.cpp b/src/Shader.cpp index 4c2268d93..a58e0a929 100644 --- a/src/Shader.cpp +++ b/src/Shader.cpp @@ -1,4 +1,5 @@ +#if !defined(KOMPUTE_DISABLE_SHADER_UTILS) || !KOMPUTE_DISABLE_SHADER_UTILS #include "kompute/Shader.hpp" namespace kp { @@ -92,3 +93,4 @@ Shader::compile_source(const std::string& source, } } +#endif // DKOMPUTE_DISABLE_SHADER_UTILS diff --git a/src/include/kompute/Shader.hpp b/src/include/kompute/Shader.hpp index 701f7fc16..f486366d5 100644 --- a/src/include/kompute/Shader.hpp +++ b/src/include/kompute/Shader.hpp @@ -1,5 +1,6 @@ #pragma once +#if !defined(KOMPUTE_DISABLE_SHADER_UTILS) || !KOMPUTE_DISABLE_SHADER_UTILS #include #include @@ -54,3 +55,5 @@ public: }; } +#endif // DKOMPUTE_DISABLE_SHADER_UTILS +