{"action":"created","issue":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590","repository_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590/labels{/name}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590/comments","events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590/events","html_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590","id":315414106,"number":2590,"title":"Duplicate image memory barriers are not reported.","user":{"login":"DominikWitczakAMD","id":17761066,"avatar_url":"https://avatars0.githubusercontent.com/u/17761066?v=4","gravatar_id":"","url":"https://api.github.com/users/DominikWitczakAMD","html_url":"https://github.com/DominikWitczakAMD","followers_url":"https://api.github.com/users/DominikWitczakAMD/followers","following_url":"https://api.github.com/users/DominikWitczakAMD/following{/other_user}","gists_url":"https://api.github.com/users/DominikWitczakAMD/gists{/gist_id}","starred_url":"https://api.github.com/users/DominikWitczakAMD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DominikWitczakAMD/subscriptions","organizations_url":"https://api.github.com/users/DominikWitczakAMD/orgs","repos_url":"https://api.github.com/users/DominikWitczakAMD/repos","events_url":"https://api.github.com/users/DominikWitczakAMD/events{/privacy}","received_events_url":"https://api.github.com/users/DominikWitczakAMD/received_events","type":"User","site_admin":false},"labels":[{"id":483136944,"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/labels/incomplete","name":"incomplete","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":{"login":"jzulauf-lunarg","id":32470354,"avatar_url":"https://avatars0.githubusercontent.com/u/32470354?v=4","gravatar_id":"","url":"https://api.github.com/users/jzulauf-lunarg","html_url":"https://github.com/jzulauf-lunarg","followers_url":"https://api.github.com/users/jzulauf-lunarg/followers","following_url":"https://api.github.com/users/jzulauf-lunarg/following{/other_user}","gists_url":"https://api.github.com/users/jzulauf-lunarg/gists{/gist_id}","starred_url":"https://api.github.com/users/jzulauf-lunarg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jzulauf-lunarg/subscriptions","organizations_url":"https://api.github.com/users/jzulauf-lunarg/orgs","repos_url":"https://api.github.com/users/jzulauf-lunarg/repos","events_url":"https://api.github.com/users/jzulauf-lunarg/events{/privacy}","received_events_url":"https://api.github.com/users/jzulauf-lunarg/received_events","type":"User","site_admin":false},"assignees":[{"login":"jzulauf-lunarg","id":32470354,"avatar_url":"https://avatars0.githubusercontent.com/u/32470354?v=4","gravatar_id":"","url":"https://api.github.com/users/jzulauf-lunarg","html_url":"https://github.com/jzulauf-lunarg","followers_url":"https://api.github.com/users/jzulauf-lunarg/followers","following_url":"https://api.github.com/users/jzulauf-lunarg/following{/other_user}","gists_url":"https://api.github.com/users/jzulauf-lunarg/gists{/gist_id}","starred_url":"https://api.github.com/users/jzulauf-lunarg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jzulauf-lunarg/subscriptions","organizations_url":"https://api.github.com/users/jzulauf-lunarg/orgs","repos_url":"https://api.github.com/users/jzulauf-lunarg/repos","events_url":"https://api.github.com/users/jzulauf-lunarg/events{/privacy}","received_events_url":"https://api.github.com/users/jzulauf-lunarg/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/milestones/1","html_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/milestone/1","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/milestones/1/labels","id":1616525,"number":1,"title":"P1","description":"","creator":{"login":"lentinem","id":9709345,"avatar_url":"https://avatars3.githubusercontent.com/u/9709345?v=4","gravatar_id":"","url":"https://api.github.com/users/lentinem","html_url":"https://github.com/lentinem","followers_url":"https://api.github.com/users/lentinem/followers","following_url":"https://api.github.com/users/lentinem/following{/other_user}","gists_url":"https://api.github.com/users/lentinem/gists{/gist_id}","starred_url":"https://api.github.com/users/lentinem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lentinem/subscriptions","organizations_url":"https://api.github.com/users/lentinem/orgs","repos_url":"https://api.github.com/users/lentinem/repos","events_url":"https://api.github.com/users/lentinem/events{/privacy}","received_events_url":"https://api.github.com/users/lentinem/received_events","type":"User","site_admin":false},"open_issues":48,"closed_issues":706,"state":"open","created_at":"2016-03-01T21:57:16Z","updated_at":"2018-04-25T22:23:17Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2018-04-18T10:04:39Z","updated_at":"2018-04-26T14:35:26Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"The following command does not raise validation errors, in spite of duplicate image memory barriers being specified ([0] = [2], [1] = [3]):\r\n\r\n```\r\nvkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) returns void:\r\n    commandBuffer:                  VkCommandBuffer = 00000000123939A0\r\n    eventCount:                     uint32_t = 2\r\n    pEvents:                        const VkEvent* = 0000000004548590\r\n        pEvents[0]:                     const VkEvent = 00000000056D8770\r\n        pEvents[1]:                     const VkEvent = 00000000056D91F0\r\n    srcStageMask:                   VkPipelineStageFlags = 98304 (VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)\r\n    dstStageMask:                   VkPipelineStageFlags = 65536 (VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)\r\n    memoryBarrierCount:             uint32_t = 0\r\n    pMemoryBarriers:                const VkMemoryBarrier* = NULL\r\n    bufferMemoryBarrierCount:       uint32_t = 0\r\n    pBufferMemoryBarriers:          const VkBufferMemoryBarrier* = NULL\r\n    imageMemoryBarrierCount:        uint32_t = 4\r\n    pImageMemoryBarriers:           const VkImageMemoryBarrier* = 0000000005C8B970\r\n        pImageMemoryBarriers[0]:        const VkImageMemoryBarrier = 0000000005C8B970:\r\n            sType:                          VkStructureType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER (45)\r\n            pNext:                          const void* = NULL\r\n            srcAccessMask:                  VkAccessFlags = 256 (VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)\r\n            dstAccessMask:                  VkAccessFlags = 32 (VK_ACCESS_SHADER_READ_BIT)\r\n            oldLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL (2)\r\n            newLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL (5)\r\n            srcQueueFamilyIndex:            uint32_t = 0\r\n            dstQueueFamilyIndex:            uint32_t = 0\r\n            image:                          VkImage = 00000000060152F0\r\n            subresourceRange:               VkImageSubresourceRange = 0000000005C8B9A0:\r\n                aspectMask:                     VkImageAspectFlags = 1 (VK_IMAGE_ASPECT_COLOR_BIT)\r\n                baseMipLevel:                   uint32_t = 0\r\n                levelCount:                     uint32_t = 1\r\n                baseArrayLayer:                 uint32_t = 0\r\n                layerCount:                     uint32_t = 1\r\n        pImageMemoryBarriers[1]:        const VkImageMemoryBarrier = 0000000005C8B9B8:\r\n            sType:                          VkStructureType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER (45)\r\n            pNext:                          const void* = NULL\r\n            srcAccessMask:                  VkAccessFlags = 256 (VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)\r\n            dstAccessMask:                  VkAccessFlags = 32 (VK_ACCESS_SHADER_READ_BIT)\r\n            oldLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL (2)\r\n            newLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL (5)\r\n            srcQueueFamilyIndex:            uint32_t = 0\r\n            dstQueueFamilyIndex:            uint32_t = 0\r\n            image:                          VkImage = 00000000060152F0\r\n            subresourceRange:               VkImageSubresourceRange = 0000000005C8B9E8:\r\n                aspectMask:                     VkImageAspectFlags = 1 (VK_IMAGE_ASPECT_COLOR_BIT)\r\n                baseMipLevel:                   uint32_t = 0\r\n                levelCount:                     uint32_t = 1\r\n                baseArrayLayer:                 uint32_t = 2047\r\n                layerCount:                     uint32_t = 1\r\n        pImageMemoryBarriers[2]:        const VkImageMemoryBarrier = 0000000005C8BA00:\r\n            sType:                          VkStructureType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER (45)\r\n            pNext:                          const void* = NULL\r\n            srcAccessMask:                  VkAccessFlags = 256 (VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)\r\n            dstAccessMask:                  VkAccessFlags = 32 (VK_ACCESS_SHADER_READ_BIT)\r\n            oldLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL (2)\r\n            newLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL (5)\r\n            srcQueueFamilyIndex:            uint32_t = 0\r\n            dstQueueFamilyIndex:            uint32_t = 0\r\n            image:                          VkImage = 00000000060152F0\r\n            subresourceRange:               VkImageSubresourceRange = 0000000005C8BA30:\r\n               aspectMask:                     VkImageAspectFlags = 1 (VK_IMAGE_ASPECT_COLOR_BIT)\r\n                baseMipLevel:                   uint32_t = 0\r\n                levelCount:                     uint32_t = 1\r\n                baseArrayLayer:                 uint32_t = 0\r\n                layerCount:                     uint32_t = 1\r\n        pImageMemoryBarriers[3]:        const VkImageMemoryBarrier = 0000000005C8BA48:\r\n            sType:                          VkStructureType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER (45)\r\n            pNext:                          const void* = NULL\r\n            srcAccessMask:                  VkAccessFlags = 256 (VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)\r\n            dstAccessMask:                  VkAccessFlags = 32 (VK_ACCESS_SHADER_READ_BIT)\r\n            oldLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL (2)\r\n            newLayout:                      VkImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL (5)\r\n            srcQueueFamilyIndex:            uint32_t = 0\r\n            dstQueueFamilyIndex:            uint32_t = 0\r\n            image:                          VkImage = 00000000060152F0\r\n            subresourceRange:               VkImageSubresourceRange = 0000000005C8BA78:\r\n                aspectMask:                     VkImageAspectFlags = 1 (VK_IMAGE_ASPECT_COLOR_BIT)\r\n                baseMipLevel:                   uint32_t = 0\r\n                levelCount:                     uint32_t = 1\r\n                baseArrayLayer:                 uint32_t = 2047\r\n                layerCount:                     uint32_t = 1\r\n```"},"comment":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/comments/384663693","html_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590#issuecomment-384663693","issue_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2590","id":384663693,"user":{"login":"jzulauf-lunarg","id":32470354,"avatar_url":"https://avatars0.githubusercontent.com/u/32470354?v=4","gravatar_id":"","url":"https://api.github.com/users/jzulauf-lunarg","html_url":"https://github.com/jzulauf-lunarg","followers_url":"https://api.github.com/users/jzulauf-lunarg/followers","following_url":"https://api.github.com/users/jzulauf-lunarg/following{/other_user}","gists_url":"https://api.github.com/users/jzulauf-lunarg/gists{/gist_id}","starred_url":"https://api.github.com/users/jzulauf-lunarg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jzulauf-lunarg/subscriptions","organizations_url":"https://api.github.com/users/jzulauf-lunarg/orgs","repos_url":"https://api.github.com/users/jzulauf-lunarg/repos","events_url":"https://api.github.com/users/jzulauf-lunarg/events{/privacy}","received_events_url":"https://api.github.com/users/jzulauf-lunarg/received_events","type":"User","site_admin":false},"created_at":"2018-04-26T14:35:26Z","updated_at":"2018-04-26T14:35:26Z","author_association":"CONTRIBUTOR","body":"Can't find anywhere in the spec that duplicated barriers are not allowed, though neither are contradictory ones (imagine if 0 and 2 specified different layout transitions, or specified overlapping sub-resources with different layout transitions, or queue ownership or ...).\r\n\r\nHowever, in order to handle duplicate barriers (especially ones with layout transitions) would be likely to cause driver overhead, I can see where valid usage disallowing barriers for the same image with overlapping sub-resource ranges (and buffer with overlapping ranges) would be desirable."}}
{"actor":{"display_login":"jzulauf-lunarg"}}