Fix handling of S8 multisampled textures. Closes #2883

This commit is contained in:
baldurk
2023-03-14 16:32:06 +00:00
parent 31d5fa9eb3
commit 38afb7c8ad
10 changed files with 295 additions and 71 deletions
+4
View File
@@ -551,6 +551,10 @@ void main()
DiscardImage(cmd, tex);
TEX_TEST("DiscardAll", MakeTex2D(VK_FORMAT_S8_UINT, 300, 300, 5, 4));
DiscardImage(cmd, tex);
TEX_TEST("DiscardAll", MakeTex2DMS(VK_FORMAT_S8_UINT, 300, 300, 4));
DiscardImage(cmd, tex);
TEX_TEST("DiscardAll", MakeTex2DMS(VK_FORMAT_S8_UINT, 300, 300, 4, 2));
DiscardImage(cmd, tex);
}
TEX_TEST("DiscardAll", MakeTex2D(depthFormat, 300, 300, 5));
+7 -3
View File
@@ -1068,6 +1068,8 @@ void main()
TEST_CASE(TextureType::Unknown, VK_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM, 0, 0,
DataType::Float),
TEST_CASE(TextureType::Unknown, VK_FORMAT_S8_UINT, VK_FORMAT_S8_UINT, 0, 0, DataType::UInt),
};
for(VKFormat f : depth_tests)
@@ -1121,9 +1123,11 @@ void main()
{
aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
if(t.fmt.viewFmt == VK_FORMAT_S8_UINT || t.fmt.viewFmt == VK_FORMAT_D16_UNORM_S8_UINT ||
t.fmt.viewFmt == VK_FORMAT_D24_UNORM_S8_UINT ||
t.fmt.viewFmt == VK_FORMAT_D32_SFLOAT_S8_UINT)
if(t.fmt.viewFmt == VK_FORMAT_S8_UINT)
aspectMask = VK_IMAGE_ASPECT_STENCIL_BIT;
else if(t.fmt.viewFmt == VK_FORMAT_D16_UNORM_S8_UINT ||
t.fmt.viewFmt == VK_FORMAT_D24_UNORM_S8_UINT ||
t.fmt.viewFmt == VK_FORMAT_D32_SFLOAT_S8_UINT)
aspectMask |= VK_IMAGE_ASPECT_STENCIL_BIT;
}