Quoting Daniel Vetter (2017-07-19 14:24:20)
On Wed, Jul 19, 2017 at 02:07:36PM +0100, Chris Wilson wrote:
Quoting Daniel Vetter (2017-07-19 13:55:01)
This gets rid of all the interactions between the legacy flip code and the modeset code. Yay!
Including our missed vblank boosting. (That's been dead for a while.)
Hm right, but should be easy to add (and bonus, for every display update, not just flips) in the intel_sw_fence_wait function. Can you pls point me at what function I should call to reverse-boost an i915_sw_fence (and only that)?
You would have to walk the tree of input sw fences, detect those are dma_fences and check if they are a request. Then for each request mark it as boosted. That information is easier to keep during construction rather than recovering it later, though honestly, I would just boost the exclusive fences for the atomic state, i.e. use the reservation_object under the assumption that the snapshot hasn't drifted too much.
Then we could queue up a vblank callback that fires on the next vblank for any of the CRTC in the update and boosts the i915_sw_fence. If we just boost the fence (instead of the context or something) it should also be easy to filter out boosting when the request has completed meanwhile.
Yup, boosting is now completely tied to requests. -Chris