{"action":"created","issue":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/302","repository_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/302/labels{/name}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/302/comments","events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/302/events","html_url":"https://github.com/KhronosGroup/Vulkan-Docs/issues/302","id":168470107,"number":302,"title":"Automatic ordering of layout transitions","user":{"login":"philiptaylor","id":131713,"avatar_url":"https://avatars.githubusercontent.com/u/131713?v=3","gravatar_id":"","url":"https://api.github.com/users/philiptaylor","html_url":"https://github.com/philiptaylor","followers_url":"https://api.github.com/users/philiptaylor/followers","following_url":"https://api.github.com/users/philiptaylor/following{/other_user}","gists_url":"https://api.github.com/users/philiptaylor/gists{/gist_id}","starred_url":"https://api.github.com/users/philiptaylor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philiptaylor/subscriptions","organizations_url":"https://api.github.com/users/philiptaylor/orgs","repos_url":"https://api.github.com/users/philiptaylor/repos","events_url":"https://api.github.com/users/philiptaylor/events{/privacy}","received_events_url":"https://api.github.com/users/philiptaylor/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/labels/Resolving%20Inside%20Khronos","name":"Resolving Inside Khronos","color":"ed458b"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":17,"created_at":"2016-07-30T14:31:45Z","updated_at":"2016-08-01T16:30:43Z","closed_at":null,"body":"https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#synchronization-image-memory-barrier says:\r\n\r\n> Layout transitions that are performed via image memory barriers are automatically ordered against other layout transitions, including those that occur as part of a render pass instance.\r\n\r\nI have no idea what this means. What was intended here?\r\n\r\nThe previous paragraph already requires memory dependencies (implying execution dependencies) between operations on the image before/after the transition, which I believe includes other transitions before/after the transition, so the application is already responsible for providing a sufficient ordering between those transitions. If the application violates that (e.g. putting two `VkImageMemoryBarrier` with the same `image` in a single `vkCmdPiplineBarrier`, or doing transitions on the same image in two separate queues), I don't see why it would be helpful or even possible to automatically define some execution-dependency total ordering between them, and I don't see what other kind of ordering would be relevant.\r\n\r\nMaybe it's trying to refer to the way that automatic layout transitions in render passes are defined to create automatic dependencies in certain cases (but not all cases), or something like that, but it seems very unclear to me."},"comment":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/comments/236633020","html_url":"https://github.com/KhronosGroup/Vulkan-Docs/issues/302#issuecomment-236633020","issue_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/302","id":236633020,"user":{"login":"TobiasHector","id":17142760,"avatar_url":"https://avatars.githubusercontent.com/u/17142760?v=3","gravatar_id":"","url":"https://api.github.com/users/TobiasHector","html_url":"https://github.com/TobiasHector","followers_url":"https://api.github.com/users/TobiasHector/followers","following_url":"https://api.github.com/users/TobiasHector/following{/other_user}","gists_url":"https://api.github.com/users/TobiasHector/gists{/gist_id}","starred_url":"https://api.github.com/users/TobiasHector/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TobiasHector/subscriptions","organizations_url":"https://api.github.com/users/TobiasHector/orgs","repos_url":"https://api.github.com/users/TobiasHector/repos","events_url":"https://api.github.com/users/TobiasHector/events{/privacy}","received_events_url":"https://api.github.com/users/TobiasHector/received_events","type":"User","site_admin":false},"created_at":"2016-08-01T16:30:43Z","updated_at":"2016-08-01T16:30:43Z","body":"Separating this comment out because it's kind of important:\r\n\r\n> Yea, but you talk (transparent) implementation? What it is to me, if I can't catch them by any of the offered pipeline stages.\r\n\r\nIt's not transparent, it's completely part of how the spec operates. The operation of a barrier has finished by the time the pipeline stages specified by the dstStageMask have started. So if you wait on those stages in a subsequent pipeline, that original barrier has completed (including the subsequent image layout transitions, queue ownership transfers, flushes/invalidates etc.). Again, this is basically what the \"execution dependency chain\" section is calling out."}}
{"actor":{"display_login":"TobiasHector"}}