diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp index d2b1ca56c627fd72a3828164c7a22152c4f6c635..e67098693249c5070dde7f003f1810988269cf1c 100644 --- a/projects/voxelization/src/main.cpp +++ b/projects/voxelization/src/main.cpp @@ -331,7 +331,7 @@ int main(int argc, const char** argv) { skyPipeConfig.m_Width = windowWidth; skyPipeConfig.m_Height = windowHeight; skyPipeConfig.m_PassHandle = skyPass; - skyPipeConfig.m_VertexLayout = vkcv::VertexLayout({}); + skyPipeConfig.m_VertexLayout = vkcv::VertexLayout(); skyPipeConfig.m_DescriptorLayouts = {}; skyPipeConfig.m_UseDynamicViewport = true; skyPipeConfig.m_multisampling = msaa; @@ -346,7 +346,7 @@ int main(int argc, const char** argv) { vkcv::ImageHandle colorBuffer = core.createImage(colorBufferFormat, windowWidth, windowHeight, 1, false, colorBufferRequiresStorage, true, msaa).getHandle(); vkcv::ImageHandle resolvedColorBuffer; - if (msaa != vkcv::Multisampling::None) { + if (usingMsaa) { resolvedColorBuffer = core.createImage(colorBufferFormat, windowWidth, windowHeight, 1, false, true, true).getHandle(); } else { diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp index c230cfdcc9cc2503720eca402f63a9d6dda76b0b..ed7718d0cea0a503a2fa2b8ea2d6b5e1efb35225 100644 --- a/src/vkcv/Core.cpp +++ b/src/vkcv/Core.cpp @@ -136,6 +136,8 @@ namespace vkcv ); } catch (vk::OutOfDateKHRError e) { result = vk::Result::eErrorOutOfDateKHR; + } catch (vk::DeviceLostError e) { + result = vk::Result::eErrorDeviceLost; } if (result != vk::Result::eSuccess) { @@ -367,6 +369,8 @@ namespace vkcv result = queueManager.getPresentQueue().handle.presentKHR(presentInfo); } catch (vk::OutOfDateKHRError e) { result = vk::Result::eErrorOutOfDateKHR; + } catch (vk::DeviceLostError e) { + result = vk::Result::eErrorDeviceLost; } if (result != vk::Result::eSuccess) { diff --git a/src/vkcv/ImageManager.cpp b/src/vkcv/ImageManager.cpp index 384f72ff80b4fd7d14c152a11aa21a6ddf179f54..849888645a63111d024c9870fe474cf29f7090e9 100644 --- a/src/vkcv/ImageManager.cpp +++ b/src/vkcv/ImageManager.cpp @@ -102,9 +102,17 @@ namespace vkcv { vk::ImageUsageFlags imageUsageFlags = ( vk::ImageUsageFlagBits::eSampled | vk::ImageUsageFlagBits::eTransferDst | vk::ImageUsageFlagBits::eTransferSrc ); + + vk::ImageTiling imageTiling = vk::ImageTiling::eOptimal; + if (supportStorage) { imageUsageFlags |= vk::ImageUsageFlagBits::eStorage; + + if (formatProperties.optimalTilingFeatures & vk::FormatFeatureFlagBits::eStorageImage) { + imageTiling = vk::ImageTiling::eLinear; + } } + if (supportColorAttachment) { imageUsageFlags |= vk::ImageUsageFlagBits::eColorAttachment; } @@ -135,8 +143,6 @@ namespace vkcv { imageViewType = vk::ImageViewType::e2D; } - vk::ImageTiling imageTiling = vk::ImageTiling::eOptimal; - if (!formatProperties.optimalTilingFeatures) { if (!formatProperties.linearTilingFeatures) return ImageHandle();