question about replacing legacy_cursor_flag by async_update

Daniel Vetter daniel at ffwll.ch
Fri Feb 15 16:45:55 UTC 2019


On Fri, Feb 15, 2019 at 10:25:03AM -0200, Helen Koike wrote:
> Hello,
> 
> The legacy_cursor_update flag in the drm_atomic_state struct was being
> used to track if the update was asyncronous or not for the cursor plane.
> Which is really similar to what the async_update flag do, so I was
> trying to get rid of the legacy_cursor_update flag (just for cleanup).
> 
> So I did this patch:
> https://gitlab.collabora.com/koike/linux/commit/fc15e4ef745863e249f3a5a23b4ba2e1087045ea
> 
> But, this doesn't work due to the change in
> drm_atomic_helper_setup_commit() function, It looks that it should work,
> because of the comment in this function:
> 
> @@ -1957,7 +1953,7 @@ int drm_atomic_helper_setup_commit(struct
> drm_atomic_state *state,
>                         continue;
>                 }
> 
>                 /* Legacy cursor updates are fully unsynced. */
>                 //if (state->async_update) { // This doesn't work for
> some reason
>                 if (state->legacy_cursor_update) {
>                         complete_all(&commit->flip_done);
>                         continue;
> 
> 
> But it doesn't work when I have a case where legacy_cursor_update = true but
> async_update = false, so I was wondering, is there any difference between
> unsynced (as mentioned by the comment) and asyncronous ?

So the ->legacy_cursor_update thing was a hack to implement legacy cursor
semantics on top of atomic. It really didn't work well, and the new plan
was to use async plane updates.

Except those don't work well and fail to support async fb updates because
of the prepare/cleanup_fb issue. But the goal is to completely get rid of
the ->legacy_cursor_update hack (it really doesn't work well), and improve
async updates enough to be useful for cursors.

So all the ->legacy_cursor_update code should simply be removed in the
end, once async is good enough (and all relevant drivers converted).

That's at least my plan, since the driver semantics of
->legacy_cursor_update are extremely ill-defined I don't think a more
gradual approach will work out.
-Daniel

> 
> I'm still trying to understand the code by myself, but any help would be
> appreciated.
> 
> Thanks a lot
> Helen

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list