From 97301d61a9155173eaa1016bed1245dfad0f2037 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 28 Apr 2017 17:29:10 -0700 Subject: layers: Don't insist on memory dependency for present When transitioning to/from VK_IMAGE_LAYOUT_PRESENT_SRC_KHR we don't need to insist on VK_ACCESS_MEMORY_READ_BIT. On the transition TO, it's automatically handled; in the transition FROM, it's a WAR hazard rather than RAW/WAW so only the execution dependency is needed. Fixes #1717. --- layers/buffer_validation.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'layers/buffer_validation.cpp') 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; } } -- cgit v1.2.3