From patchwork Thu Jul 2 14:33:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 6710631 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id DE8749F1C1 for ; Thu, 2 Jul 2015 14:31:13 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 03AAB2072F for ; Thu, 2 Jul 2015 14:31:13 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id B0DB42072B for ; Thu, 2 Jul 2015 14:31:11 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DF5426EC8C; Thu, 2 Jul 2015 07:31:10 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wg0-f47.google.com (mail-wg0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id 802706EC8A for ; Thu, 2 Jul 2015 07:31:08 -0700 (PDT) Received: by wgjx7 with SMTP id x7so64790433wgj.2 for ; Thu, 02 Jul 2015 07:31:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BFxsUVjgUhnouxml1y+j1l1zb2HL9hquHUiwIyOpcrc=; b=S8GAqDoyfQSqK+o1ml9p4HMIYkmJCfhzWNLRlaXxTe5EH6v6dQcKPdDtoverVrdJ9s lrHJRx4646DXIbsnw4nYJM9ltASEc9CcCTZ6iiwDX4LQsH+mRYtcYH7Ekp8B7BgeuSAi vVQSNriSYovs0RADNEK/GMgfh3shXoMNYdyJk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BFxsUVjgUhnouxml1y+j1l1zb2HL9hquHUiwIyOpcrc=; b=FkuXKi60YtHoi1fAmqOm1ASSJivVTmo/egfIbqh6SdlHPQMHKnxqidewDP2UcvAmvP tfrH4nKwhdrNBCCq4/bMtUpBWmuccRC8SBRqNbfjNHtJ3RhoZsNCbahf5J4gLFDSsdXC u4mU6Y7fgeJ8RyI4ouNzELn8Kl5eIbqkqUEgavOlQrnPxBPqsEZ4LOtptaaeVl5tN09X 0jxGiMG0HQccO+Nd7qFHpYBT6cdw/hvXyn7NETd5d+1RpThO9Wx87Z9SCKMaZGDAekWJ RN7GcFymURIxyI8TEByCcIGxI8CYxdkfeuyn93H1YM0Jvb4BZpX+Qqp97BPq/cHQkYxa hKUw== X-Gm-Message-State: ALoCoQkT2jGo89L2EGpKNbsU8subblG5V4B6VtQjs01fd+TMRs31FDCbvAmRnF+JRnsMBvb4QQOQ X-Received: by 10.180.95.10 with SMTP id dg10mr16850967wib.41.1435847467102; Thu, 02 Jul 2015 07:31:07 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-109.fiber7.init7.net. [212.51.149.109]) by mx.google.com with ESMTPSA id f8sm8963130wiy.7.2015.07.02.07.31.05 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 Jul 2015 07:31:05 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH] drm: reset empty state in transitional helpers Date: Thu, 2 Jul 2015 16:33:53 +0200 Message-Id: <1435847633-22725-1-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.1.4 In-Reply-To: <4C658DEE-AEB2-474D-BB43-FF67DD542DBA@collabora.com> References: <4C658DEE-AEB2-474D-BB43-FF67DD542DBA@collabora.com> Cc: Daniel Vetter , Intel Graphics Development , Daniel Stone , Daniel Vetter X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Transitional drivers might not have all the state frobbing lined up yet. But since the initial code has been merged a lot more state was added, so we really need this. Cc: Daniel Stone Signed-off-by: Daniel Vetter Tested-by: Zhao Junwang Reviewed-by: Daniel Stone --- drivers/gpu/drm/drm_crtc_helper.c | 8 +++++--- drivers/gpu/drm/drm_plane_helper.c | 16 ++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index 93104f3555f5..d3dfb0ebbeb2 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c @@ -927,10 +927,12 @@ int drm_helper_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mod if (crtc->funcs->atomic_duplicate_state) crtc_state = crtc->funcs->atomic_duplicate_state(crtc); - else if (crtc->state) + else { + if (!crtc->state) + drm_atomic_helper_crtc_reset(crtc); + crtc_state = drm_atomic_helper_crtc_duplicate_state(crtc); - else - crtc_state = kzalloc(sizeof(*crtc_state), GFP_KERNEL); + } if (!crtc_state) return -ENOMEM; diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c index 2f0ed11024eb..b07a213f5655 100644 --- a/drivers/gpu/drm/drm_plane_helper.c +++ b/drivers/gpu/drm/drm_plane_helper.c @@ -525,10 +525,12 @@ int drm_plane_helper_update(struct drm_plane *plane, struct drm_crtc *crtc, if (plane->funcs->atomic_duplicate_state) plane_state = plane->funcs->atomic_duplicate_state(plane); - else if (plane->state) + else { + if (!plane->state) + drm_atomic_helper_plane_reset(plane); + plane_state = drm_atomic_helper_plane_duplicate_state(plane); - else - plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL); + } if (!plane_state) return -ENOMEM; plane_state->plane = plane; @@ -572,10 +574,12 @@ int drm_plane_helper_disable(struct drm_plane *plane) if (plane->funcs->atomic_duplicate_state) plane_state = plane->funcs->atomic_duplicate_state(plane); - else if (plane->state) + else { + if (!plane->state) + drm_atomic_helper_plane_reset(plane); + plane_state = drm_atomic_helper_plane_duplicate_state(plane); - else - plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL); + } if (!plane_state) return -ENOMEM; plane_state->plane = plane;