[Intel-gfx] [PATCH v2 08/17] drm/i915: Set mode_changed for audio in intel_modeset_pipe_config()

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Mon May 18 09:37:13 PDT 2015


Op 18-05-15 om 17:36 schreef Daniel Vetter:
> On Wed, May 13, 2015 at 10:23:38PM +0200, Maarten Lankhorst wrote:
>> From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
>>
>> A follow up patch will make intel_modeset_compute_config() deal with
>> multiple crtcs, so move crtc specific stuff into the lower level crtc
>> specific function.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_display.c | 51 ++++++++++++++++++++----------------
>>  1 file changed, 28 insertions(+), 23 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 583c9105cf49..ec548cbb06ee 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -427,6 +427,12 @@ static void vlv_clock(int refclk, intel_clock_t *clock)
>>  	clock->dot = DIV_ROUND_CLOSEST(clock->vco, clock->p);
>>  }
>>  
>> +static bool
>> +needs_modeset(struct drm_crtc_state *state)
>> +{
>> +	return state->mode_changed || state->active_changed;
>> +}
>> +
>>  /**
>>   * Returns whether any output on the specified pipe is of the specified type
>>   */
>> @@ -11387,6 +11393,15 @@ intel_modeset_pipe_config(struct drm_crtc *crtc,
>>  		return -EINVAL;
>>  	}
>>  
>> +	/*
>> +	 * XXX: Add all connectors to make the crtc state match the encoders.
>> +	 */
>> +	if (!needs_modeset(&pipe_config->base)) {
>> +		ret = drm_atomic_add_affected_connectors(state, crtc);
>> +		if (ret)
>> +			return ret;
>> +	}
> Comment aside: Eventually we need to invert this check and use
> intel_pipe_config_compare with a special mode to a) not scream into dmesg
> b) ignore any changes we can fixup without a full modeset (i.e. pfit). And
> then use that to decide whether we need a modeset or not for the crtc.
> We still rely upon our internal set_mode functions to at least in some
> cases do an unconditional modeset on the passed-in crtc for property
> updates. But once converted to atomic we need to be more intelligent,
> especially since userspace expects no-op changes to get filtered out. So
> unconditionally doing a modeset wont cut it either (with the current code
> all the set_prop hooks have such checks hand-rolled).
Yeah, but for now I can't get that to work properly until everything looks more atomic first.

~Maarten


More information about the Intel-gfx mailing list