[Intel-gfx] [PATCH v2 16/27] drm/i915: move detaching scalers to begin_crtc_commit, v2.

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Wed Jun 10 20:47:51 PDT 2015


Op 11-06-15 om 03:36 schreef Matt Roper:
> On Thu, Jun 04, 2015 at 02:47:46PM +0200, Maarten Lankhorst wrote:
>> This is probably intended to be be done during vblank evasion.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_atomic.c  | 3 ---
>>  drivers/gpu/drm/i915/intel_display.c | 8 ++++----
>>  drivers/gpu/drm/i915/intel_drv.h     | 1 -
>>  3 files changed, 4 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c
>> index 7ca225194b7c..8447a1fef332 100644
>> --- a/drivers/gpu/drm/i915/intel_atomic.c
>> +++ b/drivers/gpu/drm/i915/intel_atomic.c
>> @@ -144,9 +144,6 @@ int intel_atomic_commit(struct drm_device *dev,
>>  	for_each_crtc_in_state(state, crtc, crtc_state, i) {
>>  		to_intel_crtc(crtc)->config = to_intel_crtc_state(crtc->state);
>>  
>> -		if (INTEL_INFO(dev)->gen >= 9)
>> -			skl_detach_scalers(to_intel_crtc(crtc));
>> -
>>  		drm_atomic_helper_commit_planes_on_crtc(crtc_state);
>>  	}
>>  
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index f5f074524603..2ba3d6abbd0c 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -2911,16 +2911,13 @@ unsigned long intel_plane_obj_offset(struct intel_plane *intel_plane,
>>  /*
>>   * This function detaches (aka. unbinds) unused scalers in hardware
>>   */
>> -void skl_detach_scalers(struct intel_crtc *intel_crtc)
>> +static void skl_detach_scalers(struct intel_crtc *intel_crtc)
>>  {
>>  	struct drm_device *dev;
>>  	struct drm_i915_private *dev_priv;
>>  	struct intel_crtc_scaler_state *scaler_state;
>>  	int i;
>>  
>> -	if (!intel_crtc || !intel_crtc->config)
>> -		return;
>> -
>>  	dev = intel_crtc->base.dev;
>>  	dev_priv = dev->dev_private;
>>  	scaler_state = &intel_crtc->config->scaler_state;
>> @@ -13505,6 +13502,9 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc)
>>  		intel_crtc->atomic.evade =
>>  			intel_pipe_update_start(intel_crtc,
>>  						&intel_crtc->atomic.start_vbl_count);
>> +
>> +	if (!needs_modeset(crtc->state) && INTEL_INFO(dev)->gen >= 9)
>> +		skl_detach_scalers(intel_crtc);
> I'm not sure I follow where the !needs_modeset test comes from.  Do
> these get blown away somewhere else in the modeset sequence that I'm
> overlooking?  Detaching scalers here when we are doing a modeset
> wouldn't cause actual problems would it?
No it won't cause direct problems, just unneeded since modeset disable would already disable scalers.

~Maarten


More information about the Intel-gfx mailing list