[RFC 1/9] drm: add atomic fxns
Rob Clark
rob.clark at linaro.org
Wed Sep 12 10:35:01 PDT 2012
On Wed, Sep 12, 2012 at 11:57 AM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> On Sun, 9 Sep 2012 22:03:14 -0500
> Rob Clark <rob.clark at linaro.org> wrote:
>
>> From: Rob Clark <rob at ti.com>
>>
>> The 'atomic' mechanism allows for multiple properties to be updated,
>> checked, and commited atomically. This will be the basis of atomic-
>> modeset and nuclear-pageflip.
>>
>> The basic flow is:
>>
>> state = dev->atomic_begin();
>> for (... one or more ...)
>> obj->set_property(obj, state, prop, value);
>> if (dev->atomic_check(state))
>> dev->atomic_commit(state, event);
>> dev->atomic_end(state);
>
> I think the above is more suited to drm_crtc_helper code. I think the
> top level callback should contain the arrays and be a single "multi
> flip" hook (or maybe a check then set double callback). For some
> drivers that'll end up being a lot simpler, rather than sprinkling
> atomic handling code in all the set_property callbacks.
well, there are a few other places in drm_crtc.c where I want to use
the new API, to avoid drivers having to support both atomic API and
old set_plane/page_flip stuff.. the transactional API makes that a bit
easier, I think.. or at least I don't have to construct an array on
the stack.
But I'm not entirely convinced that it is a problem.. with
drm_{crtc,plane,etc}_state, it is just building up a set of values in
a state struct, and that state struct gets atomically committed.
> Having a transactional API just seems a little messier with both the
> atomic state and per-property state to track and rollback in the case
> of failure.
For the rollback, I think I'm just going to move the array of property
values into drm_{crtc,plane,etc}_state. That way, userspace doesn't
see updated property values if they are not committed. It makes the
property value rollback automatic.
BR,
-R
> --
> Jesse Barnes, Intel Open Source Technology Center
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list