summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--layers/buffer_validation.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp
index ec8016f5..d5b15cb8 100644
--- a/layers/buffer_validation.cpp
+++ b/layers/buffer_validation.cpp
@@ -2078,10 +2078,6 @@ bool ValidateMaskBitsFromLayouts(core_validation::layer_data *device_data, VkCom
skip |= ValidateMaskBits(device_data, cmdBuffer, accessMask, layout, VK_ACCESS_TRANSFER_READ_BIT, 0, type);
break;
}
- case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: {
- skip |= ValidateMaskBits(device_data, cmdBuffer, accessMask, layout, VK_ACCESS_MEMORY_READ_BIT, 0, type);
- break;
- }
case VK_IMAGE_LAYOUT_UNDEFINED: {
if (accessMask != 0) {
// TODO: Verify against Valid Use section spec
@@ -2092,6 +2088,17 @@ bool ValidateMaskBitsFromLayouts(core_validation::layer_data *device_data, VkCom
}
break;
}
+ case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
+ // Notes: QueuePresentKHR performs automatic visibility operations,
+ // so the app is /NOT/ required to include VK_ACCESS_MEMORY_READ_BIT
+ // when transitioning to this layout.
+ //
+ // When transitioning /from/ this layout, the application needs to
+ // avoid only a WAR hazard -- any writes need to be ordered after
+ // the PE's reads. There is no need for a memory dependency for this
+ // case.
+ /* fallthrough */
+
case VK_IMAGE_LAYOUT_GENERAL:
default: { break; }
}