From d39f50922346ddc415d5b630a089479b068a59d3 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Tue, 28 Sep 2021 18:40:02 +0200
Subject: [PATCH] Fixed warnings, changed requirement to C++20 and fixed events
 with semaphores

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 CMakeLists.txt                                    |  2 +-
 include/vkcv/Buffer.hpp                           |  6 +++---
 include/vkcv/Event.hpp                            | 15 ++++++---------
 modules/asset_loader/CMakeLists.txt               |  2 +-
 modules/camera/CMakeLists.txt                     |  2 +-
 modules/gui/CMakeLists.txt                        |  2 +-
 modules/material/CMakeLists.txt                   |  2 +-
 modules/meshlet/CMakeLists.txt                    |  2 +-
 modules/scene/CMakeLists.txt                      |  2 +-
 modules/shader_compiler/CMakeLists.txt            |  2 +-
 modules/testing/CMakeLists.txt                    |  2 +-
 modules/upscaling/CMakeLists.txt                  |  2 +-
 projects/bindless_textures/CMakeLists.txt         |  2 +-
 projects/bindless_textures/src/main.cpp           |  2 +-
 projects/first_mesh/CMakeLists.txt                |  2 +-
 projects/first_scene/CMakeLists.txt               |  2 +-
 projects/first_triangle/CMakeLists.txt            |  2 +-
 projects/indirect_dispatch/CMakeLists.txt         |  2 +-
 projects/indirect_draw/CMakeLists.txt             |  2 +-
 projects/mesh_shader/CMakeLists.txt               |  2 +-
 projects/particle_simulation/CMakeLists.txt       |  2 +-
 projects/path_tracer/CMakeLists.txt               |  2 +-
 projects/rtx_ambient_occlusion/CMakeLists.txt     |  2 +-
 .../rtx_ambient_occlusion/src/RTX/ASManager.cpp   |  2 +-
 .../rtx_ambient_occlusion/src/RTX/ASManager.hpp   |  2 +-
 projects/rtx_ambient_occlusion/src/RTX/RTX.cpp    |  3 +--
 projects/saf_r/CMakeLists.txt                     |  2 +-
 projects/saf_r/src/main.cpp                       |  3 ---
 projects/sph/CMakeLists.txt                       |  2 +-
 projects/sph/src/main.cpp                         |  1 -
 projects/voxelization/CMakeLists.txt              |  2 +-
 src/vkcv/DescriptorManager.cpp                    |  4 +---
 src/vkcv/Window.cpp                               |  8 +-------
 33 files changed, 38 insertions(+), 54 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5f82b94a..384d2d96 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv)
 
 # settings c++ standard for the framework
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # checking build type and setting up a variable
diff --git a/include/vkcv/Buffer.hpp b/include/vkcv/Buffer.hpp
index f5cd183d..99209306 100644
--- a/include/vkcv/Buffer.hpp
+++ b/include/vkcv/Buffer.hpp
@@ -16,7 +16,7 @@ namespace vkcv {
 		friend class Core;
 	public:
 		// explicit destruction of default constructor
-		Buffer<T>() = delete;
+		Buffer() = delete;
 		
 		[[nodiscard]]
 		const BufferHandle& getHandle() const {
@@ -39,7 +39,7 @@ namespace vkcv {
 		}
 
         [[nodiscard]]
-        const vk::Buffer getVulkanHandle() const {
+		vk::Buffer getVulkanHandle() const {
             return m_manager->getBuffer(m_handle);
         }
 		
@@ -67,7 +67,7 @@ namespace vkcv {
 		const size_t m_count;
 		const BufferMemoryType m_memoryType;
 		
-		Buffer<T>(BufferManager* manager, BufferHandle handle, BufferType type, size_t count, BufferMemoryType memoryType) :
+		Buffer(BufferManager* manager, BufferHandle handle, BufferType type, size_t count, BufferMemoryType memoryType) :
 				m_manager(manager),
 				m_handle(handle),
 				m_type(type),
diff --git a/include/vkcv/Event.hpp b/include/vkcv/Event.hpp
index 604e3a44..a17de572 100644
--- a/include/vkcv/Event.hpp
+++ b/include/vkcv/Event.hpp
@@ -3,7 +3,7 @@
 #include <functional>
 
 #ifndef __MINGW32__
-#include <mutex>
+#include <semaphore>
 #endif
 
 #include <vector>
@@ -34,7 +34,7 @@ namespace vkcv {
         uint32_t m_id_counter;
 	
 #ifndef __MINGW32__
-		std::mutex m_mutex;
+		std::binary_semaphore m_semaphore;
 #endif
 
     public:
@@ -84,7 +84,7 @@ namespace vkcv {
          */
         void lock() {
 #ifndef __MINGW32__
-			m_mutex.lock();
+			m_semaphore.acquire();
 #endif
         }
 	
@@ -93,15 +93,12 @@ namespace vkcv {
 		*/
         void unlock() {
 #ifndef __MINGW32__
-			m_mutex.unlock();
+			m_semaphore.release();
 #endif
         }
 
-        explicit event(bool locked = false) {
-        	if (locked) {
-        		lock();
-        	}
-        }
+        explicit event(bool locked = false) :
+		m_semaphore(locked? 1 : 0) {}
 
         event(const event &other) = delete;
 
diff --git a/modules/asset_loader/CMakeLists.txt b/modules/asset_loader/CMakeLists.txt
index 870c1627..151ae350 100644
--- a/modules/asset_loader/CMakeLists.txt
+++ b/modules/asset_loader/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_asset_loader)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_asset_loader_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/camera/CMakeLists.txt b/modules/camera/CMakeLists.txt
index 60cfca4c..55d29aab 100644
--- a/modules/camera/CMakeLists.txt
+++ b/modules/camera/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_camera)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_camera_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/gui/CMakeLists.txt b/modules/gui/CMakeLists.txt
index 3b5202cc..87724ff9 100644
--- a/modules/gui/CMakeLists.txt
+++ b/modules/gui/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_gui)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_gui_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/material/CMakeLists.txt b/modules/material/CMakeLists.txt
index ed380453..bbcb7c5a 100644
--- a/modules/material/CMakeLists.txt
+++ b/modules/material/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_material)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_material_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/meshlet/CMakeLists.txt b/modules/meshlet/CMakeLists.txt
index d576466d..05fdba47 100644
--- a/modules/meshlet/CMakeLists.txt
+++ b/modules/meshlet/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_meshlet)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_meshlet_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/scene/CMakeLists.txt b/modules/scene/CMakeLists.txt
index 5edf9a29..2d81fde8 100644
--- a/modules/scene/CMakeLists.txt
+++ b/modules/scene/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_scene)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_scene_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/shader_compiler/CMakeLists.txt b/modules/shader_compiler/CMakeLists.txt
index 11c1e460..a9181ccd 100644
--- a/modules/shader_compiler/CMakeLists.txt
+++ b/modules/shader_compiler/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_shader_compiler)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_shader_compiler_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/testing/CMakeLists.txt b/modules/testing/CMakeLists.txt
index a22e5476..26814f3a 100644
--- a/modules/testing/CMakeLists.txt
+++ b/modules/testing/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_testing)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_testing_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/upscaling/CMakeLists.txt b/modules/upscaling/CMakeLists.txt
index 0767e5c4..dcab9629 100644
--- a/modules/upscaling/CMakeLists.txt
+++ b/modules/upscaling/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_upscaling)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_upscaling_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/projects/bindless_textures/CMakeLists.txt b/projects/bindless_textures/CMakeLists.txt
index 08cc636a..4fee4464 100644
--- a/projects/bindless_textures/CMakeLists.txt
+++ b/projects/bindless_textures/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(bindless_textures)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/bindless_textures/src/main.cpp b/projects/bindless_textures/src/main.cpp
index a2e9ff5e..555e3dc6 100644
--- a/projects/bindless_textures/src/main.cpp
+++ b/projects/bindless_textures/src/main.cpp
@@ -223,7 +223,7 @@ int main(int argc, const char** argv) {
 
     vkcv::camera::CameraManager cameraManager(core.getWindow(windowHandle));
     uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
-	uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
+	cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
 	
 	cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3));
 
diff --git a/projects/first_mesh/CMakeLists.txt b/projects/first_mesh/CMakeLists.txt
index 6455e75d..345324ac 100644
--- a/projects/first_mesh/CMakeLists.txt
+++ b/projects/first_mesh/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(first_mesh)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/first_scene/CMakeLists.txt b/projects/first_scene/CMakeLists.txt
index 21d6857e..d55476f5 100644
--- a/projects/first_scene/CMakeLists.txt
+++ b/projects/first_scene/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(first_scene)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/first_triangle/CMakeLists.txt b/projects/first_triangle/CMakeLists.txt
index ba8c83c0..cf1fdb90 100644
--- a/projects/first_triangle/CMakeLists.txt
+++ b/projects/first_triangle/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(first_triangle)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/indirect_dispatch/CMakeLists.txt b/projects/indirect_dispatch/CMakeLists.txt
index 7bc86cbc..ac8501f1 100644
--- a/projects/indirect_dispatch/CMakeLists.txt
+++ b/projects/indirect_dispatch/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(indirect_dispatch)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/indirect_draw/CMakeLists.txt b/projects/indirect_draw/CMakeLists.txt
index a1bc8073..83119e02 100644
--- a/projects/indirect_draw/CMakeLists.txt
+++ b/projects/indirect_draw/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(indirect_draw)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/mesh_shader/CMakeLists.txt b/projects/mesh_shader/CMakeLists.txt
index 1aa5d5ff..9e132e55 100644
--- a/projects/mesh_shader/CMakeLists.txt
+++ b/projects/mesh_shader/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(mesh_shader)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/particle_simulation/CMakeLists.txt b/projects/particle_simulation/CMakeLists.txt
index 2a665202..41ce6ca2 100644
--- a/projects/particle_simulation/CMakeLists.txt
+++ b/projects/particle_simulation/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(particle_simulation)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/path_tracer/CMakeLists.txt b/projects/path_tracer/CMakeLists.txt
index 2b8edc20..b4ad74c3 100644
--- a/projects/path_tracer/CMakeLists.txt
+++ b/projects/path_tracer/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(path_tracer)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/rtx_ambient_occlusion/CMakeLists.txt b/projects/rtx_ambient_occlusion/CMakeLists.txt
index 414279c3..e7d9be98 100644
--- a/projects/rtx_ambient_occlusion/CMakeLists.txt
+++ b/projects/rtx_ambient_occlusion/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(rtx_ambient_occlusion)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp b/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp
index c09e669d..186379a6 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp
@@ -114,7 +114,7 @@ namespace vkcv::rtx {
         vk::PhysicalDeviceMemoryProperties physicalDeviceMemoryProperties = m_core->getContext().getPhysicalDevice().getMemoryProperties();
 
         uint32_t memoryTypeIndex = -1;
-        for (int i = 0; i < physicalDeviceMemoryProperties.memoryTypeCount; i++) {
+        for (size_t i = 0; i < physicalDeviceMemoryProperties.memoryTypeCount; i++) {
             if ((memoryRequirements2.memoryRequirements.memoryTypeBits & (1 << i))
                     && (physicalDeviceMemoryProperties.memoryTypes[i].propertyFlags & buffer.memoryPropertyFlagBits) == buffer.memoryPropertyFlagBits) {
                 memoryTypeIndex = i;
diff --git a/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp b/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp
index 42ef7fc0..9a137435 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp
@@ -141,7 +141,7 @@ namespace vkcv::rtx {
             copyFromCPUToGPU(stagingBuffer, targetBuffer);
 
             return targetBuffer;
-        };
+        }
 
         /**
         * @brief A helper function used by @#ASManager::makeBufferFromData. Creates a fully initialized @#RTXBuffer object
diff --git a/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp b/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
index 59f3da21..00533bc3 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
@@ -50,7 +50,7 @@ namespace vkcv::rtx {
 
         m_shaderGroupBaseAlignment =  rayTracingProperties.shaderGroupBaseAlignment;
         uint8_t* mapped = (uint8_t*) m_core->getContext().getDevice().mapMemory(m_shaderBindingTableBuffer.deviceMemory, 0, shaderBindingTableSize);
-        for (int i = 0; i < shaderCount; i++) {
+        for (size_t i = 0; i < shaderCount; i++) {
             memcpy(mapped, (uint8_t*)shaderHandleStorage + (i * rayTracingProperties.shaderGroupHandleSize), rayTracingProperties.shaderGroupHandleSize);
             mapped += m_shaderGroupBaseAlignment;
         }
@@ -97,7 +97,6 @@ namespace vkcv::rtx {
     {
         //TLAS-Descriptor-Write
         TopLevelAccelerationStructure tlas = m_asManager->getTLAS();
-        RTXBuffer tlasBuffer = tlas.tlasBuffer;
         vk::WriteDescriptorSetAccelerationStructureKHR AccelerationDescriptor = {};
         AccelerationDescriptor.accelerationStructureCount = 1;
         const TopLevelAccelerationStructure constTLAS = tlas;
diff --git a/projects/saf_r/CMakeLists.txt b/projects/saf_r/CMakeLists.txt
index 61ede8ae..158bf7a9 100644
--- a/projects/saf_r/CMakeLists.txt
+++ b/projects/saf_r/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(saf_r)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp
index 3fef073a..354ea7a6 100644
--- a/projects/saf_r/src/main.cpp
+++ b/projects/saf_r/src/main.cpp
@@ -150,9 +150,6 @@ int main(int argc, const char** argv) {
                                           vkcv::BufferDescriptorWrite(1,sphereBuffer.getHandle())};
     core.writeDescriptorSet(computeDescriptorSet, computeWrites);
 
-
-	const auto& context = core.getContext();
-
 	auto safrIndexBuffer = core.createBuffer<uint16_t>(vkcv::BufferType::INDEX, 3, vkcv::BufferMemoryType::DEVICE_LOCAL);
 	uint16_t indices[3] = { 0, 1, 2 };
 	safrIndexBuffer.fill(&indices[0], sizeof(indices));
diff --git a/projects/sph/CMakeLists.txt b/projects/sph/CMakeLists.txt
index 592aa440..8be89e08 100644
--- a/projects/sph/CMakeLists.txt
+++ b/projects/sph/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(sph)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/sph/src/main.cpp b/projects/sph/src/main.cpp
index 255fb0e7..616a8406 100644
--- a/projects/sph/src/main.cpp
+++ b/projects/sph/src/main.cpp
@@ -206,7 +206,6 @@ int main(int argc, const char **argv) {
     vkcv::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle);
 
     auto pos = glm::vec2(0.f);
-    auto spawnPosition = glm::vec3(0.f);
 
     std::vector<vkcv::DrawcallInfo> drawcalls;
     drawcalls.push_back(vkcv::DrawcallInfo(renderMesh, {descriptorUsage}, numberParticles));
diff --git a/projects/voxelization/CMakeLists.txt b/projects/voxelization/CMakeLists.txt
index d2f533b0..9597f949 100644
--- a/projects/voxelization/CMakeLists.txt
+++ b/projects/voxelization/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(voxelization)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/src/vkcv/DescriptorManager.cpp b/src/vkcv/DescriptorManager.cpp
index f273e958..8343fde6 100644
--- a/src/vkcv/DescriptorManager.cpp
+++ b/src/vkcv/DescriptorManager.cpp
@@ -118,9 +118,7 @@ namespace vkcv
         uint32_t sumVariableDescriptorCounts = 0;
         for (auto bindingElem : setLayout.descriptorBindings)
         {
-            DescriptorBinding binding = bindingElem.second;
-            uint32_t bindingID = bindingElem.first;
-
+            auto binding = bindingElem.second;
             if(binding.variableCount)
                 sumVariableDescriptorCounts += binding.descriptorCount;
         }
diff --git a/src/vkcv/Window.cpp b/src/vkcv/Window.cpp
index 2b49ea32..f6f9aa69 100644
--- a/src/vkcv/Window.cpp
+++ b/src/vkcv/Window.cpp
@@ -58,7 +58,7 @@ namespace vkcv {
 	static std::vector<GLFWwindow*> s_Windows;
 
 	void Window_onGamepadEvent(int gamepadIndex) {
-			Window::getFocusedWindow().e_gamepad(gamepadIndex);
+		Window::getFocusedWindow().e_gamepad(gamepadIndex);
 	}
 	
 	static GLFWwindow* createGLFWWindow(const char *windowTitle, int width, int height, bool resizable) {
@@ -160,7 +160,6 @@ namespace vkcv {
 	}
 
     void Window::pollEvents() {
-
     	for (auto glfwWindow : s_Windows) {
 			auto window = static_cast<Window *>(glfwGetWindowUserPointer(glfwWindow));
 			
@@ -175,11 +174,6 @@ namespace vkcv {
 
 		glfwPollEvents();
 
-		// fixes subtle mouse stutter, which is made visible by motion blur
-		// FIXME: proper solution
-		// probably caused by main thread locking events before glfw callbacks are executed
-		std::this_thread::sleep_for(std::chrono::milliseconds(1));
-
 		for (int gamepadIndex = GLFW_JOYSTICK_1; gamepadIndex <= GLFW_JOYSTICK_LAST; gamepadIndex++) {
 			if (glfwJoystickPresent(gamepadIndex)) {
 				Window_onGamepadEvent(gamepadIndex);
-- 
GitLab