{"action":"created","issue":{"url":"https://api.github.com/repos/flutter/engine/issues/2927","repository_url":"https://api.github.com/repos/flutter/engine","labels_url":"https://api.github.com/repos/flutter/engine/issues/2927/labels{/name}","comments_url":"https://api.github.com/repos/flutter/engine/issues/2927/comments","events_url":"https://api.github.com/repos/flutter/engine/issues/2927/events","html_url":"https://github.com/flutter/engine/pull/2927","id":171240955,"number":2927,"title":"Rework frame pipelining and the animator to make it easier to wait of fences for frame completion.","user":{"login":"chinmaygarde","id":44085,"avatar_url":"https://avatars.githubusercontent.com/u/44085?v=3","gravatar_id":"","url":"https://api.github.com/users/chinmaygarde","html_url":"https://github.com/chinmaygarde","followers_url":"https://api.github.com/users/chinmaygarde/followers","following_url":"https://api.github.com/users/chinmaygarde/following{/other_user}","gists_url":"https://api.github.com/users/chinmaygarde/gists{/gist_id}","starred_url":"https://api.github.com/users/chinmaygarde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chinmaygarde/subscriptions","organizations_url":"https://api.github.com/users/chinmaygarde/orgs","repos_url":"https://api.github.com/users/chinmaygarde/repos","events_url":"https://api.github.com/users/chinmaygarde/events{/privacy}","received_events_url":"https://api.github.com/users/chinmaygarde/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-08-15T19:18:37Z","updated_at":"2016-08-15T22:56:32Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/flutter/engine/pulls/2927","html_url":"https://github.com/flutter/engine/pull/2927","diff_url":"https://github.com/flutter/engine/pull/2927.diff","patch_url":"https://github.com/flutter/engine/pull/2927.patch"},"body":"cc @abarth @jason-simmons \r\n\r\nI am not going to land this just yet. Have a another patch that deals with platform specific fences. But the basic concept is the same.\r\n\r\nHave also cleaned up the animator a bit. Will keep stress testing it some more but it seems to be holding up pretty well.\r\n\r\nAlso, `VSync` providers are now mandatory. But I realize not all platform may/can have actual vsync providers. So a fallback provider is not included. The mojo frame scheduler needs to be moved behind the same. Will do that in a final patch.\r\n"},"comment":{"url":"https://api.github.com/repos/flutter/engine/issues/comments/239953903","html_url":"https://github.com/flutter/engine/pull/2927#issuecomment-239953903","issue_url":"https://api.github.com/repos/flutter/engine/issues/2927","id":239953903,"user":{"login":"chinmaygarde","id":44085,"avatar_url":"https://avatars.githubusercontent.com/u/44085?v=3","gravatar_id":"","url":"https://api.github.com/users/chinmaygarde","html_url":"https://github.com/chinmaygarde","followers_url":"https://api.github.com/users/chinmaygarde/followers","following_url":"https://api.github.com/users/chinmaygarde/following{/other_user}","gists_url":"https://api.github.com/users/chinmaygarde/gists{/gist_id}","starred_url":"https://api.github.com/users/chinmaygarde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chinmaygarde/subscriptions","organizations_url":"https://api.github.com/users/chinmaygarde/orgs","repos_url":"https://api.github.com/users/chinmaygarde/repos","events_url":"https://api.github.com/users/chinmaygarde/events{/privacy}","received_events_url":"https://api.github.com/users/chinmaygarde/received_events","type":"User","site_admin":false},"created_at":"2016-08-15T22:56:32Z","updated_at":"2016-08-15T22:56:32Z","body":"> Also, is the idea to block the UI thread on the semaphore if it gets too far ahead?\r\n\r\nNo, the call to `flow::Pipeline::produce` is made with a zero timeout. If the pipeline cannot immediately service the production of the layer tree, the caller will try again at the next VSync.\r\n\r\n> Is the idea that the GPU thread will sit in the semaphore rather than in the event loop?\r\n\r\nNo, The call to `flow::Pipeline::consume` is also made with a zero timeout. What is currently incorrect (something I mentioned in my comment in the morning) it the desire to consume all pipeline items as soon as possible is accomplished in a tight loop. I need to yield to the platform event loop before consuming the next item as soon as possible.\r\n\r\nWe cannot ever sit in anything other than the platform event loop. This would cause all post task invocations to back up till the next time the rasterizer idles (which may never happen if the work items are expensive enough).\r\n"}}
{"actor":{"display_login":"chinmaygarde"}}