From 3abbab4ad559df77f18d2b2f520f584773c2a7fa Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Thu, 11 Jan 2024 02:50:16 +0100 Subject: [PATCH] Initial commit to add submodules and cmake configs Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- .gitmodules | 9 +++++ modules/shader_compiler/CMakeLists.txt | 10 ++++++ modules/shader_compiler/config/Murmur3.cmake | 9 +++++ .../config/SPIRV-Headers.cmake | 9 +++++ modules/shader_compiler/config/Shady.cmake | 12 +++++++ .../include/vkcv/shader/ShadyCompiler.hpp | 32 +++++++++++++++++ modules/shader_compiler/lib/SPIRV-Headers | 1 + modules/shader_compiler/lib/murmur3 | 1 + modules/shader_compiler/lib/shady | 1 + .../src/vkcv/shader/ShadyCompiler.cpp | 34 +++++++++++++++++++ 10 files changed, 118 insertions(+) create mode 100644 modules/shader_compiler/config/Murmur3.cmake create mode 100644 modules/shader_compiler/config/SPIRV-Headers.cmake create mode 100644 modules/shader_compiler/config/Shady.cmake create mode 100644 modules/shader_compiler/include/vkcv/shader/ShadyCompiler.hpp create mode 160000 modules/shader_compiler/lib/SPIRV-Headers create mode 160000 modules/shader_compiler/lib/murmur3 create mode 160000 modules/shader_compiler/lib/shady create mode 100644 modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp diff --git a/.gitmodules b/.gitmodules index 668c9087..10aee941 100644 --- a/.gitmodules +++ b/.gitmodules @@ -70,3 +70,12 @@ path = modules/asset_loader/lib/wuffs-mirror-release-c url = https://github.com/google/wuffs-mirror-release-c.git branch = main +[submodule "modules/shader_compiler/lib/shady"] + path = modules/shader_compiler/lib/shady + url = https://github.com/TheJackiMonster/shady.git +[submodule "modules/shader_compiler/lib/SPIRV-Headers"] + path = modules/shader_compiler/lib/SPIRV-Headers + url = https://github.com/KhronosGroup/SPIRV-Headers.git +[submodule "modules/shader_compiler/lib/murmur3"] + path = modules/shader_compiler/lib/murmur3 + url = https://github.com/PeterScott/murmur3.git diff --git a/modules/shader_compiler/CMakeLists.txt b/modules/shader_compiler/CMakeLists.txt index bd85c7d8..35b31192 100644 --- a/modules/shader_compiler/CMakeLists.txt +++ b/modules/shader_compiler/CMakeLists.txt @@ -21,6 +21,9 @@ set(vkcv_shader_compiler_sources ${vkcv_shader_compiler_include}/vkcv/shader/HLSLCompiler.hpp ${vkcv_shader_compiler_source}/vkcv/shader/HLSLCompiler.cpp + + ${vkcv_shader_compiler_include}/vkcv/shader/ShadyCompiler.hpp + ${vkcv_shader_compiler_source}/vkcv/shader/ShadyCompiler.cpp ) filter_headers(vkcv_shader_compiler_sources ${vkcv_shader_compiler_include} vkcv_shader_compiler_headers) @@ -33,9 +36,16 @@ set_target_properties(vkcv_shader_compiler PROPERTIES PUBLIC_HEADER "${vkcv_shad set(vkcv_shader_compiler_lib lib) set(vkcv_shader_compiler_lib_path ${PROJECT_SOURCE_DIR}/${vkcv_shader_compiler_lib}) +# Load SPIRV-Headers +include(config/SPIRV-Headers.cmake) + # Check and load GLSLANG include(config/GLSLANG.cmake) +# Check and load Shady (with murmur3) +include(config/Murmur3.cmake) +include(config/Shady.cmake) + # link the required libraries to the module target_link_libraries(vkcv_shader_compiler ${vkcv_shader_compiler_libraries} vkcv) diff --git a/modules/shader_compiler/config/Murmur3.cmake b/modules/shader_compiler/config/Murmur3.cmake new file mode 100644 index 00000000..d220b52c --- /dev/null +++ b/modules/shader_compiler/config/Murmur3.cmake @@ -0,0 +1,9 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/murmur3" murmur3_status) + +if (${murmur3_status}) + add_library(murmur3 STATIC ${vkcv_shader_compiler_lib}/murmur3/murmur3.c) + + target_include_directories(murmur3 INTERFACE ${vkcv_shader_compiler_lib}/murmur3) + set_target_properties(murmur3 PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif () diff --git a/modules/shader_compiler/config/SPIRV-Headers.cmake b/modules/shader_compiler/config/SPIRV-Headers.cmake new file mode 100644 index 00000000..b5f47dbe --- /dev/null +++ b/modules/shader_compiler/config/SPIRV-Headers.cmake @@ -0,0 +1,9 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/SPIRV-Headers" spriv_headers_status) + +if (${spriv_headers_status}) + add_subdirectory(${vkcv_shader_compiler_lib}/SPIRV-Headers) + + list(APPEND vkcv_shader_compiler_libraries SPIRV-Headers) + list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}/SPIRV-Headers/include) +endif () diff --git a/modules/shader_compiler/config/Shady.cmake b/modules/shader_compiler/config/Shady.cmake new file mode 100644 index 00000000..92dd334d --- /dev/null +++ b/modules/shader_compiler/config/Shady.cmake @@ -0,0 +1,12 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/shady" shady_status) + +if (${shady_status}) + set(EXTERNAL_SPIRV_HEADERS ON CACHE INTERNAL "") + set(EXTERNAL_MURMUR3 ON CACHE INTERNAL "") + + add_subdirectory(${vkcv_shader_compiler_lib}/shady) + + list(APPEND vkcv_shader_compiler_libraries shady) + list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}/shady/include) +endif () diff --git a/modules/shader_compiler/include/vkcv/shader/ShadyCompiler.hpp b/modules/shader_compiler/include/vkcv/shader/ShadyCompiler.hpp new file mode 100644 index 00000000..eee66a26 --- /dev/null +++ b/modules/shader_compiler/include/vkcv/shader/ShadyCompiler.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include <filesystem> + +#include <vkcv/ShaderStage.hpp> +#include "Compiler.hpp" + +namespace vkcv::shader { + + class ShadyCompiler : public Compiler { + public: + ShadyCompiler(); + + ShadyCompiler(const ShadyCompiler& other); + + ShadyCompiler(ShadyCompiler&& other) = default; + + ~ShadyCompiler(); + + ShadyCompiler& operator=(const ShadyCompiler& other); + + ShadyCompiler& operator=(ShadyCompiler&& other) = default; + + void compile(ShaderStage shaderStage, + const std::filesystem::path& shaderPath, + const ShaderCompiledFunction& compiled, + const std::filesystem::path& includePath = "", + bool update = false) override; + + } + +} diff --git a/modules/shader_compiler/lib/SPIRV-Headers b/modules/shader_compiler/lib/SPIRV-Headers new file mode 160000 index 00000000..bdd1b2ab --- /dev/null +++ b/modules/shader_compiler/lib/SPIRV-Headers @@ -0,0 +1 @@ +Subproject commit bdd1b2ab1f03e616047bbcf8971157dccd50c792 diff --git a/modules/shader_compiler/lib/murmur3 b/modules/shader_compiler/lib/murmur3 new file mode 160000 index 00000000..dae94be0 --- /dev/null +++ b/modules/shader_compiler/lib/murmur3 @@ -0,0 +1 @@ +Subproject commit dae94be0c0f54a399d23ea6cbe54bca5a4e93ce4 diff --git a/modules/shader_compiler/lib/shady b/modules/shader_compiler/lib/shady new file mode 160000 index 00000000..6ab5f5fc --- /dev/null +++ b/modules/shader_compiler/lib/shady @@ -0,0 +1 @@ +Subproject commit 6ab5f5fc520de70e6f19d1e7312a70aea71020fd diff --git a/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp new file mode 100644 index 00000000..e582bb29 --- /dev/null +++ b/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp @@ -0,0 +1,34 @@ + +#include "vkcv/shader/ShadyCompiler.hpp" + +#include <vkcv/File.hpp> +#include <vkcv/Logger.hpp> + +namespace vkcv::shader { + + ShadyCompiler::ShadyCompiler() : Compiler() { + // TODO + } + + ShadyCompiler::ShadyCompiler(const ShadyCompiler &other) : Compiler(other) { + // TODO + } + + ShadyCompiler::~ShadyCompiler() { + // TODO + } + + ShadyCompiler &ShadyCompiler::operator=(const ShadyCompiler &other) { + // TODO + return *this; + } + + void ShadyCompiler::compile(ShaderStage shaderStage, + const std::filesystem::path &shaderPath, + const ShaderCompiledFunction &compiled, + const std::filesystem::path &includePath, + bool update) { + // TODO + } + +} -- GitLab