diff mbox

[v2,18/20] drm/i915: Only commit planes on crtc's that have changed planes.

Message ID 1436252911-5703-19-git-send-email-maarten.lankhorst@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Maarten Lankhorst July 7, 2015, 7:08 a.m. UTC
No point in applying vblank evasion if there's nothing to evade.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Daniel Vetter July 7, 2015, 9:33 a.m. UTC | #1
On Tue, Jul 07, 2015 at 09:08:29AM +0200, Maarten Lankhorst wrote:
> No point in applying vblank evasion if there's nothing to evade.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 71fc35d814d1..2eaccdc59a9a 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13288,7 +13288,10 @@ static int intel_atomic_commit(struct drm_device *dev,
>  		if (!modeset)
>  			intel_pre_plane_update(intel_crtc);
>  
> -		drm_atomic_helper_commit_planes_on_crtc(crtc_state);
> +		if (crtc->state->planes_changed ||
> +		    to_intel_crtc_state(crtc->state)->update_pipe)
> +			drm_atomic_helper_commit_planes_on_crtc(crtc_state);

What if we change some crtc property which is updated under vblank
evasion, but no plane state? e.g. background color. Imo trying to optimize
this doesn't speed up any common case, but makes things more fragile.
-Daniel

> +
>  		intel_post_plane_update(intel_crtc);
>  	}
>  
> -- 
> 2.1.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Maarten Lankhorst July 7, 2015, 10:51 a.m. UTC | #2
Op 07-07-15 om 11:33 schreef Daniel Vetter:
> On Tue, Jul 07, 2015 at 09:08:29AM +0200, Maarten Lankhorst wrote:
>> No point in applying vblank evasion if there's nothing to evade.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_display.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 71fc35d814d1..2eaccdc59a9a 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -13288,7 +13288,10 @@ static int intel_atomic_commit(struct drm_device *dev,
>>  		if (!modeset)
>>  			intel_pre_plane_update(intel_crtc);
>>  
>> -		drm_atomic_helper_commit_planes_on_crtc(crtc_state);
>> +		if (crtc->state->planes_changed ||
>> +		    to_intel_crtc_state(crtc->state)->update_pipe)
>> +			drm_atomic_helper_commit_planes_on_crtc(crtc_state);
> What if we change some crtc property which is updated under vblank
> evasion, but no plane state? e.g. background color. Imo trying to optimize
> this doesn't speed up any common case, but makes things more fragile.
>
update_pipe = true.

~Maarten
Daniel Vetter July 7, 2015, 1:22 p.m. UTC | #3
On Tue, Jul 07, 2015 at 12:51:06PM +0200, Maarten Lankhorst wrote:
> Op 07-07-15 om 11:33 schreef Daniel Vetter:
> > On Tue, Jul 07, 2015 at 09:08:29AM +0200, Maarten Lankhorst wrote:
> >> No point in applying vblank evasion if there's nothing to evade.
> >>
> >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/intel_display.c | 5 ++++-
> >>  1 file changed, 4 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> >> index 71fc35d814d1..2eaccdc59a9a 100644
> >> --- a/drivers/gpu/drm/i915/intel_display.c
> >> +++ b/drivers/gpu/drm/i915/intel_display.c
> >> @@ -13288,7 +13288,10 @@ static int intel_atomic_commit(struct drm_device *dev,
> >>  		if (!modeset)
> >>  			intel_pre_plane_update(intel_crtc);
> >>  
> >> -		drm_atomic_helper_commit_planes_on_crtc(crtc_state);
> >> +		if (crtc->state->planes_changed ||
> >> +		    to_intel_crtc_state(crtc->state)->update_pipe)
> >> +			drm_atomic_helper_commit_planes_on_crtc(crtc_state);
> > What if we change some crtc property which is updated under vblank
> > evasion, but no plane state? e.g. background color. Imo trying to optimize
> > this doesn't speed up any common case, but makes things more fragile.
> >
> update_pipe = true.

Ah that's added in patch 12, which I've ignored a bit. I guess means we
need to hold off on this one too until fastboot has settled more.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 71fc35d814d1..2eaccdc59a9a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13288,7 +13288,10 @@  static int intel_atomic_commit(struct drm_device *dev,
 		if (!modeset)
 			intel_pre_plane_update(intel_crtc);
 
-		drm_atomic_helper_commit_planes_on_crtc(crtc_state);
+		if (crtc->state->planes_changed ||
+		    to_intel_crtc_state(crtc->state)->update_pipe)
+			drm_atomic_helper_commit_planes_on_crtc(crtc_state);
+
 		intel_post_plane_update(intel_crtc);
 	}