{"action":"opened","issue":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/771","repository_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/771/labels{/name}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/771/comments","events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/771/events","html_url":"https://github.com/KhronosGroup/Vulkan-Docs/issues/771","id":351964306,"node_id":"MDU6SXNzdWUzNTE5NjQzMDY=","number":771,"title":"What's preventing vkEvent to cross queues?","user":{"login":"ShabbyX","id":1067408,"node_id":"MDQ6VXNlcjEwNjc0MDg=","avatar_url":"https://avatars2.githubusercontent.com/u/1067408?v=4","gravatar_id":"","url":"https://api.github.com/users/ShabbyX","html_url":"https://github.com/ShabbyX","followers_url":"https://api.github.com/users/ShabbyX/followers","following_url":"https://api.github.com/users/ShabbyX/following{/other_user}","gists_url":"https://api.github.com/users/ShabbyX/gists{/gist_id}","starred_url":"https://api.github.com/users/ShabbyX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ShabbyX/subscriptions","organizations_url":"https://api.github.com/users/ShabbyX/orgs","repos_url":"https://api.github.com/users/ShabbyX/repos","events_url":"https://api.github.com/users/ShabbyX/events{/privacy}","received_events_url":"https://api.github.com/users/ShabbyX/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-08-20T02:31:46Z","updated_at":"2018-08-20T02:31:46Z","closed_at":null,"author_association":"NONE","body":"On PS4, you can use a Label (very similar to vkEvent) to signal an event and wait on it. This can cross any queues (which by Vulkan specifications would belong to two different families, as one is graphics-compute and the rest are compute-only). This is GCN, so at least some current hardware is capable of doing this.\r\n\r\nThis makes multi-queue rendering very efficient as events between the graphics queue and the async compute queues can be very frequent, allowing detailed layout of parallel work where they make sense (for example overlap of memory-bound and VALU bound, or vertex bound and compute). With Vulkan, cross-queue synchronization would require a semaphore, which entails an expensive submission.\r\n\r\nWhat's the technical reason why Vulkan doesn't allow a vkEvent to be used to synchronize two queues of the same family? If there are none, what about any two queues?"}}
{"actor":{"display_login":"ShabbyX"}}