Ville,
On 2018-01-25 16:51, Ville Syrjälä wrote:
> On Thu, Jan 25, 2018 at 04:40:48PM +0200, Ville Syrjälä wrote:
>> On Thu, Jan 25, 2018 at 04:26:25PM +0200, Peter Ujfalusi wrote:
>>> Instead of drivers duplicating the drm_atomic_helper_check() code to be
>>> able to normalize the zpos they can use the normalize_zpos flag to let the
>>> drm core to do it.
>>>
>>> Signed-off-by: Peter Ujfalusi <[email protected]>
>>> ---
>>> drivers/gpu/drm/drm_atomic_helper.c | 11 +++++++++++
>>> include/drm/drm_mode_config.h | 8 ++++++++
>>> include/drm/drm_plane.h | 4 ++--
>>> 3 files changed, 21 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/drm_atomic_helper.c
>>> b/drivers/gpu/drm/drm_atomic_helper.c
>>> index ab4032167094..0f6a4949e6dc 100644
>>> --- a/drivers/gpu/drm/drm_atomic_helper.c
>>> +++ b/drivers/gpu/drm/drm_atomic_helper.c
>>> @@ -873,6 +873,11 @@ EXPORT_SYMBOL(drm_atomic_helper_check_planes);
>>> * functions depend upon an updated adjusted_mode.clock to e.g. properly
>>> compute
>>> * watermarks.
>>> *
>>> + * Note that zpos normalization will add all enable planes to the state
>>> which
>>> + * might not desired for some drivers.
>>> + * For example enable/disable of a cursor plane which have fixed zpos value
>>> + * would trigger all other enabled planes to be forced to the state change.
>>> + *
>>> * RETURNS:
>>> * Zero for success or -errno
>>> */
>>> @@ -885,6 +890,12 @@ int drm_atomic_helper_check(struct drm_device *dev,
>>> if (ret)
>>> return ret;
>>>
>>> + if (dev->mode_config.normalize_zpos) {
>>> + ret = drm_atomic_normalize_zpos(dev, state);
>>> + if (ret)
>>> + return ret;
>>> + }
>>
>> I think we originally had this in drm_atomic_helper_check_planes().
>> Looking through some of the drivers it looks like we could maybe
>> kill a few more LOC by putting it there.
>
> Actually, I guess it's fine as is. I though the "async" flip thing I
> saw in some of the drivers wasn't in the atomic helper. But it is
> there.
>
> That actually makes me slightly worried whether it's safe to just
> blindly replace the hand rolled stuff w/o "async" with
> drm_atomic_helper_check(). The commit messages should perhaps
> justify that somehow.
I only changed 'hand rolled' stuff in the drivers where the local
.atomic_check implementation is the same as the
drm_atomic_helper_check() or in case of rcar-du, where I removed the
drm_atomic_helper_check() part from the custom callback and let it call
the function itself.
I'm not sure if I understand the problem. This series does the following
in essence:
drm_atomic_helper_check(...)
{
/* does A */
}
driver_hand_rolled_atomic_helper_check(...)
{
/* does A */
}
- .atomic_check = driver_hand_rolled_atomic_helper_check,
+ .atomic_check = drm_atomic_helper_check,
I'm most likely missing something, but not sure what.
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel