Browse Source

vulkan: clean up texture creation flags

slime 2 years ago
parent
commit
1b89de4497
1 changed files with 9 additions and 10 deletions
  1. 9 10
      src/modules/graphics/vulkan/Texture.cpp

+ 9 - 10
src/modules/graphics/vulkan/Texture.cpp

@@ -48,11 +48,11 @@ bool Texture::loadVolatile()
 	allocator = vgfx->getVmaAllocator();
 	allocator = vgfx->getVmaAllocator();
 	device = vgfx->getDevice();
 	device = vgfx->getDevice();
 
 
-	if (isPixelFormatDepthStencil(format))
-		imageAspect |= VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
-	else if (isPixelFormatDepth(format))
+	if (isPixelFormatDepth(format))
 		imageAspect |= VK_IMAGE_ASPECT_DEPTH_BIT;
 		imageAspect |= VK_IMAGE_ASPECT_DEPTH_BIT;
-	else
+	if (isPixelFormatStencil(format))
+		imageAspect |= VK_IMAGE_ASPECT_STENCIL_BIT;
+	if (isPixelFormatColor(format))
 		imageAspect |= VK_IMAGE_ASPECT_COLOR_BIT;
 		imageAspect |= VK_IMAGE_ASPECT_COLOR_BIT;
 
 
 	auto vulkanFormat = Vulkan::getTextureFormat(format, sRGB);
 	auto vulkanFormat = Vulkan::getTextureFormat(format, sRGB);
@@ -62,13 +62,10 @@ bool Texture::loadVolatile()
 		VK_IMAGE_USAGE_TRANSFER_DST_BIT;
 		VK_IMAGE_USAGE_TRANSFER_DST_BIT;
 
 
 	if (readable)
 	if (readable)
-	{
-		if (!isPixelFormatDepthStencil(format))
-			usageFlags |= VK_IMAGE_USAGE_SAMPLED_BIT;
+		usageFlags |= VK_IMAGE_USAGE_SAMPLED_BIT;
 
 
-		if (!isPixelFormatCompressed(format) && !isPixelFormatDepthStencil(format))
-			usageFlags |= VK_IMAGE_USAGE_STORAGE_BIT;
-	}
+	if (computeWrite)
+		usageFlags |= VK_IMAGE_USAGE_STORAGE_BIT;
 
 
 	if (renderTarget)
 	if (renderTarget)
 	{
 	{
@@ -133,6 +130,7 @@ bool Texture::loadVolatile()
 	bool hasdata = slices.get(0, 0) != nullptr;
 	bool hasdata = slices.get(0, 0) != nullptr;
 
 
 	if (hasdata)
 	if (hasdata)
+	{
 		for (int mip = 0; mip < getMipmapCount(); mip++)
 		for (int mip = 0; mip < getMipmapCount(); mip++)
 		{
 		{
 			int sliceCount;
 			int sliceCount;
@@ -148,6 +146,7 @@ bool Texture::loadVolatile()
 					uploadImageData(id, mip, slice, 0, 0);
 					uploadImageData(id, mip, slice, 0, 0);
 			}
 			}
 		}
 		}
+	}
 	else
 	else
 		clear();
 		clear();