layers: Implement VU 00303-00308
Implement Valid Usages 00303-00308 with new function
ValidateBarrierLayoutToImageUsage() which verifies an
ImageMemoryBarrier's old/new ImageLayouts are compatible with its
Image's ImageUsageFlags.
Rename ValidateImageLayouts() to ValidateBarriersToImages().
Rename some variables:
- internal vars to use Google style.
- vars passed verbatim from Vulkan to use Vulkan names.
Fix issues revealed in layer tests due to these new checks:
- 2 new Unexpected messages in VkLayerTest.
- 1 failing VkPositiveTest.
Update VU database for check_implemented = Y.
Change-Id: I8723f99d515fbea707299b4d1fcf33a4da6b7b0b
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index b7918ea..adb25fd 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -9188,7 +9188,8 @@
m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_WARNING_BIT_EXT, "must have required access bit");
ASSERT_NO_FATAL_FAILURE(InitState());
VkImageObj image(m_device);
- image.init(128, 128, VK_FORMAT_B8G8R8A8_UNORM, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_TILING_OPTIMAL, 0);
+ image.init(128, 128, VK_FORMAT_B8G8R8A8_UNORM, (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT),
+ VK_IMAGE_TILING_OPTIMAL, 0);
ASSERT_TRUE(image.initialized());
VkImageMemoryBarrier barrier = {};
@@ -11839,6 +11840,7 @@
"You cannot transition the layout of aspect 1 from "
"VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL when "
"current layout is VK_IMAGE_LAYOUT_GENERAL.");
+ m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_ERROR_BIT_EXT, VALIDATION_ERROR_00305);
vkCmdPipelineBarrier(m_commandBuffer->handle(), VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0,
NULL, 0, NULL, 1, image_barrier);
m_errorMonitor->VerifyFound();
@@ -18961,7 +18963,9 @@
alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
vkAllocateCommandBuffers(m_device->device(), &alloc_info, cmd_bufs);
VkImageObj image(m_device);
- image.init(128, 128, VK_FORMAT_B8G8R8A8_UNORM, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_TILING_OPTIMAL, 0);
+ image.init(128, 128, VK_FORMAT_B8G8R8A8_UNORM,
+ (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT),
+ VK_IMAGE_TILING_OPTIMAL, 0);
ASSERT_TRUE(image.initialized());
VkCommandBufferBeginInfo cb_binfo;
cb_binfo.pNext = NULL;