{"action":"opened","issue":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/431","repository_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/431/labels{/name}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/431/comments","events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/431/events","html_url":"https://github.com/KhronosGroup/Vulkan-Docs/issues/431","id":201214298,"number":431,"title":"Pipeline Layout Compatiblity","user":{"login":"Silverdaru","id":19887501,"avatar_url":"https://avatars.githubusercontent.com/u/19887501?v=3","gravatar_id":"","url":"https://api.github.com/users/Silverdaru","html_url":"https://github.com/Silverdaru","followers_url":"https://api.github.com/users/Silverdaru/followers","following_url":"https://api.github.com/users/Silverdaru/following{/other_user}","gists_url":"https://api.github.com/users/Silverdaru/gists{/gist_id}","starred_url":"https://api.github.com/users/Silverdaru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Silverdaru/subscriptions","organizations_url":"https://api.github.com/users/Silverdaru/orgs","repos_url":"https://api.github.com/users/Silverdaru/repos","events_url":"https://api.github.com/users/Silverdaru/events{/privacy}","received_events_url":"https://api.github.com/users/Silverdaru/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-01-17T09:18:10Z","updated_at":"2017-01-17T09:18:10Z","closed_at":null,"body":"The specification says:\r\n> Two pipeline layouts are defined to be “compatible for set N” if they were created with matching (the same, or identically defined) descriptor set layouts for sets zero through N, and if they were created with identical push constant ranges.\r\n\r\nGiven my scenario I have two objects representing the camera and another object in the scene. The camera defines a pipeline layout containing one uniform buffer and a push constant range of 64 bytes with offset 0, assuming that objects may set their model matrices as push constants. The uniform buffer gets filled with view and projection matrices. \r\nThe idea is, that the camera only defines the layout and a descriptor set and binds them. Afterwards scene objects are called to render themselves. They have their own pipeline, pipeline layout and descriptor sets. \r\nAccording to the quoted paragraph above I would assume, that my scene object will have to define a pipeline layout with 2 sets (1 containing the uniform buffer, another one for its own ressources) and an identical push constant range (64 bytes, offset 0), so that the sets defined by the camera object may be used by the scene object without having to rebind them.\r\n\r\nHowever, testing this out in my project showed that apparently the push constant ranges do not need to be identical, as my scene object defined the range to be 16 bytes with offset 64. Is this a quirk of my implementation or is the specification a bit too restrictive when stating that ranges have to be identical (or is my understanding of \"identical\" flawed)?\r\n\r\n"}}
{"actor":{"display_login":"Silverdaru"}}