From a8d661b28c7b0baa1ec9ec28b71bdeaffbe817d2 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Sat, 26 Nov 2022 13:12:10 +0100
Subject: [PATCH] Update Vulkan and VMA headers, fix issue in RTX project and
 adjust shader stage flags

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 include/vkcv/ShaderStage.hpp                  | 63 ++++++++++---------
 lib/Vulkan-Headers                            |  2 +-
 lib/Vulkan-Hpp                                |  2 +-
 lib/VulkanMemoryAllocator                     |  2 +-
 lib/VulkanMemoryAllocator-Hpp                 |  2 +-
 .../rtx_ambient_occlusion/src/RTX/RTX.cpp     |  2 +-
 6 files changed, 38 insertions(+), 35 deletions(-)

diff --git a/include/vkcv/ShaderStage.hpp b/include/vkcv/ShaderStage.hpp
index 2b6ab23c..24d3e554 100644
--- a/include/vkcv/ShaderStage.hpp
+++ b/include/vkcv/ShaderStage.hpp
@@ -14,48 +14,51 @@ namespace vkcv {
 	 * @brief Enum class to specify the stage of a shader.
 	 */
 	enum class ShaderStage : VkShaderStageFlags {
-		VERTEX = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eVertex),
+		VERTEX = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex),
 		TESS_CONTROL =
-			static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationControl),
+			static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::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),
+			static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eTessellationEvaluation),
+		GEOMETRY = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eGeometry),
+		FRAGMENT = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eFragment),
+		COMPUTE = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eCompute),
+		TASK = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eTaskNV),
+		MESH = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eMeshNV),
+		RAY_GEN = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eRaygenKHR),
+		RAY_ANY_HIT = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eAnyHitKHR),
+		RAY_CLOSEST_HIT = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eClosestHitKHR),
+		RAY_MISS = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eMissKHR),
 		RAY_INTERSECTION =
-			static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR),
-		RAY_CALLABLE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR)
+			static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eIntersectionKHR),
+		RAY_CALLABLE = static_cast<VkShaderStageFlags>(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eCallableKHR)
 	};
 
-	using ShaderStages = vk::Flags<ShaderStage>;
+	using ShaderStages = VULKAN_HPP_NAMESPACE::Flags<ShaderStage>;
 
 } // namespace vkcv
 
 /**
  * @cond VULKAN_TYPES
  */
-namespace vk {
+namespace VULKAN_HPP_NAMESPACE {
 
 	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))
-		};
+		static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true;
+		static VULKAN_HPP_CONST_OR_CONSTEXPR Flags<vkcv::ShaderStage> allFlags =
+				vkcv::ShaderStage::VERTEX
+				| vkcv::ShaderStage::TESS_CONTROL
+				| vkcv::ShaderStage::TESS_EVAL
+				| vkcv::ShaderStage::GEOMETRY
+				| vkcv::ShaderStage::FRAGMENT
+				| vkcv::ShaderStage::TASK
+				| vkcv::ShaderStage::MESH
+				| vkcv::ShaderStage::RAY_GEN
+				| vkcv::ShaderStage::RAY_ANY_HIT
+				| vkcv::ShaderStage::RAY_CLOSEST_HIT
+				| vkcv::ShaderStage::RAY_MISS
+				| vkcv::ShaderStage::RAY_INTERSECTION
+				| vkcv::ShaderStage::RAY_CALLABLE;
 	};
 
 } // namespace vk
@@ -65,8 +68,8 @@ namespace vk {
 
 namespace vkcv {
 
-	constexpr vk::ShaderStageFlags getShaderStageFlags(ShaderStages shaderStages) noexcept {
-		return vk::ShaderStageFlags(static_cast<VkShaderStageFlags>(shaderStages));
+	constexpr VULKAN_HPP_NAMESPACE::ShaderStageFlags getShaderStageFlags(ShaderStages shaderStages) noexcept {
+		return VULKAN_HPP_NAMESPACE::ShaderStageFlags(static_cast<VkShaderStageFlags>(shaderStages));
 	}
 
 	constexpr ShaderStages operator|(ShaderStage stage0, ShaderStage stage1) noexcept {
diff --git a/lib/Vulkan-Headers b/lib/Vulkan-Headers
index 8ba8294c..b092b2fc 160000
--- a/lib/Vulkan-Headers
+++ b/lib/Vulkan-Headers
@@ -1 +1 @@
-Subproject commit 8ba8294c86d0e99fcb457bedbd573dd678ccc9b3
+Subproject commit b092b2fccc812453c1d0ec0a829eb8f34f174803
diff --git a/lib/Vulkan-Hpp b/lib/Vulkan-Hpp
index ef609a2f..a577b390 160000
--- a/lib/Vulkan-Hpp
+++ b/lib/Vulkan-Hpp
@@ -1 +1 @@
-Subproject commit ef609a2f77dd1756e672712f264e76b64acdba61
+Subproject commit a577b390e8651e9b1351d7c6839a4f43303c0f34
diff --git a/lib/VulkanMemoryAllocator b/lib/VulkanMemoryAllocator
index c3516924..73d13a83 160000
--- a/lib/VulkanMemoryAllocator
+++ b/lib/VulkanMemoryAllocator
@@ -1 +1 @@
-Subproject commit c351692490513cdb0e5a2c925aaf7ea4a9b672f4
+Subproject commit 73d13a83ede142fa030d84e603a313831fcc424a
diff --git a/lib/VulkanMemoryAllocator-Hpp b/lib/VulkanMemoryAllocator-Hpp
index e00a0b1a..62b1d32e 160000
--- a/lib/VulkanMemoryAllocator-Hpp
+++ b/lib/VulkanMemoryAllocator-Hpp
@@ -1 +1 @@
-Subproject commit e00a0b1ab8bba230e8c701423540ff3828aea2d5
+Subproject commit 62b1d32e96acf36f6da619d3f818d2edc7cbbc7b
diff --git a/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp b/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
index bd5453ab..acefa3cb 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
@@ -280,7 +280,7 @@ namespace vkcv::rtx {
             shaderStages.data(), // const vk::PipelineShaderStageCreateInfo* pStages_ = {}
             (uint32_t) shaderGroups.size(), // uint32_t groupCount_ = {}
             shaderGroups.data(), // const vk::RayTracingShaderGroupCreateInfoKHR* pGroups_ = {}
-            16, // uint32_t maxPipelineRayRecursionDepth_ = {}
+            1, // uint32_t maxPipelineRayRecursionDepth_ = {}
             &rtxPipelineLibraryCreateInfo, // const vk::PipelineLibraryCreateInfoKHR* pLibraryInfo_ = {}
             nullptr, // const vk::RayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface_ = {}
             nullptr, // const vk::PipelineDynamicStateCreateInfo* pDynamicState_ = {}
-- 
GitLab