Просмотр исходного кода

Don't support dynamic texture memory for render and storage textures

BearishSun 9 лет назад
Родитель
Сommit
e38507eab7
1 измененных файлов с 10 добавлено и 6 удалено
  1. 10 6
      Source/BansheeVulkanRenderAPI/Source/BsVulkanTexture.cpp

+ 10 - 6
Source/BansheeVulkanRenderAPI/Source/BsVulkanTexture.cpp

@@ -281,13 +281,13 @@ namespace bs
 		{
 			mImageCI.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
 			mSupportsGPUWrites = true;
-			mAccessFlags = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
+			mAccessFlags = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
 		}
 		else if ((usage & TU_DEPTHSTENCIL) != 0)
 		{
 			mImageCI.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
 			mSupportsGPUWrites = true;
-			mAccessFlags = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
+			mAccessFlags = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
 		}
 		else if ((usage & TU_LOADSTORE) != 0)
 		{
@@ -298,7 +298,7 @@ namespace bs
 		else
 		{
 			mImageCI.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
-			mAccessFlags = VK_ACCESS_SHADER_READ_BIT;;
+			mAccessFlags = VK_ACCESS_SHADER_READ_BIT;
 		}
 
 		if ((usage & TU_CPUREADABLE) != 0)
@@ -314,9 +314,13 @@ namespace bs
 			if(texType == TEX_TYPE_2D && props.getNumSamples() <= 1 && props.getNumMipmaps() == 0 && 
 				props.getNumFaces() == 1 && (mImageCI.usage & VK_IMAGE_USAGE_SAMPLED_BIT) != 0)
 			{
-				mDirectlyMappable = true;
-				tiling = VK_IMAGE_TILING_LINEAR;
-				layout = VK_IMAGE_LAYOUT_PREINITIALIZED;
+				// Also, only support normal textures, not render targets or storage textures
+				if (!mSupportsGPUWrites)
+				{
+					mDirectlyMappable = true;
+					tiling = VK_IMAGE_TILING_LINEAR;
+					layout = VK_IMAGE_LAYOUT_PREINITIALIZED;
+				}
 			}
 		}