[Intel-gfx] [PATCH 9/9] drm/atomic: Add encoder_mask to crtc_state.
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Mon Dec 14 04:06:12 PST 2015
Op 04-12-15 om 09:12 schreef Daniel Vetter:
> On Thu, Dec 03, 2015 at 12:01:02PM +0100, Maarten Lankhorst wrote:
>> Op 03-12-15 om 10:53 schreef Daniel Vetter:
>>> On Tue, Nov 24, 2015 at 10:34:36AM +0100, Maarten Lankhorst wrote:
>>>> This allows iteration over encoders without requiring connection_mutex.
>>>>
>>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>>>> ---
>>>> drivers/gpu/drm/drm_atomic_helper.c | 4 ++++
>>>> drivers/gpu/drm/i915/intel_display.c | 3 +++
>>>> include/drm/drm_crtc.h | 2 ++
>>>> 3 files changed, 9 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
>>>> index fb79c54b2aed..f3fd8f131f92 100644
>>>> --- a/drivers/gpu/drm/drm_atomic_helper.c
>>>> +++ b/drivers/gpu/drm/drm_atomic_helper.c
>>>> @@ -269,6 +269,8 @@ mode_fixup(struct drm_atomic_state *state)
>>>> continue;
>>>>
>>>> drm_mode_copy(&crtc_state->adjusted_mode, &crtc_state->mode);
>>>> +
>>>> + crtc_state->encoder_mask = 0;
>>> Hm, I think a small function to set the best_encoder (like we do to set
>>> the crtc for connector or planes) would be good. Otherwise we'll frob
>>> around the code and forget this, and much confusion will ensue.
>>>
>>> That helper should probably be in core drm_atomic.c, like the other
>>> set_foo_for_bar helpers.
>> As always only i915 assigns best_encoder outside drm_atomic_helper_check_modeset, and the i915 calls can't be fixed because of hw readout. :(
>> At the time of mode_fixup all encoders should have been updated, so I'm not sure adding a helper for best_encoder would help much..
> I've meant just for the atomic helpers. i915 is a mess, yes, but that's
> not really an excuse to not make shared code pretty ;-)
>
It's not really possible to do it in a helper. The encoder might be moved with the connector, or have a fixed mapping depending on crtc. (i915 MST)
So unfortunately there can be no generic helper, but it has to be dealt with in this function, when assigning best_encoder per crtc.
~Maarten
More information about the dri-devel
mailing list