From 36691e4946367b7d99e1169463679208b9a7dae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20S=C3=BC=C3=9Fenbach?= Date: Tue, 9 Jul 2019 09:25:48 +0200 Subject: [PATCH] Add sample ValidationCache; slightly adjust vk::su::createInstance. (#357) --- samples/05_InitSwapchain/05_InitSwapchain.cpp | 2 +- .../06_InitDepthBuffer/06_InitDepthBuffer.cpp | 2 +- .../10_InitRenderPass/10_InitRenderPass.cpp | 2 +- samples/11_InitShaders/11_InitShaders.cpp | 2 +- .../12_InitFrameBuffers.cpp | 2 +- .../13_InitVertexBuffer.cpp | 2 +- samples/14_InitPipeline/14_InitPipeline.cpp | 2 +- samples/15_DrawCube/15_DrawCube.cpp | 2 +- samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp | 2 +- samples/CopyBlitImage/CopyBlitImage.cpp | 2 +- samples/DrawTexturedCube/DrawTexturedCube.cpp | 2 +- samples/DynamicUniform/DynamicUniform.cpp | 2 +- samples/Events/Events.cpp | 2 +- samples/ImmutableSampler/ImmutableSampler.cpp | 2 +- samples/InitTexture/InitTexture.cpp | 2 +- samples/InputAttachment/InputAttachment.cpp | 2 +- samples/MultipleSets/MultipleSets.cpp | 2 +- samples/OcclusionQuery/OcclusionQuery.cpp | 2 +- samples/PipelineCache/PipelineCache.cpp | 2 +- .../PipelineDerivative/PipelineDerivative.cpp | 33 +------------------ samples/PushConstants/PushConstants.cpp | 2 +- samples/PushDescriptors/PushDescriptors.cpp | 2 +- .../SecondaryCommandBuffer.cpp | 2 +- .../SeparateImageSampler.cpp | 2 +- samples/Template/Template.cpp | 2 +- samples/TexelBuffer/TexelBuffer.cpp | 2 +- samples/utils/utils.cpp | 19 ++++++++--- samples/utils/utils.hpp | 3 +- 28 files changed, 42 insertions(+), 63 deletions(-) diff --git a/samples/05_InitSwapchain/05_InitSwapchain.cpp b/samples/05_InitSwapchain/05_InitSwapchain.cpp index 45a6f19..a3d2ca2 100644 --- a/samples/05_InitSwapchain/05_InitSwapchain.cpp +++ b/samples/05_InitSwapchain/05_InitSwapchain.cpp @@ -26,7 +26,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp b/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp index f6fe038..6b38676 100644 --- a/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp +++ b/samples/06_InitDepthBuffer/06_InitDepthBuffer.cpp @@ -26,7 +26,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/10_InitRenderPass/10_InitRenderPass.cpp b/samples/10_InitRenderPass/10_InitRenderPass.cpp index a8bb2a8..ca5e8a0 100644 --- a/samples/10_InitRenderPass/10_InitRenderPass.cpp +++ b/samples/10_InitRenderPass/10_InitRenderPass.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/11_InitShaders/11_InitShaders.cpp b/samples/11_InitShaders/11_InitShaders.cpp index 7aa5dfe..f4751f1 100644 --- a/samples/11_InitShaders/11_InitShaders.cpp +++ b/samples/11_InitShaders/11_InitShaders.cpp @@ -28,7 +28,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp b/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp index d6ad163..2340e04 100644 --- a/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp +++ b/samples/12_InitFrameBuffers/12_InitFrameBuffers.cpp @@ -26,7 +26,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp b/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp index cd4486a..d8a654a 100644 --- a/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp +++ b/samples/13_InitVertexBuffer/13_InitVertexBuffer.cpp @@ -27,7 +27,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/14_InitPipeline/14_InitPipeline.cpp b/samples/14_InitPipeline/14_InitPipeline.cpp index 42626af..4394ed2 100644 --- a/samples/14_InitPipeline/14_InitPipeline.cpp +++ b/samples/14_InitPipeline/14_InitPipeline.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/15_DrawCube/15_DrawCube.cpp b/samples/15_DrawCube/15_DrawCube.cpp index ec6d78a..c714571 100644 --- a/samples/15_DrawCube/15_DrawCube.cpp +++ b/samples/15_DrawCube/15_DrawCube.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif 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 2c7b456..a7f4be6 100644 --- a/samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp +++ b/samples/16_Vulkan_1_1/16_Vulkan_1_1.cpp @@ -54,7 +54,7 @@ int main(int /*argc*/, char ** /*argv*/) (loader_major_version == desiredMajorVersion && loader_minor_version >= desiredMinorVersion)) { // Create the instance - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions(), desiredVersion); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions(), desiredVersion); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/CopyBlitImage/CopyBlitImage.cpp b/samples/CopyBlitImage/CopyBlitImage.cpp index b21ee54..2898c8b 100644 --- a/samples/CopyBlitImage/CopyBlitImage.cpp +++ b/samples/CopyBlitImage/CopyBlitImage.cpp @@ -25,7 +25,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/DrawTexturedCube/DrawTexturedCube.cpp b/samples/DrawTexturedCube/DrawTexturedCube.cpp index e7f1185..5f5a180 100644 --- a/samples/DrawTexturedCube/DrawTexturedCube.cpp +++ b/samples/DrawTexturedCube/DrawTexturedCube.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/DynamicUniform/DynamicUniform.cpp b/samples/DynamicUniform/DynamicUniform.cpp index 880913a..3c811a6 100644 --- a/samples/DynamicUniform/DynamicUniform.cpp +++ b/samples/DynamicUniform/DynamicUniform.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/Events/Events.cpp b/samples/Events/Events.cpp index 8de9804..92a39db 100644 --- a/samples/Events/Events.cpp +++ b/samples/Events/Events.cpp @@ -26,7 +26,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/ImmutableSampler/ImmutableSampler.cpp b/samples/ImmutableSampler/ImmutableSampler.cpp index a409801..43ecd98 100644 --- a/samples/ImmutableSampler/ImmutableSampler.cpp +++ b/samples/ImmutableSampler/ImmutableSampler.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/InitTexture/InitTexture.cpp b/samples/InitTexture/InitTexture.cpp index a85c7ba..0ae2f2f 100644 --- a/samples/InitTexture/InitTexture.cpp +++ b/samples/InitTexture/InitTexture.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/InputAttachment/InputAttachment.cpp b/samples/InputAttachment/InputAttachment.cpp index cffe001..c32cb2e 100644 --- a/samples/InputAttachment/InputAttachment.cpp +++ b/samples/InputAttachment/InputAttachment.cpp @@ -58,7 +58,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/MultipleSets/MultipleSets.cpp b/samples/MultipleSets/MultipleSets.cpp index 19cdc8c..d10ca27 100644 --- a/samples/MultipleSets/MultipleSets.cpp +++ b/samples/MultipleSets/MultipleSets.cpp @@ -80,7 +80,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/OcclusionQuery/OcclusionQuery.cpp b/samples/OcclusionQuery/OcclusionQuery.cpp index c9fc2fc..611385f 100644 --- a/samples/OcclusionQuery/OcclusionQuery.cpp +++ b/samples/OcclusionQuery/OcclusionQuery.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/PipelineCache/PipelineCache.cpp b/samples/PipelineCache/PipelineCache.cpp index e9bde7a..e3e4a6a 100644 --- a/samples/PipelineCache/PipelineCache.cpp +++ b/samples/PipelineCache/PipelineCache.cpp @@ -62,7 +62,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/PipelineDerivative/PipelineDerivative.cpp b/samples/PipelineDerivative/PipelineDerivative.cpp index cb5a15b..1b6f6bc 100644 --- a/samples/PipelineDerivative/PipelineDerivative.cpp +++ b/samples/PipelineDerivative/PipelineDerivative.cpp @@ -22,37 +22,6 @@ #include "vulkan/vulkan.hpp" #include "SPIRV/GlslangToSpv.h" -// For timestamp code (getMilliseconds) -#ifdef WIN32 -#include -#else -#include -#endif - -typedef unsigned long long timestamp_t; -timestamp_t getMilliseconds() -{ -#ifdef WIN32 - LARGE_INTEGER frequency; - BOOL useQPC = QueryPerformanceFrequency(&frequency); - if (useQPC) - { - LARGE_INTEGER now; - QueryPerformanceCounter(&now); - return (1000LL * now.QuadPart) / frequency.QuadPart; - } - else - { - return GetTickCount(); - } -#else - struct timeval now; - gettimeofday(&now, NULL); - return (now.tv_usec / 1000) + (timestamp_t)now.tv_sec; -#endif -} - - static char const* AppName = "PipelineDerivative"; static char const* EngineName = "Vulkan.hpp"; @@ -60,7 +29,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/PushConstants/PushConstants.cpp b/samples/PushConstants/PushConstants.cpp index 416298d..82beac6 100644 --- a/samples/PushConstants/PushConstants.cpp +++ b/samples/PushConstants/PushConstants.cpp @@ -71,7 +71,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/PushDescriptors/PushDescriptors.cpp b/samples/PushDescriptors/PushDescriptors.cpp index 154dd72..1522b4f 100644 --- a/samples/PushDescriptors/PushDescriptors.cpp +++ b/samples/PushDescriptors/PushDescriptors.cpp @@ -43,7 +43,7 @@ int main(int /*argc*/, char ** /*argv*/) std::vector instanceExtensions = vk::su::getInstanceExtensions(); instanceExtensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, instanceExtensions); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, instanceExtensions); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp b/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp index 56e2ee4..6cf2029 100644 --- a/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp +++ b/samples/SecondaryCommandBuffer/SecondaryCommandBuffer.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/SeparateImageSampler/SeparateImageSampler.cpp b/samples/SeparateImageSampler/SeparateImageSampler.cpp index cb2c45a..70adad4 100644 --- a/samples/SeparateImageSampler/SeparateImageSampler.cpp +++ b/samples/SeparateImageSampler/SeparateImageSampler.cpp @@ -60,7 +60,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/Template/Template.cpp b/samples/Template/Template.cpp index cb4d896..dbd06cc 100644 --- a/samples/Template/Template.cpp +++ b/samples/Template/Template.cpp @@ -30,7 +30,7 @@ int main(int /*argc*/, char ** /*argv*/) { try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/TexelBuffer/TexelBuffer.cpp b/samples/TexelBuffer/TexelBuffer.cpp index b57d6a6..144a446 100644 --- a/samples/TexelBuffer/TexelBuffer.cpp +++ b/samples/TexelBuffer/TexelBuffer.cpp @@ -57,7 +57,7 @@ int main(int /*argc*/, char ** /*argv*/) try { - vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, vk::su::getInstanceExtensions()); + vk::UniqueInstance instance = vk::su::createInstance(AppName, EngineName, {}, vk::su::getInstanceExtensions()); #if !defined(NDEBUG) vk::UniqueDebugReportCallbackEXT debugReportCallback = vk::su::createDebugReportCallback(instance); #endif diff --git a/samples/utils/utils.cpp b/samples/utils/utils.cpp index 65bfdb6..0739883 100644 --- a/samples/utils/utils.cpp +++ b/samples/utils/utils.cpp @@ -169,12 +169,21 @@ namespace vk return device->createGraphicsPipelineUnique(pipelineCache.get(), graphicsPipelineCreateInfo); } - vk::UniqueInstance createInstance(std::string const& appName, std::string const& engineName, std::vector const& extensions, uint32_t apiVersion) + vk::UniqueInstance createInstance(std::string const& appName, std::string const& engineName, std::vector const& layers, std::vector const& extensions, + uint32_t apiVersion) { std::vector enabledLayers; + enabledLayers.reserve(layers.size()); + for (auto const& layer : layers) + { + enabledLayers.push_back(layer.data()); + } #if !defined(NDEBUG) // Enable standard validation layer to find as much errors as possible! - enabledLayers.push_back("VK_LAYER_KHRONOS_validation"); + if (std::find(layers.begin(), layers.end(), "VK_LAYER_KHRONOS_validation") == layers.end()) + { + enabledLayers.push_back("VK_LAYER_KHRONOS_validation"); + } #endif std::vector enabledExtensions; @@ -823,15 +832,15 @@ namespace vk std::ostream& operator<<(std::ostream& os, vk::su::UUID const& uuid) { - os << std::setfill('0'); + os << std::setfill('0') << std::hex; for (int j = 0; j < VK_UUID_SIZE; ++j) { - os << std::hex << std::setw(2) << static_cast(uuid.m_data[j]); + os << std::setw(2) << static_cast(uuid.m_data[j]); if (j == 3 || j == 5 || j == 7 || j == 9) { std::cout << '-'; } } - os << std::setfill(' '); + os << std::setfill(' ') << std::dec; return os; } \ No newline at end of file diff --git a/samples/utils/utils.hpp b/samples/utils/utils.hpp index 55597d1..ebd84f4 100644 --- a/samples/utils/utils.hpp +++ b/samples/utils/utils.hpp @@ -262,7 +262,8 @@ namespace vk std::pair const& fragmentShaderData, uint32_t vertexStride, std::vector> const& vertexInputAttributeFormatOffset, vk::FrontFace frontFace, bool depthBuffered, vk::UniquePipelineLayout const& pipelineLayout, vk::UniqueRenderPass const& renderPass); - vk::UniqueInstance createInstance(std::string const& appName, std::string const& engineName, std::vector const& extensions = {}, uint32_t apiVersion = VK_API_VERSION_1_0); + vk::UniqueInstance createInstance(std::string const& appName, std::string const& engineName, std::vector const& layers = {}, std::vector const& extensions = {}, + uint32_t apiVersion = VK_API_VERSION_1_0); vk::UniqueRenderPass createRenderPass(vk::UniqueDevice &device, vk::Format colorFormat, vk::Format depthFormat, vk::AttachmentLoadOp loadOp = vk::AttachmentLoadOp::eClear, vk::ImageLayout colorFinalLayout = vk::ImageLayout::ePresentSrcKHR); VkBool32 debugReportCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, void* pUserData); uint32_t findGraphicsQueueFamilyIndex(std::vector const& queueFamilyProperties);