From b6a190f4a2dfd1884f4c0960b9293580b495483c Mon Sep 17 00:00:00 2001 From: mocabe Date: Tue, 28 Jan 2020 18:16:10 +0900 Subject: [PATCH] Building samples for Linux (#491) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CMake: Fix SAMPLES_BUILD and TESTS_BUILD * CMake: Enable sample build on linux * samples: Use glfw for window creation * samples: Fix include order * samples: Support new window handling * samples: Add build target for util * samples: Update CMake scripts to use util target * samples: Add WindowData to manage unique window * samples: Surface handling using WIndowData * sampels: Remove call for vk::su::destroyWindow() * CMake: FIx more options * samples: Build SurfaceCapabilities only on WIN32 * samples: Fixed RayTracing sample to build on Linux * samples: Fix wrong check on SurfaceProtectedCapabilitiesKHR This also fixes compilation with MinGW gcc/clang * CMake: check CMAKE_SYSTEM_NAME for Linux samples * CMake: Add source group for utils * samples: Fix potential bugs * samples: Reduce warnings on gcc/clang * samples: Fix missmatched new/free() which is UB * samples: Add missing initialization for dynamic dispatcher * samples: Remove unnecessary dispacther construct Co-authored-by: Andreas Süßenbach --- CMakeLists.txt | 4 +- samples/01_InitInstance/01_InitInstance.cpp | 2 +- .../02_EnumerateDevices.cpp | 2 +- samples/02_EnumerateDevices/CMakeLists.txt | 4 +- samples/03_InitDevice/03_InitDevice.cpp | 2 +- samples/03_InitDevice/CMakeLists.txt | 4 +- .../04_InitCommandBuffer.cpp | 2 +- samples/04_InitCommandBuffer/CMakeLists.txt | 4 +- samples/05_InitSwapchain/05_InitSwapchain.cpp | 25 ++-- samples/05_InitSwapchain/CMakeLists.txt | 4 +- .../06_InitDepthBuffer/06_InitDepthBuffer.cpp | 12 +- samples/06_InitDepthBuffer/CMakeLists.txt | 4 +- .../07_InitUniformBuffer.cpp | 4 +- samples/07_InitUniformBuffer/CMakeLists.txt | 4 +- .../08_InitPipelineLayout.cpp | 4 +- samples/08_InitPipelineLayout/CMakeLists.txt | 4 +- .../09_InitDescriptorSet.cpp | 4 +- samples/09_InitDescriptorSet/CMakeLists.txt | 6 +- .../10_InitRenderPass/10_InitRenderPass.cpp | 12 +- samples/10_InitRenderPass/CMakeLists.txt | 4 +- samples/11_InitShaders/11_InitShaders.cpp | 4 +- samples/11_InitShaders/CMakeLists.txt | 9 +- .../12_InitFrameBuffers.cpp | 12 +- samples/12_InitFrameBuffers/CMakeLists.txt | 4 +- .../13_InitVertexBuffer.cpp | 12 +- samples/13_InitVertexBuffer/CMakeLists.txt | 5 +- samples/14_InitPipeline/14_InitPipeline.cpp | 14 +- samples/14_InitPipeline/CMakeLists.txt | 12 +- samples/15_DrawCube/15_DrawCube.cpp | 14 +- samples/15_DrawCube/CMakeLists.txt | 12 +- samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp | 4 +- samples/16_Vulkan_1_1/CMakeLists.txt | 4 +- samples/CMakeLists.txt | 6 +- samples/CopyBlitImage/CMakeLists.txt | 4 +- samples/CopyBlitImage/CopyBlitImage.cpp | 16 +-- .../CreateDebugUtilsMessenger.cpp | 4 +- samples/DrawTexturedCube/CMakeLists.txt | 12 +- samples/DrawTexturedCube/DrawTexturedCube.cpp | 14 +- samples/DynamicUniform/CMakeLists.txt | 12 +- samples/DynamicUniform/DynamicUniform.cpp | 14 +- .../CMakeLists.txt | 2 +- .../EnableValidationWithCallback.cpp | 16 ++- .../EnumerateDevicesAdvanced/CMakeLists.txt | 4 +- .../EnumerateDevicesAdvanced.cpp | 2 +- samples/Events/CMakeLists.txt | 4 +- samples/Events/Events.cpp | 4 +- samples/ImmutableSampler/CMakeLists.txt | 12 +- samples/ImmutableSampler/ImmutableSampler.cpp | 14 +- samples/InitTexture/CMakeLists.txt | 12 +- samples/InitTexture/InitTexture.cpp | 12 +- samples/InputAttachment/CMakeLists.txt | 12 +- samples/InputAttachment/InputAttachment.cpp | 15 +- .../InstanceExtensionProperties.cpp | 4 +- .../InstanceLayerExtensionProperties.cpp | 4 +- .../InstanceLayerProperties/CMakeLists.txt | 3 +- .../InstanceLayerProperties.cpp | 4 +- samples/InstanceVersion/InstanceVersion.cpp | 4 +- samples/MultipleSets/CMakeLists.txt | 12 +- samples/MultipleSets/MultipleSets.cpp | 14 +- samples/OcclusionQuery/CMakeLists.txt | 12 +- samples/OcclusionQuery/OcclusionQuery.cpp | 15 +- .../PhysicalDeviceExtensions/CMakeLists.txt | 4 +- .../PhysicalDeviceExtensions.cpp | 4 +- samples/PhysicalDeviceFeatures/CMakeLists.txt | 4 +- .../PhysicalDeviceFeatures.cpp | 4 +- samples/PhysicalDeviceGroups/CMakeLists.txt | 4 +- .../PhysicalDeviceGroups.cpp | 4 +- .../CMakeLists.txt | 4 +- .../PhysicalDeviceMemoryProperties.cpp | 4 +- .../PhysicalDeviceProperties/CMakeLists.txt | 4 +- .../PhysicalDeviceProperties.cpp | 4 +- .../CMakeLists.txt | 4 +- .../PhysicalDeviceQueueFamilyProperties.cpp | 4 +- samples/PipelineCache/CMakeLists.txt | 12 +- samples/PipelineCache/PipelineCache.cpp | 17 +-- samples/PipelineDerivative/CMakeLists.txt | 12 +- .../PipelineDerivative/PipelineDerivative.cpp | 17 +-- samples/PushConstants/CMakeLists.txt | 12 +- samples/PushConstants/PushConstants.cpp | 15 +- samples/PushDescriptors/CMakeLists.txt | 12 +- samples/PushDescriptors/PushDescriptors.cpp | 16 +-- samples/RayTracing/CMakeLists.txt | 14 +- samples/RayTracing/CameraManipulator.hpp | 2 +- samples/RayTracing/RayTracing.cpp | 10 +- samples/SecondaryCommandBuffer/CMakeLists.txt | 12 +- .../SecondaryCommandBuffer.cpp | 14 +- samples/SeparateImageSampler/CMakeLists.txt | 12 +- .../SeparateImageSampler.cpp | 15 +- samples/SurfaceCapabilities/CMakeLists.txt | 18 +-- .../SurfaceCapabilities.cpp | 8 +- samples/SurfaceFormats/CMakeLists.txt | 4 +- samples/SurfaceFormats/SurfaceFormats.cpp | 6 +- samples/Template/CMakeLists.txt | 12 +- samples/Template/Template.cpp | 14 +- samples/TexelBuffer/CMakeLists.txt | 12 +- samples/TexelBuffer/TexelBuffer.cpp | 14 +- samples/utils/CMakeLists.txt | 43 ++++++ samples/utils/utils.cpp | 107 +++++++------- samples/utils/utils.hpp | 132 ++++++++++-------- tests/CMakeLists.txt | 4 +- 100 files changed, 408 insertions(+), 686 deletions(-) create mode 100644 samples/utils/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index bc40c5f..79c48c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,14 +102,14 @@ if (VULKAN_HPP_RUN_GENERATOR) DEPENDS "${vulkan_hpp}" "${vk_spec}") endif() -option (SAMPLES_BUILD OFF) +option (SAMPLES_BUILD "Build samples" OFF) if (SAMPLES_BUILD) add_subdirectory(glfw) add_subdirectory(glslang) add_subdirectory(samples) endif (SAMPLES_BUILD) -option (TESTS_BUILD OFF) +option (TESTS_BUILD "Build tests" OFF) if (TESTS_BUILD) add_subdirectory(tests) endif (TESTS_BUILD) diff --git a/samples/01_InitInstance/01_InitInstance.cpp b/samples/01_InitInstance/01_InitInstance.cpp index dd56660..7531e1c 100644 --- a/samples/01_InitInstance/01_InitInstance.cpp +++ b/samples/01_InitInstance/01_InitInstance.cpp @@ -39,7 +39,7 @@ int main(int /*argc*/, char ** /*argv*/) // Note: No need to explicitly destroy the instance, as the corresponding destroy function is // called by the destructor of the UniqueInstance on leaving this scope. } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); diff --git a/samples/02_EnumerateDevices/02_EnumerateDevices.cpp b/samples/02_EnumerateDevices/02_EnumerateDevices.cpp index b292bef..6403f24 100644 --- a/samples/02_EnumerateDevices/02_EnumerateDevices.cpp +++ b/samples/02_EnumerateDevices/02_EnumerateDevices.cpp @@ -41,7 +41,7 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); diff --git a/samples/02_EnumerateDevices/CMakeLists.txt b/samples/02_EnumerateDevices/CMakeLists.txt index cc35691..4a17a49 100644 --- a/samples/02_EnumerateDevices/CMakeLists.txt +++ b/samples/02_EnumerateDevices/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(02_EnumerateDevices) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 02_EnumerateDevices.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(02_EnumerateDevices ) set_target_properties(02_EnumerateDevices PROPERTIES FOLDER "Samples") -target_compile_definitions(02_EnumerateDevices PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(02_EnumerateDevices PRIVATE utils) \ No newline at end of file diff --git a/samples/03_InitDevice/03_InitDevice.cpp b/samples/03_InitDevice/03_InitDevice.cpp index 0843845..28d5597 100644 --- a/samples/03_InitDevice/03_InitDevice.cpp +++ b/samples/03_InitDevice/03_InitDevice.cpp @@ -55,7 +55,7 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); diff --git a/samples/03_InitDevice/CMakeLists.txt b/samples/03_InitDevice/CMakeLists.txt index d169289..1c18888 100644 --- a/samples/03_InitDevice/CMakeLists.txt +++ b/samples/03_InitDevice/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(03_InitDevice) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 03_InitDevice.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(03_InitDevice ) set_target_properties(03_InitDevice PROPERTIES FOLDER "Samples") -target_compile_definitions(03_InitDevice PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(03_InitDevice PRIVATE utils) diff --git a/samples/04_InitCommandBuffer/04_InitCommandBuffer.cpp b/samples/04_InitCommandBuffer/04_InitCommandBuffer.cpp index f2e46f2..dcbba5d 100644 --- a/samples/04_InitCommandBuffer/04_InitCommandBuffer.cpp +++ b/samples/04_InitCommandBuffer/04_InitCommandBuffer.cpp @@ -49,7 +49,7 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); diff --git a/samples/04_InitCommandBuffer/CMakeLists.txt b/samples/04_InitCommandBuffer/CMakeLists.txt index a935fd8..27b79a5 100644 --- a/samples/04_InitCommandBuffer/CMakeLists.txt +++ b/samples/04_InitCommandBuffer/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(04_InitCommandBuffer) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 04_InitCommandBuffer.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(04_InitCommandBuffer ) set_target_properties(04_InitCommandBuffer PROPERTIES FOLDER "Samples") -target_compile_definitions(04_InitCommandBuffer PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(04_InitCommandBuffer PRIVATE utils) \ No newline at end of file diff --git a/samples/05_InitSwapchain/05_InitSwapchain.cpp b/samples/05_InitSwapchain/05_InitSwapchain.cpp index d4a9ac2..62b768c 100644 --- a/samples/05_InitSwapchain/05_InitSwapchain.cpp +++ b/samples/05_InitSwapchain/05_InitSwapchain.cpp @@ -40,13 +40,14 @@ int main(int /*argc*/, char ** /*argv*/) uint32_t width = 64; uint32_t height = 64; -#if defined(VK_USE_PLATFORM_WIN32_KHR) - HWND window = vk::su::initializeWindow(AppName, AppName, width, height); - - vk::UniqueSurfaceKHR surface = instance->createWin32SurfaceKHRUnique(vk::Win32SurfaceCreateInfoKHR(vk::Win32SurfaceCreateFlagsKHR(), GetModuleHandle(nullptr), window)); -#else -#pragma error "unhandled platform" -#endif + vk::su::WindowData window = vk::su::createWindow(AppName, {width, height}); + vk::UniqueSurfaceKHR surface; + { + VkSurfaceKHR _surface; + glfwCreateWindowSurface(instance.get(), window.handle, nullptr, &_surface); + vk::ObjectDestroy _deleter(instance.get()); + surface = vk::UniqueSurfaceKHR(_surface, _deleter); + } // determine a queueFamilyIndex that suports present // first check if the graphicsQueueFamiliyIndex is good enough @@ -140,23 +141,17 @@ int main(int /*argc*/, char ** /*argv*/) imageViews.push_back(device->createImageViewUnique(imageViewCreateInfo)); } -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(window); -#else -#pragma error "unhandled platform" -#endif - // Note: No need to explicitly destroy the ImageViews or the swapChain, as the corresponding destroy // functions are called by the destructor of the UniqueImageView and the UniqueSwapChainKHR on leaving this scope. /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/05_InitSwapchain/CMakeLists.txt b/samples/05_InitSwapchain/CMakeLists.txt index 3baf4e4..6105eea 100644 --- a/samples/05_InitSwapchain/CMakeLists.txt +++ b/samples/05_InitSwapchain/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(05_InitSwapchain) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 05_InitSwapchain.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(05_InitSwapchain ) set_target_properties(05_InitSwapchain PROPERTIES FOLDER "Samples") -target_compile_definitions(05_InitSwapchain PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(05_InitSwapchain PRIVATE utils) \ No newline at end of file diff --git a/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp b/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp index 4525a68..76e8f03 100644 --- a/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp +++ b/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp @@ -33,7 +33,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -82,19 +82,13 @@ int main(int /*argc*/, char ** /*argv*/) vk::UniqueImageView depthView = device->createImageViewUnique(vk::ImageViewCreateInfo(vk::ImageViewCreateFlags(), depthImage.get(), vk::ImageViewType::e2D, depthFormat, componentMapping, subResourceRange)); /* VULKAN_HPP_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/06_InitDepthBuffer/CMakeLists.txt b/samples/06_InitDepthBuffer/CMakeLists.txt index 1a3dd79..769ba48 100644 --- a/samples/06_InitDepthBuffer/CMakeLists.txt +++ b/samples/06_InitDepthBuffer/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(06_InitDepthBuffer) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 06_InitDepthBuffer.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(06_InitDepthBuffer ) set_target_properties(06_InitDepthBuffer PROPERTIES FOLDER "Samples") -target_compile_definitions(06_InitDepthBuffer PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(06_InitDepthBuffer PRIVATE utils) diff --git a/samples/07_InitUniformBuffer/07_InitUniformBuffer.cpp b/samples/07_InitUniformBuffer/07_InitUniformBuffer.cpp index 065e84d..27ac386 100644 --- a/samples/07_InitUniformBuffer/07_InitUniformBuffer.cpp +++ b/samples/07_InitUniformBuffer/07_InitUniformBuffer.cpp @@ -64,12 +64,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/07_InitUniformBuffer/CMakeLists.txt b/samples/07_InitUniformBuffer/CMakeLists.txt index cc19fc7..4cf2a88 100644 --- a/samples/07_InitUniformBuffer/CMakeLists.txt +++ b/samples/07_InitUniformBuffer/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(07_InitUniformBuffer) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 07_InitUniformBuffer.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(07_InitUniformBuffer ) set_target_properties(07_InitUniformBuffer PROPERTIES FOLDER "Samples") -target_compile_definitions(07_InitUniformBuffer PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(07_InitUniformBuffer PRIVATE utils) \ No newline at end of file diff --git a/samples/08_InitPipelineLayout/08_InitPipelineLayout.cpp b/samples/08_InitPipelineLayout/08_InitPipelineLayout.cpp index da36ca4..5b625a7 100644 --- a/samples/08_InitPipelineLayout/08_InitPipelineLayout.cpp +++ b/samples/08_InitPipelineLayout/08_InitPipelineLayout.cpp @@ -49,12 +49,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/08_InitPipelineLayout/CMakeLists.txt b/samples/08_InitPipelineLayout/CMakeLists.txt index 2b3ccea..79b8ac8 100644 --- a/samples/08_InitPipelineLayout/CMakeLists.txt +++ b/samples/08_InitPipelineLayout/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(08_InitPipelineLayout) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 08_InitPipelineLayout.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(08_InitPipelineLayout ) set_target_properties(08_InitPipelineLayout PROPERTIES FOLDER "Samples") -target_compile_definitions(08_InitPipelineLayout PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(08_InitPipelineLayout PRIVATE utils) diff --git a/samples/09_InitDescriptorSet/09_InitDescriptorSet.cpp b/samples/09_InitDescriptorSet/09_InitDescriptorSet.cpp index 8877716..0636692 100644 --- a/samples/09_InitDescriptorSet/09_InitDescriptorSet.cpp +++ b/samples/09_InitDescriptorSet/09_InitDescriptorSet.cpp @@ -59,12 +59,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/09_InitDescriptorSet/CMakeLists.txt b/samples/09_InitDescriptorSet/CMakeLists.txt index 96e7674..0601b76 100644 --- a/samples/09_InitDescriptorSet/CMakeLists.txt +++ b/samples/09_InitDescriptorSet/CMakeLists.txt @@ -17,14 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(09_InitDescriptorSet) set(HEADERS - ../utils/math.hpp - ../utils/utils.hpp ) set(SOURCES 09_InitDescriptorSet.cpp - ../utils/math.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -36,4 +32,4 @@ add_executable(09_InitDescriptorSet ) set_target_properties(09_InitDescriptorSet PROPERTIES FOLDER "Samples") -target_compile_definitions(09_InitDescriptorSet PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(09_InitDescriptorSet PRIVATE utils) diff --git a/samples/10_InitRenderPass/10_InitRenderPass.cpp b/samples/10_InitRenderPass/10_InitRenderPass.cpp index 6b3d158..9cb52ca 100644 --- a/samples/10_InitRenderPass/10_InitRenderPass.cpp +++ b/samples/10_InitRenderPass/10_InitRenderPass.cpp @@ -37,7 +37,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(64, 64)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(64, 64)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -63,19 +63,13 @@ int main(int /*argc*/, char ** /*argv*/) // functions are called by the destructor of the UniqueRenderPass and the UniqueSemaphore on leaving this scope. /* VULKAN_HPP_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/10_InitRenderPass/CMakeLists.txt b/samples/10_InitRenderPass/CMakeLists.txt index ca23be9..18eda00 100644 --- a/samples/10_InitRenderPass/CMakeLists.txt +++ b/samples/10_InitRenderPass/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(10_InitRenderPass) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 10_InitRenderPass.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(10_InitRenderPass ) set_target_properties(10_InitRenderPass PROPERTIES FOLDER "Samples") -target_compile_definitions(10_InitRenderPass PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(10_InitRenderPass PRIVATE utils) \ No newline at end of file diff --git a/samples/11_InitShaders/11_InitShaders.cpp b/samples/11_InitShaders/11_InitShaders.cpp index 81e63d8..e8d6e6c 100644 --- a/samples/11_InitShaders/11_InitShaders.cpp +++ b/samples/11_InitShaders/11_InitShaders.cpp @@ -62,12 +62,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/11_InitShaders/CMakeLists.txt b/samples/11_InitShaders/CMakeLists.txt index 21b639c..8dfd704 100644 --- a/samples/11_InitShaders/CMakeLists.txt +++ b/samples/11_InitShaders/CMakeLists.txt @@ -17,15 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(11_InitShaders) set(HEADERS - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES 11_InitShaders.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -37,6 +32,4 @@ add_executable(11_InitShaders ) set_target_properties(11_InitShaders PROPERTIES FOLDER "Samples") -target_compile_definitions(11_InitShaders PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(11_InitShaders PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(11_InitShaders PUBLIC glslang SPIRV) +target_link_libraries(11_InitShaders PRIVATE utils) diff --git a/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp b/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp index a4ff0d5..0b8e610 100644 --- a/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp +++ b/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp @@ -33,7 +33,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(64, 64)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(64, 64)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -61,19 +61,13 @@ int main(int /*argc*/, char ** /*argv*/) // Note: No need to explicitly destroy the Framebuffers, as the destroy functions are called by the destructor of the UniqueFramebuffer on leaving this scope. /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/12_InitFrameBuffers/CMakeLists.txt b/samples/12_InitFrameBuffers/CMakeLists.txt index cb16200..1b17c3c 100644 --- a/samples/12_InitFrameBuffers/CMakeLists.txt +++ b/samples/12_InitFrameBuffers/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(12_InitFrameBuffers) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 12_InitFrameBuffers.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(12_InitFrameBuffers ) set_target_properties(12_InitFrameBuffers PROPERTIES FOLDER "Samples") -target_compile_definitions(12_InitFrameBuffers PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(12_InitFrameBuffers PRIVATE utils) diff --git a/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp b/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp index fc8a657..47f7782 100644 --- a/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp +++ b/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp @@ -34,7 +34,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(64, 64)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(64, 64)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -95,19 +95,13 @@ int main(int /*argc*/, char ** /*argv*/) // by the destructor of the UniqueBuffer, UniqueDeviceMemory, and UniqueSemaphore, respectively, on leaving this scope. /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/13_InitVertexBuffer/CMakeLists.txt b/samples/13_InitVertexBuffer/CMakeLists.txt index e32bece..2fefa70 100644 --- a/samples/13_InitVertexBuffer/CMakeLists.txt +++ b/samples/13_InitVertexBuffer/CMakeLists.txt @@ -17,13 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(13_InitVertexBuffer) set(HEADERS - ../utils/geometries.hpp - ../utils/utils.hpp ) set(SOURCES 13_InitVertexBuffer.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -35,4 +32,4 @@ add_executable(13_InitVertexBuffer ) set_target_properties(13_InitVertexBuffer PROPERTIES FOLDER "Samples") -target_compile_definitions(13_InitVertexBuffer PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(13_InitVertexBuffer PRIVATE utils) diff --git a/samples/14_InitPipeline/14_InitPipeline.cpp b/samples/14_InitPipeline/14_InitPipeline.cpp index cb70ba1..3b05a3d 100644 --- a/samples/14_InitPipeline/14_InitPipeline.cpp +++ b/samples/14_InitPipeline/14_InitPipeline.cpp @@ -37,7 +37,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -133,7 +133,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::LogicOp::eNoOp, // logicOp 1, // attachmentCount &pipelineColorBlendAttachmentState, // pAttachments - { { (1.0f, 1.0f, 1.0f, 1.0f) } } // blendConstants + { { 1.0f, 1.0f, 1.0f, 1.0f } } // blendConstants ); vk::DynamicState dynamicStates[2] = { vk::DynamicState::eViewport, vk::DynamicState::eScissor }; @@ -160,19 +160,13 @@ int main(int /*argc*/, char ** /*argv*/) vk::UniquePipeline pipeline = device->createGraphicsPipelineUnique(nullptr, graphicsPipelineCreateInfo); /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError &err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/14_InitPipeline/CMakeLists.txt b/samples/14_InitPipeline/CMakeLists.txt index 0d63b17..7991ad7 100644 --- a/samples/14_InitPipeline/CMakeLists.txt +++ b/samples/14_InitPipeline/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(14_InitPipeline) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES 14_InitPipeline.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(14_InitPipeline ) set_target_properties(14_InitPipeline PROPERTIES FOLDER "Samples") -target_compile_definitions(14_InitPipeline PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(14_InitPipeline PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(14_InitPipeline PUBLIC glslang SPIRV) +target_link_libraries(14_InitPipeline PRIVATE utils) diff --git a/samples/15_DrawCube/15_DrawCube.cpp b/samples/15_DrawCube/15_DrawCube.cpp index af2ac12..f564eca 100644 --- a/samples/15_DrawCube/15_DrawCube.cpp +++ b/samples/15_DrawCube/15_DrawCube.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "15_DrawCube"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -116,23 +117,18 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/15_DrawCube/CMakeLists.txt b/samples/15_DrawCube/CMakeLists.txt index e3d15a7..35834e7 100644 --- a/samples/15_DrawCube/CMakeLists.txt +++ b/samples/15_DrawCube/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(15_DrawCube) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES 15_DrawCube.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(15_DrawCube ) set_target_properties(15_DrawCube PROPERTIES FOLDER "Samples") -target_compile_definitions(15_DrawCube PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(15_DrawCube PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(15_DrawCube PUBLIC glslang SPIRV) +target_link_libraries(15_DrawCube PRIVATE utils) diff --git a/samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp b/samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp index 56ac00e..9e1c484 100644 --- a/samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp +++ b/samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp @@ -96,12 +96,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/16_Vulkan_1_1/CMakeLists.txt b/samples/16_Vulkan_1_1/CMakeLists.txt index 41d4cce..4094411 100644 --- a/samples/16_Vulkan_1_1/CMakeLists.txt +++ b/samples/16_Vulkan_1_1/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(16_Vulkan_1_1) set(HEADERS - ../utils/utils.hpp ) set(SOURCES 16_Vulkan_1_1.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(16_Vulkan_1_1 ) set_target_properties(16_Vulkan_1_1 PROPERTIES FOLDER "Samples") -target_compile_definitions(16_Vulkan_1_1 PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(16_Vulkan_1_1 PRIVATE utils) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 2203889..cc68cde 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -18,12 +18,14 @@ find_package(Vulkan REQUIRED) project(Vulkan-Hpp_Samples) -option (SAMPLES_BUILD_WITH_LOCAL_VULKAN_HPP OFF) +option (SAMPLES_BUILD_WITH_LOCAL_VULKAN_HPP "Build with local Vulkan headers" OFF) if (CMAKE_SYSTEM_NAME MATCHES "Windows") add_definitions(-DNOMINMAX -DVK_USE_PLATFORM_WIN32_KHR) +elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") + add_definitions(-DVK_USE_PLATFORM_XCB_KHR) else() - message(FATAL_ERROR, "unhandled platform !") + message(FATAL_ERROR, "Vulkan-Hpp: unhandled platform for samples!") endif() FILE (GLOB linkunits ${CMAKE_CURRENT_SOURCE_DIR}/*) diff --git a/samples/CopyBlitImage/CMakeLists.txt b/samples/CopyBlitImage/CMakeLists.txt index fc331ad..85a6d64 100644 --- a/samples/CopyBlitImage/CMakeLists.txt +++ b/samples/CopyBlitImage/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(CopyBlitImage) set(HEADERS - ../utils/utils.hpp ) set(SOURCES CopyBlitImage.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(CopyBlitImage ) set_target_properties(CopyBlitImage PROPERTIES FOLDER "Samples") -target_compile_definitions(CopyBlitImage PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(CopyBlitImage PRIVATE utils) diff --git a/samples/CopyBlitImage/CopyBlitImage.cpp b/samples/CopyBlitImage/CopyBlitImage.cpp index 5135be9..e6d328f 100644 --- a/samples/CopyBlitImage/CopyBlitImage.cpp +++ b/samples/CopyBlitImage/CopyBlitImage.cpp @@ -18,6 +18,8 @@ #include "../utils/utils.hpp" #include "vulkan/vulkan.hpp" +#include + static char const* AppName = "CopyBlitImage"; static char const* EngineName = "Vulkan.hpp"; @@ -32,7 +34,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(640, 640)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(640, 640)); vk::SurfaceCapabilitiesKHR surfaceCapabilities = physicalDevice.getSurfaceCapabilitiesKHR(surfaceData.surface.get()); if (!(surfaceCapabilities.supportedUsageFlags & vk::ImageUsageFlagBits::eTransferDst)) @@ -150,22 +152,16 @@ int main(int /*argc*/, char ** /*argv*/) /* Now present the image in the window */ presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer, nullptr)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/CreateDebugUtilsMessenger/CreateDebugUtilsMessenger.cpp b/samples/CreateDebugUtilsMessenger/CreateDebugUtilsMessenger.cpp index b1aece9..a7d986d 100644 --- a/samples/CreateDebugUtilsMessenger/CreateDebugUtilsMessenger.cpp +++ b/samples/CreateDebugUtilsMessenger/CreateDebugUtilsMessenger.cpp @@ -125,12 +125,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/DrawTexturedCube/CMakeLists.txt b/samples/DrawTexturedCube/CMakeLists.txt index 03934f2..497beb5 100644 --- a/samples/DrawTexturedCube/CMakeLists.txt +++ b/samples/DrawTexturedCube/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(DrawTexturedCube) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES DrawTexturedCube.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(DrawTexturedCube ) set_target_properties(DrawTexturedCube PROPERTIES FOLDER "Samples") -target_compile_definitions(DrawTexturedCube PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(DrawTexturedCube PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(DrawTexturedCube PUBLIC glslang SPIRV) +target_link_libraries(DrawTexturedCube PRIVATE utils) diff --git a/samples/DrawTexturedCube/DrawTexturedCube.cpp b/samples/DrawTexturedCube/DrawTexturedCube.cpp index 71de62d..0cd14c2 100644 --- a/samples/DrawTexturedCube/DrawTexturedCube.cpp +++ b/samples/DrawTexturedCube/DrawTexturedCube.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "DrawTexturedCube"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -122,23 +123,18 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/DynamicUniform/CMakeLists.txt b/samples/DynamicUniform/CMakeLists.txt index 0b168e9..38459c4 100644 --- a/samples/DynamicUniform/CMakeLists.txt +++ b/samples/DynamicUniform/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(DynamicUniform) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES DynamicUniform.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(DynamicUniform ) set_target_properties(DynamicUniform PROPERTIES FOLDER "Samples") -target_compile_definitions(DynamicUniform PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(DynamicUniform PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(DynamicUniform PUBLIC glslang SPIRV) +target_link_libraries(DynamicUniform PRIVATE utils) diff --git a/samples/DynamicUniform/DynamicUniform.cpp b/samples/DynamicUniform/DynamicUniform.cpp index ff9487c..de27ed5 100644 --- a/samples/DynamicUniform/DynamicUniform.cpp +++ b/samples/DynamicUniform/DynamicUniform.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "DynamicUniform"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -151,23 +152,18 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/EnableValidationWithCallback/CMakeLists.txt b/samples/EnableValidationWithCallback/CMakeLists.txt index 1415ebf..3e18447 100644 --- a/samples/EnableValidationWithCallback/CMakeLists.txt +++ b/samples/EnableValidationWithCallback/CMakeLists.txt @@ -32,4 +32,4 @@ add_executable(EnableValidationWithCallback ) set_target_properties(EnableValidationWithCallback PROPERTIES FOLDER "Samples") -target_link_libraries(EnableValidationWithCallback PUBLIC "${Vulkan_LIBRARIES}") +target_link_libraries(EnableValidationWithCallback PRIVATE utils) diff --git a/samples/EnableValidationWithCallback/EnableValidationWithCallback.cpp b/samples/EnableValidationWithCallback/EnableValidationWithCallback.cpp index 3c05fae..709f09a 100644 --- a/samples/EnableValidationWithCallback/EnableValidationWithCallback.cpp +++ b/samples/EnableValidationWithCallback/EnableValidationWithCallback.cpp @@ -101,6 +101,13 @@ int main(int /*argc*/, char ** /*argv*/) { try { +#if (VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1) + // initialize the DipatchLoaderDynamic to use + static vk::DynamicLoader dl; + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = dl.getProcAddress("vkGetInstanceProcAddr"); + VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr); +#endif + std::vector instanceLayerProperties = vk::enumerateInstanceLayerProperties(); /* VULKAN_KEY_START */ @@ -123,6 +130,11 @@ int main(int /*argc*/, char ** /*argv*/) vk::su::checked_cast(instanceExtensionNames.size()) , instanceExtensionNames.data() ); vk::UniqueInstance instance = vk::createInstanceUnique(instanceCreateInfo); +#if (VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1) + // initialize function pointers for instance + VULKAN_HPP_DEFAULT_DISPATCHER.init(*instance); +#endif + pfnVkCreateDebugUtilsMessengerEXT = reinterpret_cast(instance->getProcAddr("vkCreateDebugUtilsMessengerEXT")); if (!pfnVkCreateDebugUtilsMessengerEXT) { @@ -164,12 +176,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/EnumerateDevicesAdvanced/CMakeLists.txt b/samples/EnumerateDevicesAdvanced/CMakeLists.txt index 99ecc37..39661bd 100644 --- a/samples/EnumerateDevicesAdvanced/CMakeLists.txt +++ b/samples/EnumerateDevicesAdvanced/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(EnumerateDevicesAdvanced) set(HEADERS - ../utils/utils.hpp ) set(SOURCES EnumerateDevicesAdvanced.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(EnumerateDevicesAdvanced ) set_target_properties(EnumerateDevicesAdvanced PROPERTIES FOLDER "Samples") -target_compile_definitions(EnumerateDevicesAdvanced PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(EnumerateDevicesAdvanced PRIVATE utils) diff --git a/samples/EnumerateDevicesAdvanced/EnumerateDevicesAdvanced.cpp b/samples/EnumerateDevicesAdvanced/EnumerateDevicesAdvanced.cpp index fe640a3..396d2e8 100644 --- a/samples/EnumerateDevicesAdvanced/EnumerateDevicesAdvanced.cpp +++ b/samples/EnumerateDevicesAdvanced/EnumerateDevicesAdvanced.cpp @@ -63,7 +63,7 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_HPP_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); diff --git a/samples/Events/CMakeLists.txt b/samples/Events/CMakeLists.txt index 568b758..09beb61 100644 --- a/samples/Events/CMakeLists.txt +++ b/samples/Events/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(Events) set(HEADERS - ../utils/utils.hpp ) set(SOURCES Events.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(Events ) set_target_properties(Events PROPERTIES FOLDER "Samples") -target_compile_definitions(Events PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(Events PRIVATE utils) diff --git a/samples/Events/Events.cpp b/samples/Events/Events.cpp index 258393b..fb8cb05 100644 --- a/samples/Events/Events.cpp +++ b/samples/Events/Events.cpp @@ -132,12 +132,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/ImmutableSampler/CMakeLists.txt b/samples/ImmutableSampler/CMakeLists.txt index 17b8e6f..9928b70 100644 --- a/samples/ImmutableSampler/CMakeLists.txt +++ b/samples/ImmutableSampler/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(ImmutableSampler) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES ImmutableSampler.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(ImmutableSampler ) set_target_properties(ImmutableSampler PROPERTIES FOLDER "Samples") -target_compile_definitions(ImmutableSampler PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(ImmutableSampler PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(ImmutableSampler PUBLIC glslang SPIRV) +target_link_libraries(ImmutableSampler PRIVATE utils) diff --git a/samples/ImmutableSampler/ImmutableSampler.cpp b/samples/ImmutableSampler/ImmutableSampler.cpp index 3b57556..cce2286 100644 --- a/samples/ImmutableSampler/ImmutableSampler.cpp +++ b/samples/ImmutableSampler/ImmutableSampler.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "ImmutableSampler"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -136,21 +137,16 @@ int main(int /*argc*/, char ** /*argv*/) vk::su::submitAndWait(device, graphicsQueue, commandBuffer); presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/InitTexture/CMakeLists.txt b/samples/InitTexture/CMakeLists.txt index c9860a7..bdfb760 100644 --- a/samples/InitTexture/CMakeLists.txt +++ b/samples/InitTexture/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(InitTexture) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES InitTexture.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(InitTexture ) set_target_properties(InitTexture PROPERTIES FOLDER "Samples") -target_compile_definitions(InitTexture PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(InitTexture PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(InitTexture PUBLIC glslang SPIRV) +target_link_libraries(InitTexture PRIVATE utils) diff --git a/samples/InitTexture/InitTexture.cpp b/samples/InitTexture/InitTexture.cpp index d9bf2eb..fa6f4a1 100644 --- a/samples/InitTexture/InitTexture.cpp +++ b/samples/InitTexture/InitTexture.cpp @@ -37,7 +37,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(50, 50)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(50, 50)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -139,19 +139,13 @@ int main(int /*argc*/, char ** /*argv*/) vk::UniqueImageView imageView = device->createImageViewUnique(imageViewCreateInfo); /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/InputAttachment/CMakeLists.txt b/samples/InputAttachment/CMakeLists.txt index 9da7e8a..25f869b 100644 --- a/samples/InputAttachment/CMakeLists.txt +++ b/samples/InputAttachment/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(InputAttachment) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES InputAttachment.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(InputAttachment ) set_target_properties(InputAttachment PROPERTIES FOLDER "Samples") -target_compile_definitions(InputAttachment PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(InputAttachment PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(InputAttachment PUBLIC glslang SPIRV) +target_link_libraries(InputAttachment PRIVATE utils) diff --git a/samples/InputAttachment/InputAttachment.cpp b/samples/InputAttachment/InputAttachment.cpp index 55b3234..99eaf9f 100644 --- a/samples/InputAttachment/InputAttachment.cpp +++ b/samples/InputAttachment/InputAttachment.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "InputAttachment"; static char const* EngineName = "Vulkan.hpp"; @@ -72,7 +73,7 @@ int main(int /*argc*/, char ** /*argv*/) exit(-1); } - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -179,20 +180,14 @@ int main(int /*argc*/, char ** /*argv*/) vk::su::submitAndWait(device, graphicsQueue, commandBuffer); presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer)); - Sleep(1000); - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/InstanceExtensionProperties/InstanceExtensionProperties.cpp b/samples/InstanceExtensionProperties/InstanceExtensionProperties.cpp index b795f5f..50c3f53 100644 --- a/samples/InstanceExtensionProperties/InstanceExtensionProperties.cpp +++ b/samples/InstanceExtensionProperties/InstanceExtensionProperties.cpp @@ -44,12 +44,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/InstanceLayerExtensionProperties/InstanceLayerExtensionProperties.cpp b/samples/InstanceLayerExtensionProperties/InstanceLayerExtensionProperties.cpp index 1116926..5bde276 100644 --- a/samples/InstanceLayerExtensionProperties/InstanceLayerExtensionProperties.cpp +++ b/samples/InstanceLayerExtensionProperties/InstanceLayerExtensionProperties.cpp @@ -83,12 +83,12 @@ int main(int /*argc*/, char ** /*argv*/) } std::cout << std::endl; } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/InstanceLayerProperties/CMakeLists.txt b/samples/InstanceLayerProperties/CMakeLists.txt index 6a3205f..1274745 100644 --- a/samples/InstanceLayerProperties/CMakeLists.txt +++ b/samples/InstanceLayerProperties/CMakeLists.txt @@ -32,5 +32,4 @@ add_executable(InstanceLayerProperties ) set_target_properties(InstanceLayerProperties PROPERTIES FOLDER "Samples") -target_link_libraries(InstanceLayerProperties PUBLIC "$ENV{VULKAN_SDK}/Lib/vulkan-1.lib" -) +target_link_libraries(InstanceLayerProperties "${Vulkan_LIBRARIES}") diff --git a/samples/InstanceLayerProperties/InstanceLayerProperties.cpp b/samples/InstanceLayerProperties/InstanceLayerProperties.cpp index f5bb84f..1b061fb 100644 --- a/samples/InstanceLayerProperties/InstanceLayerProperties.cpp +++ b/samples/InstanceLayerProperties/InstanceLayerProperties.cpp @@ -48,12 +48,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/InstanceVersion/InstanceVersion.cpp b/samples/InstanceVersion/InstanceVersion.cpp index 0971fab..5bb9b9a 100644 --- a/samples/InstanceVersion/InstanceVersion.cpp +++ b/samples/InstanceVersion/InstanceVersion.cpp @@ -38,12 +38,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/MultipleSets/CMakeLists.txt b/samples/MultipleSets/CMakeLists.txt index dc04080..2633dd4 100644 --- a/samples/MultipleSets/CMakeLists.txt +++ b/samples/MultipleSets/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(MultipleSets) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES MultipleSets.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(MultipleSets ) set_target_properties(MultipleSets PROPERTIES FOLDER "Samples") -target_compile_definitions(MultipleSets PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(MultipleSets PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(MultipleSets PUBLIC glslang SPIRV) +target_link_libraries(MultipleSets PRIVATE utils) diff --git a/samples/MultipleSets/MultipleSets.cpp b/samples/MultipleSets/MultipleSets.cpp index b1c4d39..15ce1d9 100644 --- a/samples/MultipleSets/MultipleSets.cpp +++ b/samples/MultipleSets/MultipleSets.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "MultipleSets"; static char const* EngineName = "Vulkan.hpp"; @@ -87,7 +88,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -197,21 +198,16 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/OcclusionQuery/CMakeLists.txt b/samples/OcclusionQuery/CMakeLists.txt index 5609f23..8c89a4e 100644 --- a/samples/OcclusionQuery/CMakeLists.txt +++ b/samples/OcclusionQuery/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(OcclusionQuery) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES OcclusionQuery.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(OcclusionQuery ) set_target_properties(OcclusionQuery PROPERTIES FOLDER "Samples") -target_compile_definitions(OcclusionQuery PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(OcclusionQuery PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(OcclusionQuery PUBLIC glslang SPIRV) +target_link_libraries(OcclusionQuery PRIVATE utils) diff --git a/samples/OcclusionQuery/OcclusionQuery.cpp b/samples/OcclusionQuery/OcclusionQuery.cpp index 0441c4e..b94e161 100644 --- a/samples/OcclusionQuery/OcclusionQuery.cpp +++ b/samples/OcclusionQuery/OcclusionQuery.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "OcclusionQuery"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -155,22 +156,16 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PhysicalDeviceExtensions/CMakeLists.txt b/samples/PhysicalDeviceExtensions/CMakeLists.txt index 773b1de..ca760d3 100644 --- a/samples/PhysicalDeviceExtensions/CMakeLists.txt +++ b/samples/PhysicalDeviceExtensions/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PhysicalDeviceExtensions) set(HEADERS - ../utils/utils.hpp ) set(SOURCES PhysicalDeviceExtensions.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(PhysicalDeviceExtensions ) set_target_properties(PhysicalDeviceExtensions PROPERTIES FOLDER "Samples") -target_compile_definitions(PhysicalDeviceExtensions PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(PhysicalDeviceExtensions PRIVATE utils) diff --git a/samples/PhysicalDeviceExtensions/PhysicalDeviceExtensions.cpp b/samples/PhysicalDeviceExtensions/PhysicalDeviceExtensions.cpp index 0f1557c..d9f1702 100644 --- a/samples/PhysicalDeviceExtensions/PhysicalDeviceExtensions.cpp +++ b/samples/PhysicalDeviceExtensions/PhysicalDeviceExtensions.cpp @@ -53,12 +53,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PhysicalDeviceFeatures/CMakeLists.txt b/samples/PhysicalDeviceFeatures/CMakeLists.txt index 6488938..f35d0df 100644 --- a/samples/PhysicalDeviceFeatures/CMakeLists.txt +++ b/samples/PhysicalDeviceFeatures/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PhysicalDeviceFeatures) set(HEADERS - ../utils/utils.hpp ) set(SOURCES PhysicalDeviceFeatures.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(PhysicalDeviceFeatures ) set_target_properties(PhysicalDeviceFeatures PROPERTIES FOLDER "Samples") -target_compile_definitions(PhysicalDeviceFeatures PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(PhysicalDeviceFeatures PRIVATE utils) diff --git a/samples/PhysicalDeviceFeatures/PhysicalDeviceFeatures.cpp b/samples/PhysicalDeviceFeatures/PhysicalDeviceFeatures.cpp index 381856d..5d0d984 100644 --- a/samples/PhysicalDeviceFeatures/PhysicalDeviceFeatures.cpp +++ b/samples/PhysicalDeviceFeatures/PhysicalDeviceFeatures.cpp @@ -565,12 +565,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PhysicalDeviceGroups/CMakeLists.txt b/samples/PhysicalDeviceGroups/CMakeLists.txt index 47ab00a..127c715 100644 --- a/samples/PhysicalDeviceGroups/CMakeLists.txt +++ b/samples/PhysicalDeviceGroups/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PhysicalDeviceGroups) set(HEADERS - ../utils/utils.hpp ) set(SOURCES PhysicalDeviceGroups.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(PhysicalDeviceGroups ) set_target_properties(PhysicalDeviceGroups PROPERTIES FOLDER "Samples") -target_compile_definitions(PhysicalDeviceGroups PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(PhysicalDeviceGroups PRIVATE utils) diff --git a/samples/PhysicalDeviceGroups/PhysicalDeviceGroups.cpp b/samples/PhysicalDeviceGroups/PhysicalDeviceGroups.cpp index cf5a5f1..bf03186 100644 --- a/samples/PhysicalDeviceGroups/PhysicalDeviceGroups.cpp +++ b/samples/PhysicalDeviceGroups/PhysicalDeviceGroups.cpp @@ -76,12 +76,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PhysicalDeviceMemoryProperties/CMakeLists.txt b/samples/PhysicalDeviceMemoryProperties/CMakeLists.txt index 1a62f09..da07df4 100644 --- a/samples/PhysicalDeviceMemoryProperties/CMakeLists.txt +++ b/samples/PhysicalDeviceMemoryProperties/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PhysicalDeviceMemoryProperties) set(HEADERS - ../utils/utils.hpp ) set(SOURCES PhysicalDeviceMemoryProperties.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(PhysicalDeviceMemoryProperties ) set_target_properties(PhysicalDeviceMemoryProperties PROPERTIES FOLDER "Samples") -target_compile_definitions(PhysicalDeviceMemoryProperties PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(PhysicalDeviceMemoryProperties PRIVATE utils) diff --git a/samples/PhysicalDeviceMemoryProperties/PhysicalDeviceMemoryProperties.cpp b/samples/PhysicalDeviceMemoryProperties/PhysicalDeviceMemoryProperties.cpp index 7052571..b3fcf81 100644 --- a/samples/PhysicalDeviceMemoryProperties/PhysicalDeviceMemoryProperties.cpp +++ b/samples/PhysicalDeviceMemoryProperties/PhysicalDeviceMemoryProperties.cpp @@ -87,12 +87,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PhysicalDeviceProperties/CMakeLists.txt b/samples/PhysicalDeviceProperties/CMakeLists.txt index 2cb995a..199f765 100644 --- a/samples/PhysicalDeviceProperties/CMakeLists.txt +++ b/samples/PhysicalDeviceProperties/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PhysicalDeviceProperties) set(HEADERS - ../utils/utils.hpp ) set(SOURCES PhysicalDeviceProperties.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(PhysicalDeviceProperties ) set_target_properties(PhysicalDeviceProperties PROPERTIES FOLDER "Samples") -target_compile_definitions(PhysicalDeviceProperties PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(PhysicalDeviceProperties PRIVATE utils) diff --git a/samples/PhysicalDeviceProperties/PhysicalDeviceProperties.cpp b/samples/PhysicalDeviceProperties/PhysicalDeviceProperties.cpp index 9a796d2..37da09e 100644 --- a/samples/PhysicalDeviceProperties/PhysicalDeviceProperties.cpp +++ b/samples/PhysicalDeviceProperties/PhysicalDeviceProperties.cpp @@ -650,12 +650,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PhysicalDeviceQueueFamilyProperties/CMakeLists.txt b/samples/PhysicalDeviceQueueFamilyProperties/CMakeLists.txt index 93582d3..b63987b 100644 --- a/samples/PhysicalDeviceQueueFamilyProperties/CMakeLists.txt +++ b/samples/PhysicalDeviceQueueFamilyProperties/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PhysicalDeviceQueueFamilyProperties) set(HEADERS - ../utils/utils.hpp ) set(SOURCES PhysicalDeviceQueueFamilyProperties.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(PhysicalDeviceQueueFamilyProperties ) set_target_properties(PhysicalDeviceQueueFamilyProperties PROPERTIES FOLDER "Samples") -target_compile_definitions(PhysicalDeviceQueueFamilyProperties PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(PhysicalDeviceQueueFamilyProperties PRIVATE utils) diff --git a/samples/PhysicalDeviceQueueFamilyProperties/PhysicalDeviceQueueFamilyProperties.cpp b/samples/PhysicalDeviceQueueFamilyProperties/PhysicalDeviceQueueFamilyProperties.cpp index b70dd4c..68e470f 100644 --- a/samples/PhysicalDeviceQueueFamilyProperties/PhysicalDeviceQueueFamilyProperties.cpp +++ b/samples/PhysicalDeviceQueueFamilyProperties/PhysicalDeviceQueueFamilyProperties.cpp @@ -72,12 +72,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PipelineCache/CMakeLists.txt b/samples/PipelineCache/CMakeLists.txt index 624ae0a..df70201 100644 --- a/samples/PipelineCache/CMakeLists.txt +++ b/samples/PipelineCache/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PipelineCache) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES PipelineCache.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(PipelineCache ) set_target_properties(PipelineCache PROPERTIES FOLDER "Samples") -target_compile_definitions(PipelineCache PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(PipelineCache PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(PipelineCache PUBLIC glslang SPIRV) +target_link_libraries(PipelineCache PRIVATE utils) diff --git a/samples/PipelineCache/PipelineCache.cpp b/samples/PipelineCache/PipelineCache.cpp index 63325f1..d02d34f 100644 --- a/samples/PipelineCache/PipelineCache.cpp +++ b/samples/PipelineCache/PipelineCache.cpp @@ -23,6 +23,7 @@ #include "SPIRV/GlslangToSpv.h" #include #include +#include // For timestamp code (getMilliseconds) #ifdef WIN32 @@ -70,7 +71,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); vk::PhysicalDeviceProperties properties = physicalDevice.getProperties(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -130,7 +131,7 @@ int main(int /*argc*/, char ** /*argv*/) readCacheStream.seekg(0, readCacheStream.beg); // Allocate memory to hold the initial cache data - startCacheData = new char[startCacheSize]; + startCacheData = (char *)std::malloc(startCacheSize); // Read the data into our buffer readCacheStream.read(startCacheData, startCacheSize); @@ -294,7 +295,7 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); // Store away the cache that we've populated. This could conceivably happen // earlier, depends on when the pipeline cache stops being populated @@ -316,19 +317,13 @@ int main(int /*argc*/, char ** /*argv*/) } /* VULKAN_KEY_END */ - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PipelineDerivative/CMakeLists.txt b/samples/PipelineDerivative/CMakeLists.txt index 9a5f984..4ab0117 100644 --- a/samples/PipelineDerivative/CMakeLists.txt +++ b/samples/PipelineDerivative/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PipelineDerivative) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES PipelineDerivative.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(PipelineDerivative ) set_target_properties(PipelineDerivative PROPERTIES FOLDER "Samples") -target_compile_definitions(PipelineDerivative PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(PipelineDerivative PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(PipelineDerivative PUBLIC glslang SPIRV) +target_link_libraries(PipelineDerivative PRIVATE utils) \ No newline at end of file diff --git a/samples/PipelineDerivative/PipelineDerivative.cpp b/samples/PipelineDerivative/PipelineDerivative.cpp index 14fbf00..c281ce9 100644 --- a/samples/PipelineDerivative/PipelineDerivative.cpp +++ b/samples/PipelineDerivative/PipelineDerivative.cpp @@ -21,6 +21,7 @@ #include "../utils/utils.hpp" #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" +#include static char const* AppName = "PipelineDerivative"; static char const* EngineName = "Vulkan.hpp"; @@ -36,7 +37,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -116,7 +117,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::ColorComponentFlags colorComponentFlags(vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA); vk::PipelineColorBlendAttachmentState pipelineColorBlendAttachmentState(false, vk::BlendFactor::eZero, vk::BlendFactor::eZero, vk::BlendOp::eAdd, vk::BlendFactor::eZero, vk::BlendFactor::eZero, vk::BlendOp::eAdd, colorComponentFlags); - vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo(vk::PipelineColorBlendStateCreateFlags(), false, vk::LogicOp::eNoOp, 1, &pipelineColorBlendAttachmentState, { { (1.0f, 1.0f, 1.0f, 1.0f) } }); + vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo(vk::PipelineColorBlendStateCreateFlags(), false, vk::LogicOp::eNoOp, 1, &pipelineColorBlendAttachmentState, { { 1.0f, 1.0f, 1.0f, 1.0f } }); vk::DynamicState dynamicStates[2] = { vk::DynamicState::eViewport, vk::DynamicState::eScissor }; vk::PipelineDynamicStateCreateInfo pipelineDynamicStateCreateInfo(vk::PipelineDynamicStateCreateFlags(), 2, dynamicStates); @@ -191,20 +192,14 @@ void main() ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PushConstants/CMakeLists.txt b/samples/PushConstants/CMakeLists.txt index e18dfb2..60ff0f8 100644 --- a/samples/PushConstants/CMakeLists.txt +++ b/samples/PushConstants/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PushConstants) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES PushConstants.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(PushConstants ) set_target_properties(PushConstants PROPERTIES FOLDER "Samples") -target_compile_definitions(PushConstants PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(PushConstants PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(PushConstants PUBLIC glslang SPIRV) +target_link_libraries(PushConstants PRIVATE utils) diff --git a/samples/PushConstants/PushConstants.cpp b/samples/PushConstants/PushConstants.cpp index 95d4345..25b3b84 100644 --- a/samples/PushConstants/PushConstants.cpp +++ b/samples/PushConstants/PushConstants.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "PushConstants"; static char const* EngineName = "Vulkan.hpp"; @@ -78,7 +79,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -181,20 +182,14 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/PushDescriptors/CMakeLists.txt b/samples/PushDescriptors/CMakeLists.txt index 4c843b5..0afa80b 100644 --- a/samples/PushDescriptors/CMakeLists.txt +++ b/samples/PushDescriptors/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(PushDescriptors) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES PushDescriptors.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(PushDescriptors ) set_target_properties(PushDescriptors PROPERTIES FOLDER "Samples") -target_compile_definitions(PushDescriptors PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(PushDescriptors PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(PushDescriptors PUBLIC glslang SPIRV) +target_link_libraries(PushDescriptors PRIVATE utils) \ No newline at end of file diff --git a/samples/PushDescriptors/PushDescriptors.cpp b/samples/PushDescriptors/PushDescriptors.cpp index ff092b1..864a12b 100644 --- a/samples/PushDescriptors/PushDescriptors.cpp +++ b/samples/PushDescriptors/PushDescriptors.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "PushDescriptors"; static char const* EngineName = "Vulkan.hpp"; @@ -68,7 +69,7 @@ int main(int /*argc*/, char ** /*argv*/) std::vector deviceExtensions = vk::su::getDeviceExtensions(); deviceExtensions.push_back(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, deviceExtensions); @@ -136,7 +137,7 @@ int main(int /*argc*/, char ** /*argv*/) }; // this call is from an extension and needs the dynamic dispatcher !! - commandBuffer->pushDescriptorSetKHR(vk::PipelineBindPoint::eGraphics, *pipelineLayout, 0, { 2, writeDescriptorSets }, vk::DispatchLoaderDynamic(*instance, *device)); + commandBuffer->pushDescriptorSetKHR(vk::PipelineBindPoint::eGraphics, *pipelineLayout, 0, {2, writeDescriptorSets}); commandBuffer->bindVertexBuffers(0, *vertexBufferData.buffer, {0}); commandBuffer->setViewport(0, vk::Viewport(0.0f, 0.0f, static_cast(surfaceData.extent.width), static_cast(surfaceData.extent.height), 0.0f, 1.0f)); @@ -156,23 +157,18 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/RayTracing/CMakeLists.txt b/samples/RayTracing/CMakeLists.txt index 604ab88..9770df2 100644 --- a/samples/RayTracing/CMakeLists.txt +++ b/samples/RayTracing/CMakeLists.txt @@ -18,16 +18,11 @@ project(RayTracing) set(HEADERS CameraManipulator.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES CameraManipulator.cpp RayTracing.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -39,17 +34,10 @@ add_executable(RayTracing ) set_target_properties(RayTracing PROPERTIES FOLDER "Samples") -target_compile_definitions(RayTracing PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(RayTracing PRIVATE utils) target_include_directories(RayTracing PUBLIC - ${CMAKE_SOURCE_DIR}/glslang - ${CMAKE_SOURCE_DIR}/glfw/include ${CMAKE_SOURCE_DIR}/samples/RayTracing/common ${CMAKE_SOURCE_DIR}/samples/RayTracing/vulkannv ${CMAKE_SOURCE_DIR}/stb ${CMAKE_SOURCE_DIR}/tinyobjloader ) - -target_link_libraries(RayTracing PUBLIC glslang SPIRV - legacy_stdio_definitions.lib - ${CMAKE_SOURCE_DIR}/builds/VS2017_64/glfw/src/Debug/glfw3.lib - ) diff --git a/samples/RayTracing/CameraManipulator.hpp b/samples/RayTracing/CameraManipulator.hpp index 42d25bd..560fe72 100644 --- a/samples/RayTracing/CameraManipulator.hpp +++ b/samples/RayTracing/CameraManipulator.hpp @@ -29,7 +29,7 @@ namespace vk enum class Mode { Examine, Fly, Walk, Trackball }; enum class MouseButton { None, Left, Middle, Right }; enum class ModifierFlagBits { Shift = 1, Ctrl = 2, Alt = 4 }; - using ModifierFlags = vk::Flags; + using ModifierFlags = vk::Flags; public: CameraManipulator(); diff --git a/samples/RayTracing/RayTracing.cpp b/samples/RayTracing/RayTracing.cpp index 1d57910..4cac0c6 100644 --- a/samples/RayTracing/RayTracing.cpp +++ b/samples/RayTracing/RayTracing.cpp @@ -31,8 +31,8 @@ #include #include "CameraManipulator.hpp" -#include "..\..\utils\shaders.hpp" -#include "..\..\utils\utils.hpp" +#include "../utils/shaders.hpp" +#include "../utils/utils.hpp" #include "SPIRV/GlslangToSpv.h" static char const* AppName = "RayTracing"; @@ -939,7 +939,7 @@ int main(int /*argc*/, char** /*argv*/) std::array clearValues; clearValues[0].color = vk::ClearColorValue(std::array({0.2f, 0.2f, 0.2f, 0.2f})); - clearValues[1].depthStencil = {1.0f, 0}; + clearValues[1].depthStencil = vk::ClearDepthStencilValue(1.0f, 0); // Main loop uint32_t frameIndex = 0; @@ -1067,12 +1067,12 @@ int main(int /*argc*/, char** /*argv*/) glfwDestroyWindow(window); glfwTerminate(); } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/SecondaryCommandBuffer/CMakeLists.txt b/samples/SecondaryCommandBuffer/CMakeLists.txt index f22eabe..dcaea04 100644 --- a/samples/SecondaryCommandBuffer/CMakeLists.txt +++ b/samples/SecondaryCommandBuffer/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(SecondaryCommandBuffer) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES SecondaryCommandBuffer.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(SecondaryCommandBuffer ) set_target_properties(SecondaryCommandBuffer PROPERTIES FOLDER "Samples") -target_compile_definitions(SecondaryCommandBuffer PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(SecondaryCommandBuffer PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(SecondaryCommandBuffer PUBLIC glslang SPIRV) +target_link_libraries(SecondaryCommandBuffer PRIVATE utils) diff --git a/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp b/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp index ca7b7ed..a54edaf 100644 --- a/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp +++ b/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "SecondaryCommandBuffer"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -159,23 +160,18 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/SeparateImageSampler/CMakeLists.txt b/samples/SeparateImageSampler/CMakeLists.txt index d4760bc..b70993d 100644 --- a/samples/SeparateImageSampler/CMakeLists.txt +++ b/samples/SeparateImageSampler/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(SeparateImageSampler) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES SeparateImageSampler.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(SeparateImageSampler ) set_target_properties(SeparateImageSampler PROPERTIES FOLDER "Samples") -target_compile_definitions(SeparateImageSampler PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(SeparateImageSampler PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(SeparateImageSampler PUBLIC glslang SPIRV) +target_link_libraries(SeparateImageSampler PRIVATE utils) diff --git a/samples/SeparateImageSampler/SeparateImageSampler.cpp b/samples/SeparateImageSampler/SeparateImageSampler.cpp index 216905c..f0f246b 100644 --- a/samples/SeparateImageSampler/SeparateImageSampler.cpp +++ b/samples/SeparateImageSampler/SeparateImageSampler.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "SeparateImageSampler"; static char const* EngineName = "Vulkan.hpp"; @@ -67,7 +68,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -128,7 +129,6 @@ int main(int /*argc*/, char ** /*argv*/) // Create pipeline layout vk::UniquePipelineLayout pipelineLayout = device->createPipelineLayoutUnique(vk::PipelineLayoutCreateInfo(vk::PipelineLayoutCreateFlags(), 1, &(*descriptorSetLayout))); - VkPipelineLayoutCreateInfo pipelineLayoutCreateInfo[1] = {}; // Create a single pool to contain data for the descriptor set std::array poolSizes = @@ -196,21 +196,16 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/SurfaceCapabilities/CMakeLists.txt b/samples/SurfaceCapabilities/CMakeLists.txt index 019e6db..3614a27 100644 --- a/samples/SurfaceCapabilities/CMakeLists.txt +++ b/samples/SurfaceCapabilities/CMakeLists.txt @@ -17,21 +17,23 @@ cmake_minimum_required(VERSION 3.2) project(SurfaceCapabilities) set(HEADERS - ../utils/utils.hpp ) set(SOURCES SurfaceCapabilities.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) source_group(sources FILES ${SOURCES}) -add_executable(SurfaceCapabilities - ${HEADERS} - ${SOURCES} -) +# Win32 exclusive vk::SurfaceCapabilitiesFullScreenExclusiveEXT is used +if(WIN32) -set_target_properties(SurfaceCapabilities PROPERTIES FOLDER "Samples") -target_compile_definitions(SurfaceCapabilities PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) + add_executable(SurfaceCapabilities + ${HEADERS} + ${SOURCES} + ) + set_target_properties(SurfaceCapabilities PROPERTIES FOLDER "Samples") + target_link_libraries(SurfaceCapabilities PRIVATE utils) + +endif() \ No newline at end of file diff --git a/samples/SurfaceCapabilities/SurfaceCapabilities.cpp b/samples/SurfaceCapabilities/SurfaceCapabilities.cpp index 2aa0c58..4a058d8 100644 --- a/samples/SurfaceCapabilities/SurfaceCapabilities.cpp +++ b/samples/SurfaceCapabilities/SurfaceCapabilities.cpp @@ -68,7 +68,7 @@ int main(int /*argc*/, char ** /*argv*/) // enumerate the physicalDevices std::vector physicalDevices = instance->enumeratePhysicalDevices(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); /* VULKAN_KEY_START */ @@ -116,7 +116,7 @@ int main(int /*argc*/, char ** /*argv*/) { vk::SurfaceProtectedCapabilitiesKHR surfaceProtectedCapabilities = surfaceCapabilities2.get(); std::cout << "\tSurfaceProtectedCapabilitiesKHR:\n"; - std::cout << "\t\t" << "setSupportsProtected = " << static_cast(surfaceProtectedCapabilities.setSupportsProtected) << "\n"; + std::cout << "\t\t" << "supportsProtected = " << static_cast(surfaceProtectedCapabilities.supportsProtected) << "\n"; std::cout << "\n"; } } @@ -129,12 +129,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/SurfaceFormats/CMakeLists.txt b/samples/SurfaceFormats/CMakeLists.txt index c10b298..a6630bb 100644 --- a/samples/SurfaceFormats/CMakeLists.txt +++ b/samples/SurfaceFormats/CMakeLists.txt @@ -17,12 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(SurfaceFormats) set(HEADERS - ../utils/utils.hpp ) set(SOURCES SurfaceFormats.cpp - ../utils/utils.cpp ) source_group(headers FILES ${HEADERS}) @@ -34,4 +32,4 @@ add_executable(SurfaceFormats ) set_target_properties(SurfaceFormats PROPERTIES FOLDER "Samples") -target_compile_definitions(SurfaceFormats PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) +target_link_libraries(SurfaceFormats PRIVATE utils) diff --git a/samples/SurfaceFormats/SurfaceFormats.cpp b/samples/SurfaceFormats/SurfaceFormats.cpp index 4760048..a579e65 100644 --- a/samples/SurfaceFormats/SurfaceFormats.cpp +++ b/samples/SurfaceFormats/SurfaceFormats.cpp @@ -36,7 +36,7 @@ int main(int /*argc*/, char ** /*argv*/) // enumerate the physicalDevices std::vector physicalDevices = instance->enumeratePhysicalDevices(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); /* VULKAN_KEY_START */ @@ -56,12 +56,12 @@ int main(int /*argc*/, char ** /*argv*/) /* VULKAN_KEY_END */ } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/Template/CMakeLists.txt b/samples/Template/CMakeLists.txt index 5b0acc1..e1d1297 100644 --- a/samples/Template/CMakeLists.txt +++ b/samples/Template/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(Template) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES Template.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(Template ) set_target_properties(Template PROPERTIES FOLDER "Samples") -target_compile_definitions(Template PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(Template PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(Template PUBLIC glslang SPIRV) +target_link_libraries(Template PRIVATE utils) diff --git a/samples/Template/Template.cpp b/samples/Template/Template.cpp index 5eb4e93..28d28f7 100644 --- a/samples/Template/Template.cpp +++ b/samples/Template/Template.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "Template"; static char const* EngineName = "Vulkan.hpp"; @@ -37,7 +38,7 @@ int main(int /*argc*/, char ** /*argv*/) vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -119,21 +120,16 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/TexelBuffer/CMakeLists.txt b/samples/TexelBuffer/CMakeLists.txt index 77b5e6f..8168e42 100644 --- a/samples/TexelBuffer/CMakeLists.txt +++ b/samples/TexelBuffer/CMakeLists.txt @@ -17,18 +17,10 @@ cmake_minimum_required(VERSION 3.2) project(TexelBuffer) set(HEADERS - ../utils/geometries.hpp - ../utils/math.hpp - ../utils/shaders.hpp - ../utils/utils.hpp ) set(SOURCES TexelBuffer.cpp - ../utils/math.cpp - ../utils/shaders.cpp - ../utils/utils.cpp - ../../glslang/StandAlone/ResourceLimits.cpp ) source_group(headers FILES ${HEADERS}) @@ -40,6 +32,4 @@ add_executable(TexelBuffer ) set_target_properties(TexelBuffer PROPERTIES FOLDER "Samples") -target_compile_definitions(TexelBuffer PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) -target_include_directories(TexelBuffer PUBLIC ${CMAKE_SOURCE_DIR}/glslang) -target_link_libraries(TexelBuffer PUBLIC glslang SPIRV) +target_link_libraries(TexelBuffer PRIVATE utils) diff --git a/samples/TexelBuffer/TexelBuffer.cpp b/samples/TexelBuffer/TexelBuffer.cpp index f473539..01b8ec7 100644 --- a/samples/TexelBuffer/TexelBuffer.cpp +++ b/samples/TexelBuffer/TexelBuffer.cpp @@ -22,6 +22,7 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" #include +#include static char const* AppName = "TexelBuffer"; static char const* EngineName = "Vulkan.hpp"; @@ -79,7 +80,7 @@ int main(int /*argc*/, char ** /*argv*/) exit(-1); } - vk::su::SurfaceData surfaceData(instance, AppName, AppName, vk::Extent2D(500, 500)); + vk::su::SurfaceData surfaceData(instance, AppName, vk::Extent2D(500, 500)); std::pair graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex(physicalDevice, *surfaceData.surface); vk::UniqueDevice device = vk::su::createDevice(physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions()); @@ -153,23 +154,18 @@ int main(int /*argc*/, char ** /*argv*/) ; presentQueue.presentKHR(vk::PresentInfoKHR(0, nullptr, 1, &swapChainData.swapChain.get(), ¤tBuffer.value)); - Sleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); /* VULKAN_KEY_END */ device->waitIdle(); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - DestroyWindow(surfaceData.window); -#else -#pragma error "unhandled platform" -#endif } - catch (vk::SystemError err) + catch (vk::SystemError& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } - catch (std::runtime_error err) + catch (std::runtime_error& err) { std::cout << "std::runtime_error: " << err.what() << std::endl; exit(-1); diff --git a/samples/utils/CMakeLists.txt b/samples/utils/CMakeLists.txt new file mode 100644 index 0000000..a3f22f7 --- /dev/null +++ b/samples/utils/CMakeLists.txt @@ -0,0 +1,43 @@ +# Copyright(c) 2020, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cmake_minimum_required(VERSION 3.2) + +project(utils) + +set(HEADERS + math.hpp + shaders.hpp + utils.hpp +) + +set(SOURCES + math.cpp + shaders.cpp + utils.cpp +) + +source_group(headers FILES ${HEADERS}) +source_group(sources FILES ${SOURCES}) + +add_library(utils + ${SOURCES} + ${HEADERS} +) + +target_link_libraries(utils PUBLIC glfw) +target_link_libraries(utils PUBLIC glslang) +target_link_libraries(utils PUBLIC glslang-default-resource-limits) +target_link_libraries(utils PUBLIC SPIRV) +target_compile_definitions(utils PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) \ No newline at end of file diff --git a/samples/utils/utils.cpp b/samples/utils/utils.cpp index 162a31d..22f209a 100644 --- a/samples/utils/utils.cpp +++ b/samples/utils/utils.cpp @@ -154,7 +154,7 @@ namespace vk vk::PipelineColorBlendAttachmentState pipelineColorBlendAttachmentState(false, vk::BlendFactor::eZero, vk::BlendFactor::eZero, vk::BlendOp::eAdd, vk::BlendFactor::eZero, vk::BlendFactor::eZero, vk::BlendOp::eAdd, colorComponentFlags); vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo(vk::PipelineColorBlendStateCreateFlags(), false, vk::LogicOp::eNoOp, 1, &pipelineColorBlendAttachmentState, - { { (1.0f, 1.0f, 1.0f, 1.0f) } }); + { { 1.0f, 1.0f, 1.0f, 1.0f } }); vk::DynamicState dynamicStates[2] = { vk::DynamicState::eViewport, vk::DynamicState::eScissor }; vk::PipelineDynamicStateCreateInfo pipelineDynamicStateCreateInfo(vk::PipelineDynamicStateCreateFlags(), 2, dynamicStates); @@ -608,7 +608,7 @@ namespace vk bufferInfos.reserve(bufferData.size()); std::vector writeDescriptorSets; - writeDescriptorSets.reserve(bufferData.size() + textureData.empty() ? 0 : 1); + writeDescriptorSets.reserve(bufferData.size() + (textureData.empty() ? 0 : 1)); uint32_t dstBinding = bindingOffset; for (auto const& bd : bufferData) { @@ -666,15 +666,16 @@ namespace vk imageView = device->createImageViewUnique(imageViewCreateInfo); } - SurfaceData::SurfaceData(vk::UniqueInstance &instance, std::string const& className, std::string const& windowName, vk::Extent2D const& extent_) + SurfaceData::SurfaceData(vk::UniqueInstance &instance, std::string const &windowName, vk::Extent2D const &extent_) : extent(extent_) + , window(vk::su::createWindow(windowName, extent)) { -#if defined(VK_USE_PLATFORM_WIN32_KHR) - window = vk::su::initializeWindow(className.c_str(), windowName.c_str(), extent.width, extent.height); - surface = instance->createWin32SurfaceKHRUnique(vk::Win32SurfaceCreateInfoKHR(vk::Win32SurfaceCreateFlagsKHR(), GetModuleHandle(nullptr), window)); -#else -#pragma error "unhandled platform" -#endif + VkSurfaceKHR _surface; + VkResult err = glfwCreateWindowSurface(instance.get(), window.handle, nullptr, &_surface); + if (err != VK_SUCCESS) + throw std::runtime_error("Failed to create window!"); + vk::ObjectDestroy _deleter(instance.get()); + surface = vk::UniqueSurfaceKHR(_surface, _deleter); } SwapChainData::SwapChainData(vk::PhysicalDevice const& physicalDevice, vk::UniqueDevice const& device, vk::SurfaceKHR const& surface, vk::Extent2D const& extent, vk::ImageUsageFlags usage, @@ -825,56 +826,54 @@ namespace vk memcpy(m_data, data, VK_UUID_SIZE * sizeof(uint8_t)); } -#if defined(VK_USE_PLATFORM_WIN32_KHR) - LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) + WindowData::WindowData(GLFWwindow *wnd, std::string const &name, vk::Extent2D const &extent) + : handle{wnd} + , name{name} + , extent{extent} { - switch (uMsg) - { - case WM_CLOSE: - PostQuitMessage(0); - break; - default: - break; - } - return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } - HWND initializeWindow(std::string const& className, std::string const& windowName, LONG width, LONG height) + WindowData::WindowData(WindowData &&other) + : handle{} + , name{} + , extent{} { - WNDCLASSEX windowClass; - memset(&windowClass, 0, sizeof(WNDCLASSEX)); - - HINSTANCE instance = GetModuleHandle(nullptr); - windowClass.cbSize = sizeof(WNDCLASSEX); - windowClass.style = CS_HREDRAW | CS_VREDRAW; - windowClass.lpfnWndProc = WindowProc; - windowClass.hInstance = instance; - windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); - windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); - windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); - windowClass.lpszClassName = className.c_str(); - windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); - - if (!RegisterClassEx(&windowClass)) - { - throw std::runtime_error("Failed to register WNDCLASSEX -> terminating"); - } - - RECT windowRect = { 0, 0, width, height }; - AdjustWindowRect(&windowRect, WS_OVERLAPPEDWINDOW, FALSE); - - HWND window = CreateWindowEx(0, className.c_str(), windowName.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_SYSMENU, 100, 100, windowRect.right - windowRect.left, - windowRect.bottom - windowRect.top, nullptr, nullptr, instance, nullptr); - if (!window) - { - throw std::runtime_error("Failed to create window -> terminating"); - } - - return window; + std::swap(handle, other.handle); + std::swap(name, other.name); + std::swap(extent, other.extent); + } + + WindowData::~WindowData() noexcept + { + glfwDestroyWindow(handle); + } + + WindowData createWindow(std::string const &windowName, vk::Extent2D const &extent) + { + struct glfwContext + { + glfwContext() + { + glfwInit(); + glfwSetErrorCallback([](int error, const char *msg) { + std::cerr << "glfw: " + << "(" << error << ") " << msg << std::endl; + }); + } + + ~glfwContext() + { + glfwTerminate(); + } + }; + + static auto glfwCtx = glfwContext(); + (void)glfwCtx; + + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + GLFWwindow *window = glfwCreateWindow(extent.width, extent.height, windowName.c_str(), nullptr, nullptr); + return WindowData(window, windowName, extent); } -#else -#pragma error "unhandled platform" -#endif } } diff --git a/samples/utils/utils.hpp b/samples/utils/utils.hpp index 414bdeb..536ff89 100644 --- a/samples/utils/utils.hpp +++ b/samples/utils/utils.hpp @@ -16,6 +16,10 @@ // #include "vulkan/vulkan.hpp" + +#define GLFW_INCLUDE_NONE +#include + #include #include @@ -25,6 +29,71 @@ namespace vk { const uint64_t FenceTimeout = 100000000; + template + void oneTimeSubmit(vk::UniqueCommandBuffer const& commandBuffer, vk::Queue const& queue, Func const& func) + { + commandBuffer->begin(vk::CommandBufferBeginInfo(vk::CommandBufferUsageFlagBits::eOneTimeSubmit)); + func(commandBuffer); + commandBuffer->end(); + queue.submit(vk::SubmitInfo(0, nullptr, nullptr, 1, &(*commandBuffer)), nullptr); + queue.waitIdle(); + } + + template + void oneTimeSubmit(vk::UniqueDevice const& device, vk::UniqueCommandPool const& commandPool, vk::Queue const& queue, Func const& func) + { + vk::UniqueCommandBuffer commandBuffer = std::move(device->allocateCommandBuffersUnique(vk::CommandBufferAllocateInfo(*commandPool, vk::CommandBufferLevel::ePrimary, 1)).front()); + oneTimeSubmit(commandBuffer, queue, func); + } + + template + void copyToDevice(vk::UniqueDevice const& device, vk::UniqueDeviceMemory const& memory, T const* pData, size_t count, size_t stride = sizeof(T)) + { + assert(sizeof(T) <= stride); + uint8_t* deviceData = static_cast(device->mapMemory(memory.get(), 0, count * stride)); + if (stride == sizeof(T)) + { + memcpy(deviceData, pData, count * sizeof(T)); + } + else + { + for (size_t i = 0; i < count; i++) + { + memcpy(deviceData, &pData[i], sizeof(T)); + deviceData += stride; + } + } + device->unmapMemory(memory.get()); + } + + template + void copyToDevice(vk::UniqueDevice const& device, vk::UniqueDeviceMemory const& memory, T const& data) + { + copyToDevice(device, memory, &data, 1); + } + + template + VULKAN_HPP_INLINE constexpr const T& clamp(const T& v, const T& lo, const T& hi) + { + return v < lo ? lo : hi < v ? hi : v; + } + + void setImageLayout(vk::UniqueCommandBuffer const &commandBuffer, vk::Image image, vk::Format format, vk::ImageLayout oldImageLayout, vk::ImageLayout newImageLayout); + + struct WindowData + { + WindowData(GLFWwindow *wnd, std::string const& name, vk::Extent2D const& extent); + WindowData(const WindowData &) = delete; + WindowData(WindowData &&other); + ~WindowData() noexcept; + + GLFWwindow *handle; + std::string name; + vk::Extent2D extent; + }; + + WindowData createWindow(std::string const &windowName, vk::Extent2D const &extent); + struct BufferData { BufferData(vk::PhysicalDevice const& physicalDevice, vk::UniqueDevice const& device, vk::DeviceSize size, vk::BufferUsageFlags usage, @@ -79,7 +148,7 @@ namespace vk vk::DeviceSize m_size; vk::BufferUsageFlags m_usage; vk::MemoryPropertyFlags m_propertyFlags; -#endif) +#endif }; struct ImageData @@ -100,12 +169,10 @@ namespace vk struct SurfaceData { - SurfaceData(vk::UniqueInstance &instance, std::string const& className, std::string const& windowName, vk::Extent2D const& extent); + SurfaceData(vk::UniqueInstance &instance, std::string const& windowName, vk::Extent2D const& extent); vk::Extent2D extent; -#if defined(VK_USE_PLATFORM_WIN32_KHR) - HWND window; -#endif + WindowData window; vk::UniqueSurfaceKHR surface; }; @@ -214,55 +281,6 @@ namespace vk return static_cast(value); } - template - void copyToDevice(vk::UniqueDevice const& device, vk::UniqueDeviceMemory const& memory, T const* pData, size_t count, size_t stride = sizeof(T)) - { - assert(sizeof(T) <= stride); - uint8_t* deviceData = static_cast(device->mapMemory(memory.get(), 0, count * stride)); - if (stride == sizeof(T)) - { - memcpy(deviceData, pData, count * sizeof(T)); - } - else - { - for (size_t i = 0; i < count; i++) - { - memcpy(deviceData, &pData[i], sizeof(T)); - deviceData += stride; - } - } - device->unmapMemory(memory.get()); - } - - template - void copyToDevice(vk::UniqueDevice const& device, vk::UniqueDeviceMemory const& memory, T const& data) - { - copyToDevice(device, memory, &data, 1); - } - - template - VULKAN_HPP_INLINE constexpr const T& clamp(const T& v, const T& lo, const T& hi) - { - return v < lo ? lo : hi < v ? hi : v; - } - - template - void oneTimeSubmit(vk::UniqueCommandBuffer const& commandBuffer, vk::Queue const& queue, Func const& func) - { - commandBuffer->begin(vk::CommandBufferBeginInfo(vk::CommandBufferUsageFlagBits::eOneTimeSubmit)); - func(commandBuffer); - commandBuffer->end(); - queue.submit(vk::SubmitInfo(0, nullptr, nullptr, 1, &(*commandBuffer)), nullptr); - queue.waitIdle(); - } - - template - void oneTimeSubmit(vk::UniqueDevice const& device, vk::UniqueCommandPool const& commandPool, vk::Queue const& queue, Func const& func) - { - vk::UniqueCommandBuffer commandBuffer = std::move(device->allocateCommandBuffersUnique(vk::CommandBufferAllocateInfo(*commandPool, vk::CommandBufferLevel::ePrimary, 1)).front()); - oneTimeSubmit(commandBuffer, queue, func); - } - vk::UniqueDeviceMemory allocateMemory(vk::UniqueDevice const& device, vk::PhysicalDeviceMemoryProperties const& memoryProperties, vk::MemoryRequirements const& memoryRequirements, vk::MemoryPropertyFlags memoryPropertyFlags); bool contains(std::vector const& extensionProperties, std::string const& extensionName); @@ -290,7 +308,6 @@ namespace vk vk::Format pickDepthFormat(vk::PhysicalDevice const& physicalDevice); vk::PresentModeKHR pickPresentMode(std::vector const& presentModes); vk::SurfaceFormatKHR pickSurfaceFormat(std::vector const& formats); - void setImageLayout(vk::UniqueCommandBuffer const& commandBuffer, vk::Image image, vk::Format format, vk::ImageLayout oldImageLayout, vk::ImageLayout newImageLayout); void submitAndWait(vk::UniqueDevice &device, vk::Queue queue, vk::UniqueCommandBuffer &commandBuffer); void updateDescriptorSets(vk::UniqueDevice const& device, vk::UniqueDescriptorSet const& descriptorSet, std::vector> const& bufferData, vk::su::TextureData const& textureData, @@ -299,11 +316,6 @@ namespace vk std::vector> const& bufferData, std::vector const& textureData, uint32_t bindingOffset = 0); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - HWND initializeWindow(std::string const& className, std::string const& windowName, LONG width, LONG height); -#else -# error "unhandled platform" -#endif } } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7c833d9..dfd5796 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -17,8 +17,8 @@ cmake_minimum_required(VERSION 3.2) project(Vulkan-Hpp_Tests) -option (TESTS_BUILD_WITH_LOCAL_VULKAN_HPP OFF) -option (TESTS_BUILD_ONLY_DYNAMIC OFF) +option (TESTS_BUILD_WITH_LOCAL_VULKAN_HPP "Build with local Vulkan headers" OFF) +option (TESTS_BUILD_ONLY_DYNAMIC "Build only dynamic" OFF) if (NOT (TESTS_BUILD_ONLY_DYNAMIC AND TESTS_BUILD_WITH_LOCAL_VULKAN_HPP)) find_package(Vulkan REQUIRED)