Skip to content
Snippets Groups Projects
Verified Commit e1bc88e9 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Update submodules and opt for mold as linker

parent e5b62c94
No related branches found
No related tags found
No related merge requests found
......@@ -33,8 +33,13 @@ if (CMAKE_BUILD_TYPE)
set(vkcv_build_${_vkcv_build_type} 1)
endif()
if (EXISTS "/usr/bin/mold")
set(CMAKE_LINKER "/usr/bin/mold")
endif()
message(STATUS "Language: [ C++ " ${CMAKE_CXX_STANDARD} " ]")
message(STATUS "Compiler: [ " ${CMAKE_CXX_COMPILER_ID} " " ${CMAKE_CXX_COMPILER_VERSION} " ]")
message(STATUS "Linker: [ " ${CMAKE_LINKER} " ]")
if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0"))
message(FATAL_ERROR "Upgrade your compiler! GCC 9.0+ is required!")
......
......@@ -3,26 +3,56 @@
#include <vulkan/vulkan.hpp>
namespace vkcv {
enum class ShaderStage : VkShaderStageFlags {
VERTEX = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eVertex),
TESS_CONTROL = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationControl),
TESS_EVAL = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationEvaluation),
GEOMETRY = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eGeometry),
FRAGMENT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eFragment),
COMPUTE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCompute),
TASK = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTaskNV),
MESH = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMeshNV),
RAY_GEN = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eRaygenKHR), // RTX
RAY_ANY_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eAnyHitKHR), // RTX
RAY_CLOSEST_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eClosestHitKHR), // RTX
RAY_MISS = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMissKHR), // RTX
RAY_INTERSECTION = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR), // RTX
RAY_CALLABLE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR) // RTX
VERTEX = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eVertex),
TESS_CONTROL = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationControl),
TESS_EVAL = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationEvaluation),
GEOMETRY = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eGeometry),
FRAGMENT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eFragment),
COMPUTE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCompute),
TASK = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTaskNV),
MESH = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMeshNV),
RAY_GEN = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eRaygenKHR),
RAY_ANY_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eAnyHitKHR),
RAY_CLOSEST_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eClosestHitKHR),
RAY_MISS = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMissKHR),
RAY_INTERSECTION = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR),
RAY_CALLABLE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR)
};
using ShaderStages = vk::Flags<ShaderStage>;
}
namespace vk {
template<>
struct [[maybe_unused]] FlagTraits<vkcv::ShaderStage> {
enum : VkFlags {
allFlags [[maybe_unused]] = (
VkFlags( vkcv::ShaderStage::VERTEX ) |
VkFlags( vkcv::ShaderStage::TESS_CONTROL ) |
VkFlags( vkcv::ShaderStage::TESS_EVAL ) |
VkFlags( vkcv::ShaderStage::GEOMETRY ) |
VkFlags( vkcv::ShaderStage::FRAGMENT ) |
VkFlags( vkcv::ShaderStage::COMPUTE ) |
VkFlags( vkcv::ShaderStage::TASK ) |
VkFlags( vkcv::ShaderStage::MESH ) |
VkFlags( vkcv::ShaderStage::RAY_GEN ) |
VkFlags( vkcv::ShaderStage::RAY_ANY_HIT ) |
VkFlags( vkcv::ShaderStage::RAY_CLOSEST_HIT ) |
VkFlags( vkcv::ShaderStage::RAY_MISS ) |
VkFlags( vkcv::ShaderStage::RAY_INTERSECTION ) |
VkFlags( vkcv::ShaderStage::RAY_CALLABLE )
)
};
};
}
namespace vkcv {
constexpr vk::ShaderStageFlags getShaderStageFlags(ShaderStages shaderStages) noexcept {
return vk::ShaderStageFlags(static_cast<VkShaderStageFlags>(shaderStages));
}
......
Subproject commit ff61890722a91e97c44940494be5b6eed0d5ff5b
Subproject commit 6a67891418a3f08be63f92726e049dc788e46f5b
Subproject commit 3a61240a5354ce56c222969a69825aabb6ba0a21
Subproject commit c6c3c665b6a29ae546bdec60606a3ef0757ea108
Subproject commit 0e9ec7788b4985a0df698080258e4091d18dcc3b
Subproject commit 4cb36872a5fe448c205d0b46f0e8c8b57530cfe0
Subproject commit f4f18f2017a049a23748c9c9aad42ba2de20bfd5
Subproject commit 7766c237ea81c0bb3759e78e5c0f22854843eef8
Subproject commit 0972f7ff0e651f09a306dba791cc42024b8642c1
Subproject commit 4f8fba14066156b73f1189a2b8bd568bde5284c5
Subproject commit c9064e317699d2e495f36ba4f9ac037e88ee371a
Subproject commit af1a5bc352164740c1cc1354942b1c6b72eacb8a
Subproject commit 66062497b104ca7c297321bd0e970869b1e6ece5
Subproject commit 6ad79aae3eb5bf809c30bf1168171e9e55857e45
Subproject commit d5828cd988db525f27128edeadb1a689cd2d7461
Subproject commit eda7792b151d138e15df951578253b821ceed5a3
Subproject commit fe15158676657bf965e41c32e15ae5db7ea2ab6a
Subproject commit 48fd6c82b3fefb38e59dd799d8b12fddddf8e63c
Subproject commit bcffc8171efb80e265991301a49670ed755088dd
Subproject commit a21ffb8f6c13233ba336352bdff293894c706575
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment