{"action":"created","issue":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/202","repository_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/202/labels{/name}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/202/comments","events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/202/events","html_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/202","id":143888996,"number":202,"title":"layers: intercept device functions in vkGetInstanceProcAddr","user":{"login":"olvaffe","id":46028,"avatar_url":"https://avatars.githubusercontent.com/u/46028?v=3","gravatar_id":"","url":"https://api.github.com/users/olvaffe","html_url":"https://github.com/olvaffe","followers_url":"https://api.github.com/users/olvaffe/followers","following_url":"https://api.github.com/users/olvaffe/following{/other_user}","gists_url":"https://api.github.com/users/olvaffe/gists{/gist_id}","starred_url":"https://api.github.com/users/olvaffe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olvaffe/subscriptions","organizations_url":"https://api.github.com/users/olvaffe/orgs","repos_url":"https://api.github.com/users/olvaffe/repos","events_url":"https://api.github.com/users/olvaffe/events{/privacy}","received_events_url":"https://api.github.com/users/olvaffe/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"jon-lunarg","id":6935198,"avatar_url":"https://avatars.githubusercontent.com/u/6935198?v=3","gravatar_id":"","url":"https://api.github.com/users/jon-lunarg","html_url":"https://github.com/jon-lunarg","followers_url":"https://api.github.com/users/jon-lunarg/followers","following_url":"https://api.github.com/users/jon-lunarg/following{/other_user}","gists_url":"https://api.github.com/users/jon-lunarg/gists{/gist_id}","starred_url":"https://api.github.com/users/jon-lunarg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jon-lunarg/subscriptions","organizations_url":"https://api.github.com/users/jon-lunarg/orgs","repos_url":"https://api.github.com/users/jon-lunarg/repos","events_url":"https://api.github.com/users/jon-lunarg/events{/privacy}","received_events_url":"https://api.github.com/users/jon-lunarg/received_events","type":"User","site_admin":false},"milestone":null,"comments":16,"created_at":"2016-03-28T04:23:56Z","updated_at":"2016-04-29T17:13:47Z","closed_at":"2016-04-28T23:56:01Z","pull_request":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/pulls/202","html_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/202","diff_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/202.diff","patch_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/202.patch"},"body":"Each layer should be a conformant Vulkan implementation first, and that\r\nrequires a correctly implemented vkGetInstanceProcAddr.\r\n\r\nPractically, not all loaders implement dynamic dispatch for unknown device\r\nfunctions.  And not all loaders intercept functions they do not care, such\r\nas vkCreateimage.  A loader might choose to call down to layers/drivers\r\nwhen it encounters\r\n\r\n  vkGetInstanceProcAddr(instance, \"vkCreateImage\");\r\n\r\nand a layer intercepting vkCreateImage should respond to that."},"comment":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/comments/215818254","html_url":"https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/202#issuecomment-215818254","issue_url":"https://api.github.com/repos/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/202","id":215818254,"user":{"login":"ianelliottus","id":16325331,"avatar_url":"https://avatars.githubusercontent.com/u/16325331?v=3","gravatar_id":"","url":"https://api.github.com/users/ianelliottus","html_url":"https://github.com/ianelliottus","followers_url":"https://api.github.com/users/ianelliottus/followers","following_url":"https://api.github.com/users/ianelliottus/following{/other_user}","gists_url":"https://api.github.com/users/ianelliottus/gists{/gist_id}","starred_url":"https://api.github.com/users/ianelliottus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ianelliottus/subscriptions","organizations_url":"https://api.github.com/users/ianelliottus/orgs","repos_url":"https://api.github.com/users/ianelliottus/repos","events_url":"https://api.github.com/users/ianelliottus/events{/privacy}","received_events_url":"https://api.github.com/users/ianelliottus/received_events","type":"User","site_admin":false},"created_at":"2016-04-29T17:13:47Z","updated_at":"2016-04-29T17:13:47Z","body":"I just noticed that I was included in this discussion, that I hadn't been following (mail filters are difficult for github/gitlab) ...\r\n\r\n> Regarding this GDPA behavior for swapchain, I agree with Olv's statement cited below as this seems a better approach. Although since the Android and desktop loader's export the WSI swapchain extension entrypoints, the swapchain also needs to check for the extension being enabled within the entrypoints themselves (eg CreateSwapchainKHR).\r\n\r\nThis seems fine with me."}}