diff mbox

[5/5] drm/i915: flip on a no fb -> fb transition if crtc is active v3

Message ID 1372199899-5315-6-git-send-email-jbarnes@virtuousgeek.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jesse Barnes June 25, 2013, 10:38 p.m. UTC
If the crtc is active, we can simply flip a new fb onto it, provided the
other mode setting reqs are met.  Otherwise, we'll need to do a full
mode set to re-enable the crtc.

v2: check for crtc active and set mode_changed accordingly
v3: add module parameter, i915.fastboot, to control no fb -> fb flip behavior

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_display.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Comments

Daniel Vetter June 30, 2013, 7:33 p.m. UTC | #1
On Wed, Jun 26, 2013 at 01:38:19AM +0300, Jesse Barnes wrote:
> If the crtc is active, we can simply flip a new fb onto it, provided the
> other mode setting reqs are met.  Otherwise, we'll need to do a full
> mode set to re-enable the crtc.
> 
> v2: check for crtc active and set mode_changed accordingly
> v3: add module parameter, i915.fastboot, to control no fb -> fb flip behavior
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

Ok, I've slurped this in. Not too impressed with tiny commit messages for
the first two patches though, but I've fixed that up while applying.

Commit message that just do a random change but fail to explain the why
aren't good enough. Same for failing to highlight a tricky part of the
patch.

Cheers, Daniel

> ---
>  drivers/gpu/drm/i915/intel_display.c |   12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index a55e1e5..0e7324d 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -8667,8 +8667,16 @@ intel_set_config_compute_mode_changes(struct drm_mode_set *set,
>  	if (set->crtc->fb != set->fb) {
>  		/* If we have no fb then treat it as a full mode set */
>  		if (set->crtc->fb == NULL) {
> -			DRM_DEBUG_KMS("crtc has no fb, full mode set\n");
> -			config->mode_changed = true;
> +			struct intel_crtc *intel_crtc =
> +				to_intel_crtc(set->crtc);
> +
> +			if (intel_crtc->active && i915_fastboot) {
> +				DRM_DEBUG_KMS("crtc has no fb, will flip\n");
> +				config->fb_changed = true;
> +			} else {
> +				DRM_DEBUG_KMS("inactive crtc, full mode set\n");
> +				config->mode_changed = true;
> +			}
>  		} else if (set->fb == NULL) {
>  			config->mode_changed = true;
>  		} else if (set->fb->pixel_format !=
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index a55e1e5..0e7324d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8667,8 +8667,16 @@  intel_set_config_compute_mode_changes(struct drm_mode_set *set,
 	if (set->crtc->fb != set->fb) {
 		/* If we have no fb then treat it as a full mode set */
 		if (set->crtc->fb == NULL) {
-			DRM_DEBUG_KMS("crtc has no fb, full mode set\n");
-			config->mode_changed = true;
+			struct intel_crtc *intel_crtc =
+				to_intel_crtc(set->crtc);
+
+			if (intel_crtc->active && i915_fastboot) {
+				DRM_DEBUG_KMS("crtc has no fb, will flip\n");
+				config->fb_changed = true;
+			} else {
+				DRM_DEBUG_KMS("inactive crtc, full mode set\n");
+				config->mode_changed = true;
+			}
 		} else if (set->fb == NULL) {
 			config->mode_changed = true;
 		} else if (set->fb->pixel_format !=