From e800d8d38a2fb9659375fcc2571f77e192b282cf Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Sat, 13 Jan 2024 06:06:27 +0100 Subject: [PATCH] Fix linking errors and double free issues Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- modules/shader_compiler/config/Shady.cmake | 7 ++++++- modules/shader_compiler/lib/shady | 2 +- modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp | 9 ++++----- .../shader_compiler/src/vkcv/shader/ShadyCompiler.cpp | 2 -- modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp | 9 ++++----- projects/first_triangle/src/main.cpp | 3 ++- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/modules/shader_compiler/config/Shady.cmake b/modules/shader_compiler/config/Shady.cmake index 92dd334d..88e1f7b3 100644 --- a/modules/shader_compiler/config/Shady.cmake +++ b/modules/shader_compiler/config/Shady.cmake @@ -7,6 +7,11 @@ if (${shady_status}) add_subdirectory(${vkcv_shader_compiler_lib}/shady) - list(APPEND vkcv_shader_compiler_libraries shady) + if (vkcv_build_attribute EQUAL "SHARED") + list(APPEND vkcv_shader_compiler_libraries shady runtime) + else () + list(APPEND vkcv_shader_compiler_libraries common driver) + endif () + list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}/shady/include) endif () diff --git a/modules/shader_compiler/lib/shady b/modules/shader_compiler/lib/shady index 2e72e345..0a92cf7f 160000 --- a/modules/shader_compiler/lib/shady +++ b/modules/shader_compiler/lib/shady @@ -1 +1 @@ -Subproject commit 2e72e345035166d7fd2a0b94610cfc8fd603155b +Subproject commit 0a92cf7ff4081d21db0724a8e66ab868b878df7d diff --git a/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp index 04435ae6..c53904d4 100644 --- a/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp +++ b/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp @@ -4,7 +4,9 @@ #include <vkcv/File.hpp> #include <vkcv/Logger.hpp> -#include <shady/driver.h> +extern "C" { + #include <shady/driver.h> +} namespace vkcv::shader { @@ -87,10 +89,7 @@ namespace vkcv::shader { return false; } - bool result = shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); - - destroy_module(module); - return result; + return shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); } bool LLVMCompiler::compileSource(ShaderStage shaderStage, diff --git a/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp index 13319e22..6168fcfa 100644 --- a/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp +++ b/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp @@ -4,8 +4,6 @@ #include <vkcv/File.hpp> #include <vkcv/Logger.hpp> -#include <shady/driver.h> - namespace vkcv::shader { ShadyCompiler::ShadyCompiler() diff --git a/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp index 940ae700..475d867b 100644 --- a/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp +++ b/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp @@ -4,7 +4,9 @@ #include <vkcv/File.hpp> #include <vkcv/Logger.hpp> -#include <shady/driver.h> +extern "C" { + #include <shady/driver.h> +} namespace vkcv::shader { @@ -87,10 +89,7 @@ namespace vkcv::shader { return false; } - bool result = shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); - - destroy_module(module); - return result; + return shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); } bool SlimCompiler::compileSource(ShaderStage shaderStage, diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index aae046da..995c6aa3 100644 --- a/projects/first_triangle/src/main.cpp +++ b/projects/first_triangle/src/main.cpp @@ -2,6 +2,7 @@ #include <vkcv/Core.hpp> #include <vkcv/Pass.hpp> #include <GLFW/glfw3.h> +#include <vkcv/ShaderProgram.hpp> #include <vkcv/camera/CameraManager.hpp> #include <vkcv/shader/GLSLCompiler.hpp> @@ -38,7 +39,7 @@ int main(int argc, const char** argv) { vkcv::shader::GLSLCompiler compiler; compiler.compileProgram(triangleShaderProgram, { - {vkcv::ShaderStage::VERTEX, "shaders/shader.vert"}, + { vkcv::ShaderStage::VERTEX, "shaders/shader.vert" }, { vkcv::ShaderStage::FRAGMENT, "shaders/shader.frag" } }, nullptr); -- GitLab