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();