From patchwork Tue Nov 15 08:58:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 9429205 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 32C2560469 for ; Tue, 15 Nov 2016 08:58:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1DD8D286DF for ; Tue, 15 Nov 2016 08:58:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 128AC286EF; Tue, 15 Nov 2016 08:58:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C3659286DF for ; Tue, 15 Nov 2016 08:58:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EDB916E153; Tue, 15 Nov 2016 08:58:27 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 622386E570 for ; Tue, 15 Nov 2016 08:58:24 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id m203so23393100wma.3 for ; Tue, 15 Nov 2016 00:58:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=xzK2ohDe+YDKVqJ9SQve6J4/gbvURw9FFWiz6dhi6G0=; b=qfXHysOXLlEbyP4P9Jdrdvt2YpuZNgTJD7LSbpBlA3wfDTQhPSvBIeuHfQRrIa43md bMt4WRHnR0Ga0D/Y64MT1Bq53l/CNE9h9oxUnbO2/cd4mXIlpazyIbr2K0WNAxNwqetN T7tXIgy9A6mPB//UZDgDLX4zGEXnBzjweeDdyQGQ0HwAetEo1qw/neaxxlKmx1ByRnR/ dC7cH9J6EiHBF8qbmDys7iAIMah4bgKiGJEGpUDM8/QiUw8E9fFuI0kkqUT8pz0TiHuo 4IxGAr1qXdmfx+p5G/GHwNxlLc+vZRgYwbayhh1iODal6vcTuWIx5SqEMsavrTHKrfsT aPgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=xzK2ohDe+YDKVqJ9SQve6J4/gbvURw9FFWiz6dhi6G0=; b=fpceGk7GawjsUbovk3qabpnCKznYBPGdLZRqst+mxJWeiLd8hrObOJhITl1wwBvlBF 2PdFdVwPv3XXbakujn6P/aRuUr0UCypyupaHPnOm0ieF3FbPzviribjg6cemq2AhAioa 4+9EVTng6XD0kkrPfVAK3jCR7aIaHPSQtv0ELbs9RkqKZfNQ9Mv+QyUj83jmucZZvKda bWrXoUtGv8iuUjI/ubl9K1OJgM0xXUUK3BP/7z0s1XI+a2BBWsMjN/0AMuQbusuOfeoa oUCRUPQrCmtvOmKnKrtELmZ1HnLSqBDtxPBziPBt+w5hI8xgK2oAH+QwQmo0BZTK2xem Z28A== X-Gm-Message-State: ABUngveQkFZ6UyVtnmzmgp724fR8adxgbKbOgPmL4vaEN3T012PkKeNp7Awo60peVNlMyQ== X-Received: by 10.28.165.131 with SMTP id o125mr2336166wme.9.1479200302682; Tue, 15 Nov 2016 00:58:22 -0800 (PST) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id f134sm2980557wmf.19.2016.11.15.00.58.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 15 Nov 2016 00:58:22 -0800 (PST) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Tue, 15 Nov 2016 08:58:16 +0000 Message-Id: <20161115085817.4210-4-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20161115085817.4210-1-chris@chris-wilson.co.uk> References: <20161115085817.4210-1-chris@chris-wilson.co.uk> Subject: [Intel-gfx] [PATCH 4/5] drm/i915: Quick spring clean of intel_prepare_plane_fb() X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP Just a quick tidy now to make the next patch neater. Signed-off-by: Chris Wilson Reviewed-by: Daniel Vetter --- drivers/gpu/drm/i915/intel_display.c | 38 ++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index cb52116f8577..4d578dc6d23f 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -14130,6 +14130,17 @@ static int intel_atomic_check(struct drm_device *dev, return calc_watermark_data(state); } +static bool old_plane_needs_modeset(struct drm_plane *plane, + struct drm_plane_state *new_state) +{ + struct drm_crtc_state *crtc_state; + + crtc_state = drm_atomic_get_existing_crtc_state(new_state->state, + plane->state->crtc); + + return needs_modeset(crtc_state); +} + /** * intel_prepare_plane_fb - Prepare fb for usage on plane * @plane: drm plane to prepare for @@ -14153,16 +14164,11 @@ intel_prepare_plane_fb(struct drm_plane *plane, struct drm_i915_private *dev_priv = to_i915(plane->dev); struct drm_framebuffer *fb = new_state->fb; struct drm_i915_gem_object *obj = intel_fb_obj(fb); - struct drm_i915_gem_object *old_obj = intel_fb_obj(plane->state->fb); int ret; - if (!obj && !old_obj) - return 0; - - if (old_obj) { - struct drm_crtc_state *crtc_state = - drm_atomic_get_existing_crtc_state(new_state->state, - plane->state->crtc); + if (plane->state->fb && old_plane_needs_modeset(plane, new_state)) { + struct drm_i915_gem_object *old_obj = + intel_fb_obj(plane->state->fb); /* Big Hammer, we also need to ensure that any pending * MI_WAIT_FOR_EVENT inside a user batch buffer on the @@ -14175,14 +14181,12 @@ intel_prepare_plane_fb(struct drm_plane *plane, * This should only fail upon a hung GPU, in which case we * can safely continue. */ - if (needs_modeset(crtc_state)) { - ret = i915_sw_fence_await_reservation(&intel_state->commit_ready, - old_obj->resv, NULL, - false, 0, - GFP_KERNEL); - if (ret < 0) - return ret; - } + ret = i915_sw_fence_await_reservation(&intel_state->commit_ready, + old_obj->resv, NULL, + false, 0, + GFP_KERNEL); + if (ret < 0) + return ret; } if (new_state->fence) { /* explicit fencing */ @@ -14221,7 +14225,7 @@ intel_prepare_plane_fb(struct drm_plane *plane, vma = intel_pin_and_fence_fb_obj(fb, new_state->rotation); if (IS_ERR(vma)) - ret = PTR_ERR(vma); + return PTR_ERR(vma); to_intel_plane_state(new_state)->vma = vma; }