diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index dc3f910e..2632218b 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -522,6 +522,7 @@ void VulkanExampleBase::initVulkan(bool enableValidation) // Get the graphics queue vkGetDeviceQueue(device, graphicsQueueIndex, 0, &queue); + // Find a suitable depth format VkBool32 validDepthFormat = vkTools::getSupportedDepthFormat(physicalDevice, &depthFormat); assert(validDepthFormat); diff --git a/bloom/bloom.cpp b/bloom/bloom.cpp index 7f7ad472..1f9399d5 100644 --- a/bloom/bloom.cpp +++ b/bloom/bloom.cpp @@ -286,25 +286,10 @@ public: VkFormat fbColorFormat = FB_COLOR_FORMAT; - // Find supported depth format - // We prefer 24 bits of depth and 8 bits of stencil, but that may not be supported by all implementations + // Find a suitable depth format VkFormat fbDepthFormat; - std::vector depthFormats = { VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM }; - bool depthFormatFound = false; - for (auto& format : depthFormats) - { - VkFormatProperties formatProps; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProps); - // Format must support depth stencil attachment for optimal tiling - if (formatProps.optimalTilingFeatures && VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) - { - fbDepthFormat = format; - depthFormatFound = true; - break; - } - } - - assert(depthFormatFound); + VkBool32 validDepthFormat = vkTools::getSupportedDepthFormat(physicalDevice, &fbDepthFormat); + assert(validDepthFormat); VkResult err; diff --git a/deferred/deferred.cpp b/deferred/deferred.cpp index 0352b28f..08b5c7f1 100644 --- a/deferred/deferred.cpp +++ b/deferred/deferred.cpp @@ -388,25 +388,11 @@ public: &offScreenFrameBuf.albedo); // Depth attachment - // Find supported depth format - // We prefer 24 bits of depth and 8 bits of stencil, but that may not be supported by all implementations - VkFormat attDepthFormat; - std::vector depthFormats = { VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM }; - bool depthFormatFound = false; - for (auto& format : depthFormats) - { - VkFormatProperties formatProps; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProps); - // Format must support depth stencil attachment for optimal tiling - if (formatProps.optimalTilingFeatures && VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) - { - attDepthFormat = format; - depthFormatFound = true; - break; - } - } - assert(depthFormatFound); + // Find a suitable depth format + VkFormat attDepthFormat; + VkBool32 validDepthFormat = vkTools::getSupportedDepthFormat(physicalDevice, &attDepthFormat); + assert(validDepthFormat); createAttachment( attDepthFormat, diff --git a/offscreen/offscreen.cpp b/offscreen/offscreen.cpp index 743d3335..1305e797 100644 --- a/offscreen/offscreen.cpp +++ b/offscreen/offscreen.cpp @@ -271,25 +271,10 @@ public: VkFormat fbColorFormat = FB_COLOR_FORMAT; - // Find supported depth format - // We prefer 24 bits of depth and 8 bits of stencil, but that may not be supported by all implementations + // Find a suitable depth format VkFormat fbDepthFormat; - std::vector depthFormats = { VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM }; - bool depthFormatFound = false; - for (auto& format : depthFormats) - { - VkFormatProperties formatProps; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProps); - // Format must support depth stencil attachment for optimal tiling - if (formatProps.optimalTilingFeatures && VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) - { - fbDepthFormat = format; - depthFormatFound = true; - break; - } - } - - assert(depthFormatFound); + VkBool32 validDepthFormat = vkTools::getSupportedDepthFormat(physicalDevice, &fbDepthFormat); + assert(validDepthFormat); VkResult err; diff --git a/radialblur/radialblur.cpp b/radialblur/radialblur.cpp index dfe6aa42..4e4cd24b 100644 --- a/radialblur/radialblur.cpp +++ b/radialblur/radialblur.cpp @@ -262,25 +262,10 @@ public: VkFormat fbColorFormat = FB_COLOR_FORMAT; - // Find supported depth format - // We prefer 24 bits of depth and 8 bits of stencil, but that may not be supported by all implementations + // Find a suitable depth format VkFormat fbDepthFormat; - std::vector depthFormats = { VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM }; - bool depthFormatFound = false; - for (auto& format : depthFormats) - { - VkFormatProperties formatProps; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProps); - // Format must support depth stencil attachment for optimal tiling - if (formatProps.optimalTilingFeatures && VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) - { - fbDepthFormat = format; - depthFormatFound = true; - break; - } - } - - assert(depthFormatFound); + VkBool32 validDepthFormat = vkTools::getSupportedDepthFormat(physicalDevice, &fbDepthFormat); + assert(validDepthFormat); VkResult err; diff --git a/shadowmap/shadowmap.cpp b/shadowmap/shadowmap.cpp index d0bfcd3e..fa6fbfa9 100644 --- a/shadowmap/shadowmap.cpp +++ b/shadowmap/shadowmap.cpp @@ -294,25 +294,10 @@ public: VkFormat fbColorFormat = FB_COLOR_FORMAT; - // Find supported depth format - // We prefer 24 bits of depth and 8 bits of stencil, but that may not be supported by all implementations + // Find a suitable depth format VkFormat fbDepthFormat; - std::vector depthFormats = { VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM }; - bool depthFormatFound = false; - for (auto& format : depthFormats) - { - VkFormatProperties formatProps; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProps); - // Format must support depth stencil attachment for optimal tiling - if (formatProps.optimalTilingFeatures && VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) - { - fbDepthFormat = format; - depthFormatFound = true; - break; - } - } - - assert(depthFormatFound); + VkBool32 validDepthFormat = vkTools::getSupportedDepthFormat(physicalDevice, &fbDepthFormat); + assert(validDepthFormat); VkResult err;