From patchwork Tue Oct 17 09:28:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 154004 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4008221vqb; Tue, 17 Oct 2023 02:30:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG8H/Ir/JQeLqlQJwN5qmbyg1ZUpk8OkqVXRrO/ZH5B5GeGlk7zyCy1q56qIX205QxfA5rH X-Received: by 2002:a05:6a20:c182:b0:13d:fff1:c672 with SMTP id bg2-20020a056a20c18200b0013dfff1c672mr1695855pzb.4.1697535051949; Tue, 17 Oct 2023 02:30:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697535051; cv=none; d=google.com; s=arc-20160816; b=bS6NvIzuPx5Ks9EbKkdraKd0bpMq59bPkjtQL9TXqqxP5WcAWaL8OpGyMyqQG8OBmK lqjnO1KvmJ4fXxhleBzzITKoRsNExhaSm78QyTVxSlwQCQzswwi34+kDvAWtPrV7ovta r28mfiHZKBDROER3hgG55PvhfrB95wcFGHErOb2OSUV3VUA7A10OGUirBvptdTunBRVG stzxAUMeLQnqcLyevOJuwK+SvWBWpFUnGUHTR3FoaXYtNBnt6Fj3ACpDNKRzN2yj7uGp uR2GVdrHsJIcMF4DgQuNN2b3jX5sLbcHr1v6FbZ5MXTvbVdLmTpgoS7IU2JIz909g2X0 uQyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=M0OhnC9PF7mmN9DYZd8NiL3IgQoyU0UGHjNLFnu9l9M=; fh=SJQ48KwEv1Wk78SyBTKjV1EcFj2vZ5p6XYIidAE2t8E=; b=YEljb/D4mPs40W98KEBmNn8KdmWG4Vo1LBkb2j+tOuym7IF/eODFYTOWkmhLKKzafu nMppoNU+2E7t+pq/gHAisC3Dxw5EJxRP41UiQDtp02xeJDcPazvkVeCxVG+ye5+M8J7C yWQCy3N8BPXUrad+mvcy2kgHcEe068uoS2giOqoHlAMl/BsitJzsGjsLMBWO3f1IWnJM CVrE6dsAhsRPRjAtBVHz3Q4RZ56/kBz1NWSG8+WX+AXQSi3L6G+qzC5afW1atNzG18ML 1yHmmFELuBXbJuQd9qs68sxIoKcCidsyVgNolqVNXERRaG6LQL2B5kGstyMBDWhcQ8u1 i3CA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=sJ3DFzHx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id bw32-20020a056a0204a000b005aa6b242005si1591348pgb.24.2023.10.17.02.30.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 02:30:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=sJ3DFzHx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id BECB88067F4F; Tue, 17 Oct 2023 02:30:41 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343552AbjJQJ37 (ORCPT + 19 others); Tue, 17 Oct 2023 05:29:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234974AbjJQJ3f (ORCPT ); Tue, 17 Oct 2023 05:29:35 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCE4819A0 for ; Tue, 17 Oct 2023 02:28:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=M0OhnC9PF7mmN9DYZd8NiL3IgQoyU0UGHjNLFnu9l9M=; b=sJ3DFzHxiczoUhJfKkJeBA7h6K 5Jnaw6qrt0Z/y3EIp9gfLHExSFw5sOOy2tLkOiTo7eJeYNIqPtcjqGBuFaEeM96sQhhKuACClA5H4 8gw01zMH2Z1T0XU11+XK5974jiTVsMf4x0tPxaDJIWSxdv5/ZSnNsP6NbYHzp/5QuVBDYNngagYb2 zqGzoWw7uBNDTLUfWocH7p0QpI1csmrGblgu2C+uNXEL9/Rw+Y2QN9QKS1E4euaiAdLyxi4B+czxq pDJktObFE3Lsb/6740B6jp1ZV4z9L/DvzNl8h7iPGjuvpKmY4d5tjtephXwH3/Uv7eiiT1nPGcPyL 8gU+vyqw==; Received: from 167.red-81-39-185.dynamicip.rima-tde.net ([81.39.185.167] helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qsgNc-001ODF-3b; Tue, 17 Oct 2023 11:28:48 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pierre-eric.pelloux-prayer@amd.com, =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , =?utf-8?q?Michel_D?= =?utf-8?q?=C3=A4nzer?= , "Randy Dunlap" , "Pekka Paalanen" , hwentlan@amd.com, kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, joshua@froggi.es, Simon Ser , =?utf-8?q?Andr=C3=A9_Alm?= =?utf-8?q?eida?= Subject: [PATCH v7 1/6] drm: allow DRM_MODE_PAGE_FLIP_ASYNC for atomic commits Date: Tue, 17 Oct 2023 11:28:32 +0200 Message-ID: <20231017092837.32428-2-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231017092837.32428-1-andrealmeid@igalia.com> References: <20231017092837.32428-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 17 Oct 2023 02:30:41 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779994514885912708 X-GMAIL-MSGID: 1779994514885912708 From: Simon Ser If the driver supports it, allow user-space to supply the DRM_MODE_PAGE_FLIP_ASYNC flag to request an async page-flip. Set drm_crtc_state.async_flip accordingly. Document that drivers will reject atomic commits if an async flip isn't possible. This allows user-space to fall back to something else. For instance, Xorg falls back to a blit. Another option is to wait as close to the next vblank as possible before performing the page-flip to reduce latency. Signed-off-by: Simon Ser Reviewed-by: Alex Deucher Co-developed-by: André Almeida Signed-off-by: André Almeida --- drivers/gpu/drm/drm_atomic_uapi.c | 28 +++++++++++++++++++++++++--- include/uapi/drm/drm_mode.h | 9 +++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index 98d3b10c08ae..a15121e75a0a 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1323,6 +1323,18 @@ static void complete_signaling(struct drm_device *dev, kfree(fence_state); } +static void +set_async_flip(struct drm_atomic_state *state) +{ + struct drm_crtc *crtc; + struct drm_crtc_state *crtc_state; + int i; + + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { + crtc_state->async_flip = true; + } +} + int drm_mode_atomic_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { @@ -1363,9 +1375,16 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, } if (arg->flags & DRM_MODE_PAGE_FLIP_ASYNC) { - drm_dbg_atomic(dev, - "commit failed: invalid flag DRM_MODE_PAGE_FLIP_ASYNC\n"); - return -EINVAL; + if (!dev->mode_config.async_page_flip) { + drm_dbg_atomic(dev, + "commit failed: DRM_MODE_PAGE_FLIP_ASYNC not supported\n"); + return -EINVAL; + } + if (dev->mode_config.atomic_async_page_flip_not_supported) { + drm_dbg_atomic(dev, + "commit failed: DRM_MODE_PAGE_FLIP_ASYNC not supported with atomic\n"); + return -EINVAL; + } } /* can't test and expect an event at the same time. */ @@ -1468,6 +1487,9 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, if (ret) goto out; + if (arg->flags & DRM_MODE_PAGE_FLIP_ASYNC) + set_async_flip(state); + if (arg->flags & DRM_MODE_ATOMIC_TEST_ONLY) { ret = drm_atomic_check_only(state); } else if (arg->flags & DRM_MODE_ATOMIC_NONBLOCK) { diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h index ea1b639bcb28..04e6a3caa675 100644 --- a/include/uapi/drm/drm_mode.h +++ b/include/uapi/drm/drm_mode.h @@ -957,6 +957,15 @@ struct hdr_output_metadata { * Request that the page-flip is performed as soon as possible, ie. with no * delay due to waiting for vblank. This may cause tearing to be visible on * the screen. + * + * When used with atomic uAPI, the driver will return an error if the hardware + * doesn't support performing an asynchronous page-flip for this update. + * User-space should handle this, e.g. by falling back to a regular page-flip. + * + * Note, some hardware might need to perform one last synchronous page-flip + * before being able to switch to asynchronous page-flips. As an exception, + * the driver will return success even though that first page-flip is not + * asynchronous. */ #define DRM_MODE_PAGE_FLIP_ASYNC 0x02 #define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4 From patchwork Tue Oct 17 09:28:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 154005 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4008323vqb; Tue, 17 Oct 2023 02:31:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHToPGCxw2rp1mh1+XsVC8W1ZxwR6f2Hzf5pzb96VkzS1/wsSPqt5f0/AvA2Z3tk9ODBGOi X-Received: by 2002:a05:6a00:1c92:b0:690:d0d4:6fb0 with SMTP id y18-20020a056a001c9200b00690d0d46fb0mr1699037pfw.3.1697535063153; Tue, 17 Oct 2023 02:31:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697535063; cv=none; d=google.com; s=arc-20160816; b=TuiqePs81PQ9qr3vkC1tFSprqkeUNeijueeANk448L0dvujhL8fweL3agxugEkvRv7 z+DKEkIEq9JI6uNNiY73sV7HH7zOHNsZX1+N5DQ9aWc+Y1k6qx1uiggCdKWkQPJbTL0d X9A8AATvMnOvWgR92wIrfT7zJDPxEsR1ub3E/IofHPGx5PywbQ/g5m/V3oKa2p1LYqZF MjLg+S1wizBje+Bx1+vq0GfAnD/qC3Ucz9sZFM2Np+jk7tT7aA49wPWoqt/VP3PRvulu H4xK0tAgSwD/06lQIv0pYud7gUkOXo/EInCcFeu70ksi3Q/x3OQ88IseR8DNXfMdZCEV r6ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=dQbTPqJByKTPRLvnAel3VnOmQ8OJEdk4CamVdOalghI=; fh=SJQ48KwEv1Wk78SyBTKjV1EcFj2vZ5p6XYIidAE2t8E=; b=Y2sij69W+iFJvGVGxxKriBVGeeZ6W6UBCwskZu4VI3SvYB1/yMMoTd3lcWkKartaOR UHA4yhaSqtQ20V0a0ZaBwn7H1mDeSF9bhvn0pr7ppujH5jeIpCoxtKZDJgDrI7ot96eo ffUVR+bG5kSG3GjnRuSbXleYSTrjQ5tnTfN6Wa/d+Sw4vvZyz/6MsbCAN4n8XOG7Z7JR GnBv835Ib1+J3y+BhBOAU64IoSHQdiggQ76D/V7I3LL3TscAeu+pVXLrDiTB3qggbIMe s9evEJ9a2KfA8zA24CWD28fwmYgDvA20ruCKx1UTRy5vB3eFDAoywxaddWFf8YUOzzRs 0twg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=Jo4AZzxO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id p20-20020a056a000a1400b006be26499bbasi1285876pfh.278.2023.10.17.02.31.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 02:31:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=Jo4AZzxO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id D94C2808D692; Tue, 17 Oct 2023 02:30:59 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343583AbjJQJam (ORCPT + 19 others); Tue, 17 Oct 2023 05:30:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234983AbjJQJ3h (ORCPT ); Tue, 17 Oct 2023 05:29:37 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC6FD199F for ; Tue, 17 Oct 2023 02:28:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=dQbTPqJByKTPRLvnAel3VnOmQ8OJEdk4CamVdOalghI=; b=Jo4AZzxOJkvJwxXWTfsE4Zgt2X tna5CGyRFMLVrCxn47Sl65mR1FIEwyISddy7xwMy+fEIaxagAf/9OEpbAAuWxuLd468gHLC0EH578 zbq7wjpIoZ/fh3JIiKiN5rjJT83EJXAd8H/UzP9epr04TMXr5veA4Ozr5oJMuQlKDK9kXqiWt6OOh sV9Dof/7cYavl/94toW4W0aSA8cambcnrPddNU+VqDMcfLEwwapJ+j5+OvbHsoKjFwqbA/x+Pibzx eArWy4+R/cjXY3f1J3Kue+p0/m1CtarjEulzASj4Wv1Q+711DmyWnZCzBPCfwf7LyuV15ohSf0ljZ X3359AqA==; Received: from 167.red-81-39-185.dynamicip.rima-tde.net ([81.39.185.167] helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qsgNc-001ODF-T9; Tue, 17 Oct 2023 11:28:48 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pierre-eric.pelloux-prayer@amd.com, =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , =?utf-8?q?Michel_D?= =?utf-8?q?=C3=A4nzer?= , "Randy Dunlap" , "Pekka Paalanen" , hwentlan@amd.com, kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, joshua@froggi.es, Simon Ser , =?utf-8?q?Andr=C3=A9_Alm?= =?utf-8?q?eida?= Subject: [PATCH v7 2/6] drm: introduce DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP Date: Tue, 17 Oct 2023 11:28:33 +0200 Message-ID: <20231017092837.32428-3-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231017092837.32428-1-andrealmeid@igalia.com> References: <20231017092837.32428-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 17 Oct 2023 02:30:59 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779994526489173163 X-GMAIL-MSGID: 1779994526489173163 From: Simon Ser This new kernel capability indicates whether async page-flips are supported via the atomic uAPI. DRM clients can use it to check for support before feeding DRM_MODE_PAGE_FLIP_ASYNC to the kernel. Make it clear that DRM_CAP_ASYNC_PAGE_FLIP is for legacy uAPI only. Signed-off-by: Simon Ser Reviewed-by: André Almeida Reviewed-by: Alex Deucher Signed-off-by: André Almeida --- drivers/gpu/drm/drm_ioctl.c | 5 +++++ include/uapi/drm/drm.h | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 77590b0f38fa..a96e7acb9071 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -301,6 +301,11 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_ case DRM_CAP_CRTC_IN_VBLANK_EVENT: req->value = 1; break; + case DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP: + req->value = drm_core_check_feature(dev, DRIVER_ATOMIC) && + dev->mode_config.async_page_flip && + !dev->mode_config.atomic_async_page_flip_not_supported; + break; default: return -EINVAL; } diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 794c1d857677..58baefe32c23 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -713,7 +713,8 @@ struct drm_gem_open { /** * DRM_CAP_ASYNC_PAGE_FLIP * - * If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC. + * If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for legacy + * page-flips. */ #define DRM_CAP_ASYNC_PAGE_FLIP 0x7 /** @@ -773,6 +774,13 @@ struct drm_gem_open { * :ref:`drm_sync_objects`. */ #define DRM_CAP_SYNCOBJ_TIMELINE 0x14 +/** + * DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP + * + * If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for atomic + * commits. + */ +#define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP 0x15 /* DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap { From patchwork Tue Oct 17 09:28:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 154002 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4008168vqb; Tue, 17 Oct 2023 02:30:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE25R4pe6Q0elXBofvVAXeB5us5D5ydJIGhlS4NyN5if6s7FxUTug/z8MuNIB98/iGzmWUn X-Received: by 2002:a05:6870:cb89:b0:192:6fce:d3be with SMTP id ov9-20020a056870cb8900b001926fced3bemr1733079oab.1.1697535047860; Tue, 17 Oct 2023 02:30:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697535047; cv=none; d=google.com; s=arc-20160816; b=rHVnZ7MV0PoL3gNvapFd0yvHegDp89zA+higRzlEtfqpDdJ7uLF53G0uuG2mhJx3Xs XmzZrAam493TXaGQ9P4iyGJBWlGZuPUYP7v2hwfKhyCBUPLhowo0+gHDA8Na3VKyS75J UBzJo5Qt1FftOwyYUSyLYDzC/rOWDMSq336SfEcXZ5KIdH34x0t2EUkcSFdNqzdPABQ6 pzYUQ3bqwM5jtG7znFYI3N87wAHfrYT1Fo8re7mXT6SpiIqqdHyilrZbcaSNCwGCo9fm WYDjTMy+zZzPKJFx5y0qAGcKctoooZ1oR8FLCKLgpsO3jVBlNxYHP3Lbe1+9/tGdYTgz Zm0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HWrONDqmpBZExl+KmZOR+g0MAZyWOT9PSDRXuOxGP24=; fh=SJQ48KwEv1Wk78SyBTKjV1EcFj2vZ5p6XYIidAE2t8E=; b=o4+B209eixCNl4IMjpJNmMitY8Ux7z1jmL9lHkWkrxXkXKamdGC09kaR6GiQU2HQdE OkGEiQ1puY1NHjZbZjmoJbsUSU0bcSXqprwh6XTUJyb9ruGDlqgXS5sLLODl8b9r7gbd Kh9VKkK+TbvTvMB/v4WZIBlkl6b0QO/kE0d/rDe72sqiRsymuIvRZWtQ23YE6XRzwgPM 3jJjditv0RzmrZoIAtjd39dlXiz8V70PHWdJS1jfCt+gTP8NfftaI+p8x6eJPfb+NgvF VMIXJPGu9I1p9KoKQUsI2Gs51YLpDtzD+4vvwxJmQYe/cDlakykoR+NijhPVvV6htQI2 4Ggg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=bPkNhROf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id y70-20020a638a49000000b0057755c96163si1462618pgd.14.2023.10.17.02.30.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 02:30:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=bPkNhROf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 34104807E44E; Tue, 17 Oct 2023 02:30:07 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234811AbjJQJ3w (ORCPT + 19 others); Tue, 17 Oct 2023 05:29:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58986 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234972AbjJQJ3f (ORCPT ); Tue, 17 Oct 2023 05:29:35 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9F18199C for ; Tue, 17 Oct 2023 02:28:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=HWrONDqmpBZExl+KmZOR+g0MAZyWOT9PSDRXuOxGP24=; b=bPkNhROfmAKD1y6riANEgW8V7F IEk4K2R9R0PSlU0hCI7HXdYG44kePjObua4absyN+wizUQdw7F9PnOHlZbxXJcI3VakIPlUIT43fW jm7E1FqaxI0KoZU6SLICu/od3AvF5T3sSH9ixHVFlXx0oe53yjCzLwBngZfdrd0X9zCl7yEWIiNW2 372xGn1cc+yKjdj6se9EGiYdLRX49LbP1csLYr6M0p+t4WzL6bq9iaAv8rEOhtcQYuoMe/+DvFRBb LU2vIJvRq6M99mhDuaeAljWGjrrso7HD7kptlX1Zgb+HKZj5obfAtaNJUvSURzKTihPyacNGSzmmx okMEpbPw==; Received: from 167.red-81-39-185.dynamicip.rima-tde.net ([81.39.185.167] helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qsgNd-001ODF-D8; Tue, 17 Oct 2023 11:28:49 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pierre-eric.pelloux-prayer@amd.com, =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , =?utf-8?q?Michel_D?= =?utf-8?q?=C3=A4nzer?= , "Randy Dunlap" , "Pekka Paalanen" , hwentlan@amd.com, kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, joshua@froggi.es, Simon Ser , =?utf-8?q?Andr=C3=A9_Alm?= =?utf-8?q?eida?= Subject: [PATCH v7 3/6] drm: introduce drm_mode_config.atomic_async_page_flip_not_supported Date: Tue, 17 Oct 2023 11:28:34 +0200 Message-ID: <20231017092837.32428-4-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231017092837.32428-1-andrealmeid@igalia.com> References: <20231017092837.32428-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 17 Oct 2023 02:30:07 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779994510270061608 X-GMAIL-MSGID: 1779994510270061608 From: Simon Ser This new field indicates whether the driver has the necessary logic to support async page-flips via the atomic uAPI. This is leveraged by the next commit to allow user-space to use this functionality. All atomic drivers setting drm_mode_config.async_page_flip are updated to also set drm_mode_config.atomic_async_page_flip_not_supported. We will gradually check and update these drivers to properly handle drm_crtc_state.async_flip in their atomic logic. The goal of this negative flag is the same as fb_modifiers_not_supported: we want to eventually get rid of all drivers missing atomic support for async flips. New drivers should not set this flag, instead they should support atomic async flips (if they support async flips at all). IOW, we don't want more drivers with async flip support for legacy but not atomic. Signed-off-by: Simon Ser Reviewed-by: André Almeida Reviewed-by: Alex Deucher Signed-off-by: André Almeida --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 + drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 1 + drivers/gpu/drm/i915/display/intel_display_driver.c | 1 + drivers/gpu/drm/nouveau/nouveau_display.c | 1 + include/drm/drm_mode_config.h | 11 +++++++++++ 5 files changed, 15 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index c6fd34bab358..9d5742923aed 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3997,6 +3997,7 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev) adev_to_drm(adev)->mode_config.prefer_shadow = 1; /* indicates support for immediate flip */ adev_to_drm(adev)->mode_config.async_page_flip = true; + adev_to_drm(adev)->mode_config.atomic_async_page_flip_not_supported = true; state = kzalloc(sizeof(*state), GFP_KERNEL); if (!state) diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c index 84c54e8622d1..f1d9bb1d7c34 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c @@ -639,6 +639,7 @@ static int atmel_hlcdc_dc_modeset_init(struct drm_device *dev) dev->mode_config.max_height = dc->desc->max_height; dev->mode_config.funcs = &mode_config_funcs; dev->mode_config.async_page_flip = true; + dev->mode_config.atomic_async_page_flip_not_supported = true; return 0; } diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c index 44b59ac301e6..6142c83fba06 100644 --- a/drivers/gpu/drm/i915/display/intel_display_driver.c +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c @@ -126,6 +126,7 @@ static void intel_mode_config_init(struct drm_i915_private *i915) mode_config->helper_private = &intel_mode_config_funcs; mode_config->async_page_flip = HAS_ASYNC_FLIPS(i915); + mode_config->atomic_async_page_flip_not_supported = true; /* * Maximum framebuffer dimensions, chosen to match diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c index d8c92521226d..586aa51794e8 100644 --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c @@ -720,6 +720,7 @@ nouveau_display_create(struct drm_device *dev) dev->mode_config.async_page_flip = false; else dev->mode_config.async_page_flip = true; + dev->mode_config.atomic_async_page_flip_not_supported = true; drm_kms_helper_poll_init(dev); drm_kms_helper_poll_disable(dev); diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h index 973119a9176b..47b005671e6a 100644 --- a/include/drm/drm_mode_config.h +++ b/include/drm/drm_mode_config.h @@ -918,6 +918,17 @@ struct drm_mode_config { */ bool async_page_flip; + /** + * @atomic_async_page_flip_not_supported: + * + * If true, the driver does not support async page-flips with the + * atomic uAPI. This is only used by old drivers which haven't yet + * accomodated for &drm_crtc_state.async_flip in their atomic logic, + * even if they have &drm_mode_config.async_page_flip set to true. + * New drivers shall not set this flag. + */ + bool atomic_async_page_flip_not_supported; + /** * @fb_modifiers_not_supported: * From patchwork Tue Oct 17 09:28:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 154008 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4008554vqb; Tue, 17 Oct 2023 02:31:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGZYcdCcya+O40uDpdaE3zBaOqLUlSz2Hz5mxcTpjzt/oKkiys9f8IgLXhqcjKBt+swigru X-Received: by 2002:a17:90b:4c91:b0:27d:3b8:a08a with SMTP id my17-20020a17090b4c9100b0027d03b8a08amr1778922pjb.1.1697535089475; Tue, 17 Oct 2023 02:31:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697535089; cv=none; d=google.com; s=arc-20160816; b=wbK0t5FnDlIocMySWXB8nErHa8mIue8PE4E1fPmMGdyXdbLfi/KHuAhkDHp1Z4DaVl 1KcnEGCP3dPIT1TitsZxcdsUC4CdV7M9yrX6HhivRw9PdDncqwMes7z85A/zCjbtMkmL E4Wi7dk+HCAL68Fvr+30E8rOxMTRD3j72U0oKvjfGYolC0phfm3o44m8BZQOz0pmqiUW C+5CUL2BQRUX0oBM7ESpnTb0N7PW8PRPbRPOp5Z8sHF/gGnu9yG3JNWUckgJN7Pi0hJl VbClsCd21cSmI8QPjY8vgnGqKqZ75YBmniMo2P2A5ew28Z2MGpl42/FEUsNI7uzMGqvh f0pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vm+ljfEhFhjrjIw4zm0LotRIHN51OK9AcAjrUqL/uug=; fh=SJQ48KwEv1Wk78SyBTKjV1EcFj2vZ5p6XYIidAE2t8E=; b=VfLqM7fYzZVxiMKDqJY3L98bEnNmolDV999gnPC4vH8x9/ClCpZ2zaYeNBr33l6T// XV5yZbTbB+33vYva2WXhVDKETIGymFAsMXrbqHYXnSES7Tk9QK87IHlkSOC3jdy0HCWI BQ7ZNs+3LlmqSQxpbGQzeRhO4kYJAHBFdaJ4Oq58iPOwWu8fLC+deaa5E02XZ0bOKUel 4mWqhgw2TmbuaQO68Q1Ezi+WvTyr/u+INg97sMoKyNgQQ+oa4ifw+nkpqg2eeIc16y1m qzsp3OJVxHGTdj8YjRCpTWSK4ul9kOY59avwilYEcdNfhyWjgh+vvMcJu0ZR0TLUWkpF Ahqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=LDEAw1TB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id t21-20020a1709028c9500b001bbabd5b14esi1246063plo.608.2023.10.17.02.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 02:31:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=LDEAw1TB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 3251A808986E; Tue, 17 Oct 2023 02:30:38 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234794AbjJQJaO (ORCPT + 19 others); Tue, 17 Oct 2023 05:30:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234973AbjJQJ3g (ORCPT ); Tue, 17 Oct 2023 05:29:36 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD83719A2 for ; Tue, 17 Oct 2023 02:28:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=vm+ljfEhFhjrjIw4zm0LotRIHN51OK9AcAjrUqL/uug=; b=LDEAw1TBBCX+xvLXxECpeYVXvO SrGFT5XvOtDhJRdHco1B60fsDabwWh9krImXucmkHRzpg2nUV/U00IReax3zGWwr9qK3FlnfuwD5q Lr8L0KKDbZT5Hx8JcjIkR7PUnhsG4BbbJAi2rlqWRP+fK5kWfaz+plJmWMQFD1m4a9NkIR5ggSG1A ZQTCbMxDY4P3QGpaD/MlnC0l6a+whSpsqCQTeosow20m6Jrps7Fth+w4AAGjHMFOyHJ7PezaUdhXM pQpoB3YgFU6tCQImZceRRDDzjFnRd4e/3NbBz5CL1AU0GVvbg6LvrXXS5wneGJwRvVMAN9fdwWSQN qgQ0Qo4A==; Received: from 167.red-81-39-185.dynamicip.rima-tde.net ([81.39.185.167] helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qsgNd-001ODF-TD; Tue, 17 Oct 2023 11:28:49 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pierre-eric.pelloux-prayer@amd.com, =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , =?utf-8?q?Michel_D?= =?utf-8?q?=C3=A4nzer?= , "Randy Dunlap" , "Pekka Paalanen" , hwentlan@amd.com, kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, joshua@froggi.es, Simon Ser , =?utf-8?q?Andr=C3=A9_Alm?= =?utf-8?q?eida?= Subject: [PATCH v7 4/6] drm: Refuse to async flip with atomic prop changes Date: Tue, 17 Oct 2023 11:28:35 +0200 Message-ID: <20231017092837.32428-5-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231017092837.32428-1-andrealmeid@igalia.com> References: <20231017092837.32428-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 17 Oct 2023 02:30:38 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779994553913869550 X-GMAIL-MSGID: 1779994553913869550 Given that prop changes may lead to modesetting, which would defeat the fast path of the async flip, refuse any atomic prop change for async flips in atomic API. The only exceptions are the framebuffer ID to flip to and the mode ID, that could be referring to an identical mode. Signed-off-by: André Almeida Reviewed-by: Simon Ser --- v7: drop the mode_id exception for prop changes --- drivers/gpu/drm/drm_atomic_uapi.c | 47 +++++++++++++++++++++++++++-- drivers/gpu/drm/drm_crtc_internal.h | 2 +- drivers/gpu/drm/drm_mode_object.c | 2 +- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index a15121e75a0a..b358de1bf4e7 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1006,13 +1006,28 @@ int drm_atomic_connector_commit_dpms(struct drm_atomic_state *state, return ret; } +static int drm_atomic_check_prop_changes(int ret, uint64_t old_val, uint64_t prop_value, + struct drm_property *prop) +{ + if (ret != 0 || old_val != prop_value) { + drm_dbg_atomic(prop->dev, + "[PROP:%d:%s] No prop can be changed during async flip\n", + prop->base.id, prop->name); + return -EINVAL; + } + + return 0; +} + int drm_atomic_set_property(struct drm_atomic_state *state, struct drm_file *file_priv, struct drm_mode_object *obj, struct drm_property *prop, - uint64_t prop_value) + uint64_t prop_value, + bool async_flip) { struct drm_mode_object *ref; + uint64_t old_val; int ret; if (!drm_property_change_valid_get(prop, prop_value, &ref)) @@ -1029,6 +1044,13 @@ int drm_atomic_set_property(struct drm_atomic_state *state, break; } + if (async_flip) { + ret = drm_atomic_connector_get_property(connector, connector_state, + prop, &old_val); + ret = drm_atomic_check_prop_changes(ret, old_val, prop_value, prop); + break; + } + ret = drm_atomic_connector_set_property(connector, connector_state, file_priv, prop, prop_value); @@ -1037,6 +1059,7 @@ int drm_atomic_set_property(struct drm_atomic_state *state, case DRM_MODE_OBJECT_CRTC: { struct drm_crtc *crtc = obj_to_crtc(obj); struct drm_crtc_state *crtc_state; + struct drm_mode_config *config = &crtc->dev->mode_config; crtc_state = drm_atomic_get_crtc_state(state, crtc); if (IS_ERR(crtc_state)) { @@ -1044,6 +1067,13 @@ int drm_atomic_set_property(struct drm_atomic_state *state, break; } + if (async_flip) { + ret = drm_atomic_crtc_get_property(crtc, crtc_state, + prop, &old_val); + ret = drm_atomic_check_prop_changes(ret, old_val, prop_value, prop); + break; + } + ret = drm_atomic_crtc_set_property(crtc, crtc_state, prop, prop_value); break; @@ -1051,6 +1081,7 @@ int drm_atomic_set_property(struct drm_atomic_state *state, case DRM_MODE_OBJECT_PLANE: { struct drm_plane *plane = obj_to_plane(obj); struct drm_plane_state *plane_state; + struct drm_mode_config *config = &plane->dev->mode_config; plane_state = drm_atomic_get_plane_state(state, plane); if (IS_ERR(plane_state)) { @@ -1058,6 +1089,13 @@ int drm_atomic_set_property(struct drm_atomic_state *state, break; } + if (async_flip && prop != config->prop_fb_id) { + ret = drm_atomic_plane_get_property(plane, plane_state, + prop, &old_val); + ret = drm_atomic_check_prop_changes(ret, old_val, prop_value, prop); + break; + } + ret = drm_atomic_plane_set_property(plane, plane_state, file_priv, prop, prop_value); @@ -1349,6 +1387,7 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, struct drm_out_fence_state *fence_state; int ret = 0; unsigned int i, j, num_fences; + bool async_flip = false; /* disallow for drivers not supporting atomic: */ if (!drm_core_check_feature(dev, DRIVER_ATOMIC)) @@ -1385,6 +1424,8 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, "commit failed: DRM_MODE_PAGE_FLIP_ASYNC not supported with atomic\n"); return -EINVAL; } + + async_flip = true; } /* can't test and expect an event at the same time. */ @@ -1469,8 +1510,8 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, goto out; } - ret = drm_atomic_set_property(state, file_priv, - obj, prop, prop_value); + ret = drm_atomic_set_property(state, file_priv, obj, + prop, prop_value, async_flip); if (ret) { drm_mode_object_put(obj); goto out; diff --git a/drivers/gpu/drm/drm_crtc_internal.h b/drivers/gpu/drm/drm_crtc_internal.h index 8556c3b3ff88..a4c2ea33b1ef 100644 --- a/drivers/gpu/drm/drm_crtc_internal.h +++ b/drivers/gpu/drm/drm_crtc_internal.h @@ -251,7 +251,7 @@ int drm_atomic_set_property(struct drm_atomic_state *state, struct drm_file *file_priv, struct drm_mode_object *obj, struct drm_property *prop, - uint64_t prop_value); + uint64_t prop_value, bool async_flip); int drm_atomic_get_property(struct drm_mode_object *obj, struct drm_property *property, uint64_t *val); diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/drm_mode_object.c index ac0d2ce3f870..0e8355063eee 100644 --- a/drivers/gpu/drm/drm_mode_object.c +++ b/drivers/gpu/drm/drm_mode_object.c @@ -538,7 +538,7 @@ static int set_property_atomic(struct drm_mode_object *obj, obj_to_connector(obj), prop_value); } else { - ret = drm_atomic_set_property(state, file_priv, obj, prop, prop_value); + ret = drm_atomic_set_property(state, file_priv, obj, prop, prop_value, false); if (ret) goto out; ret = drm_atomic_commit(state); From patchwork Tue Oct 17 09:28:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 154003 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4008181vqb; Tue, 17 Oct 2023 02:30:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWIifiGTTBz+VrkMczPslgljoAqaowMYqQK1iD/cpLZ0oK799QDrCw1ybH+nLIbLB75HnV X-Received: by 2002:a05:6830:4598:b0:6bd:6d51:e9e5 with SMTP id az24-20020a056830459800b006bd6d51e9e5mr1762873otb.0.1697535048766; Tue, 17 Oct 2023 02:30:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697535048; cv=none; d=google.com; s=arc-20160816; b=W5EMt2yw6TBVhvimcKsVXVg6IfeM7qpKJTk7xqIHluy3OBZpUOnS2iCI4l03Ix67uL AL6RgYcuhc358/HJ1G9CnQKL25JijMOtIHXuG951Zf/N0hWwMFGNYxyBSCQNrIKpGtbl AYAFNTvCdLw7PSRGZhd36a0piVh7riMk/8CzthRs5lzPtHPqvEaLVGbIF6jDdD2i+ob4 8BKBJT/kjVZIMi6YxYwk1vNWgkf5JVBAbjhaCVqa/tXWFbpD5uQxTVtVyDKjHEZ/SMWE Np3rhCejfQrRR7cKY0QjVDJ2BGI/5vLEv+9IYTXBGyr3F7EzwU0wvyw1CCE+q/D5lEaw gPEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Bv4UhAyma+StQ1C/srhttolaGUlSYmJrKK1FzAxXGo0=; fh=4pefn1iSxYX3I+YzMIJhb/2iUFdBUinc4zFFsDCsWX4=; b=mHV1pCX4XRbQvKBeQ2NWNTyRhjgInQbQ2qD/cEI3nVTZOyBFwTY7370LUpDQgIAhtK lERSZAJOzqEAwDN11Wct9GE3VUNERcDu4jEEruM/ufRfmP+QCy7zSi/s1PVKtPc/SXeB nrm04JQwGEj9xIa+jvTaD6tznLINtmlY2Lr5ubK5GuSRGeHuEtggCDBdHZi5RvxNAr1f UuanuLBNg/tvamSIwFbJ/NXJNA2ErMQTpOFd0+jO5cD3HKM6WaS4zWGmH+jiFtx1lWLJ wf0iVeK8A9kbFBpI13q2uG0AjgR0FndXKCqyBPLBo9a56KTb1C704VxVB35CKYAW914r xF/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=bGnrI2i7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id u9-20020a056a00124900b0068a5752a049si1299892pfi.96.2023.10.17.02.30.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 02:30:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=bGnrI2i7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id B03CA8083DC9; Tue, 17 Oct 2023 02:30:28 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234840AbjJQJaG (ORCPT + 19 others); Tue, 17 Oct 2023 05:30:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234966AbjJQJ3g (ORCPT ); Tue, 17 Oct 2023 05:29:36 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47F21119 for ; Tue, 17 Oct 2023 02:28:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Bv4UhAyma+StQ1C/srhttolaGUlSYmJrKK1FzAxXGo0=; b=bGnrI2i74XpILAOrXy08pbTd/v 81bMUL3IdoVDj6Bn0dsuwq+GforHlb+xY+LF8RrY2foCmwoMgFc+t7Oyp6z6N4sl6/nJ1aCYM1nqN 2ThxwX1I3zFVoBjU0mVJmu5Uljc14aHgdAWSITF+8T+9JvaNaEzdFL57sJJvSRU8RaFU+FIJwb5ZA DQ6S3DVsYafkafX3WrYvKpbdWdIVnptDnsugR+LKHn8lFfyEWTQYLT9LyKnO3aqdjEH/DXciYBOU9 Fgsg6X8+nHnDw+QuEMeYxc9Uxi8/7FRH2U2876fRjVxjZNXDlEw67P3Y+ZPuWhNbAu/fWs+sr/Ppe Qt8syUsw==; Received: from 167.red-81-39-185.dynamicip.rima-tde.net ([81.39.185.167] helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qsgNe-001ODF-Lc; Tue, 17 Oct 2023 11:28:50 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pierre-eric.pelloux-prayer@amd.com, =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , =?utf-8?q?Michel_D?= =?utf-8?q?=C3=A4nzer?= , "Randy Dunlap" , "Pekka Paalanen" , hwentlan@amd.com, kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, joshua@froggi.es, Simon Ser , Pekka Paalanen , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v7 5/6] drm/doc: Define KMS atomic state set Date: Tue, 17 Oct 2023 11:28:36 +0200 Message-ID: <20231017092837.32428-6-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231017092837.32428-1-andrealmeid@igalia.com> References: <20231017092837.32428-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 17 Oct 2023 02:30:28 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779994511317641028 X-GMAIL-MSGID: 1779994511317641028 From: Pekka Paalanen Specify how the atomic state is maintained between userspace and kernel, plus the special case for async flips. Signed-off-by: Pekka Paalanen Signed-off-by: André Almeida --- v7: - add a note that drivers can make exceptions for ad-hoc prop changes - add a note about flipping the same FB_ID as a no-op --- Documentation/gpu/drm-uapi.rst | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/Documentation/gpu/drm-uapi.rst b/Documentation/gpu/drm-uapi.rst index 632989df3727..34bd02270ee7 100644 --- a/Documentation/gpu/drm-uapi.rst +++ b/Documentation/gpu/drm-uapi.rst @@ -570,3 +570,50 @@ dma-buf interoperability Please see Documentation/userspace-api/dma-buf-alloc-exchange.rst for information on how dma-buf is integrated and exposed within DRM. + +KMS atomic state +================ + +An atomic commit can change multiple KMS properties in an atomic fashion, +without ever applying intermediate or partial state changes. Either the whole +commit succeeds or fails, and it will never be applied partially. This is the +fundamental improvement of the atomic API over the older non-atomic API which is +referred to as the "legacy API". Applying intermediate state could unexpectedly +fail, cause visible glitches, or delay reaching the final state. + +An atomic commit can be flagged with DRM_MODE_ATOMIC_TEST_ONLY, which means the +complete state change is validated but not applied. Userspace should use this +flag to validate any state change before asking to apply it. If validation fails +for any reason, userspace should attempt to fall back to another, perhaps +simpler, final state. This allows userspace to probe for various configurations +without causing visible glitches on screen and without the need to undo a +probing change. + +The changes recorded in an atomic commit apply on top the current KMS state in +the kernel. Hence, the complete new KMS state is the complete old KMS state with +the committed property settings done on top. The kernel will try to avoid +no-operation changes, so it is safe for userspace to send redundant property +settings. However, not every situation allows for no-op changes, due to the +need to acquire locks for some attributes. Userspace needs to be aware that some +redundant information might result in oversynchronization issues. No-operation +changes do not count towards actually needed changes, e.g. setting MODE_ID to a +different blob with identical contents as the current KMS state shall not be a +modeset on its own. As a special exception for VRR needs, explicitly setting +FB_ID to its current value is not a no-op. + +A "modeset" is a change in KMS state that might enable, disable, or temporarily +disrupt the emitted video signal, possibly causing visible glitches on screen. A +modeset may also take considerably more time to complete than other kinds of +changes, and the video sink might also need time to adapt to the new signal +properties. Therefore a modeset must be explicitly allowed with the flag +DRM_MODE_ATOMIC_ALLOW_MODESET. This in combination with +DRM_MODE_ATOMIC_TEST_ONLY allows userspace to determine if a state change is +likely to cause visible disruption on screen and avoid such changes when end +users do not expect them. + +An atomic commit with the flag DRM_MODE_PAGE_FLIP_ASYNC is allowed to +effectively change only the FB_ID property on any planes. No-operation changes +are ignored as always. Changing any other property will cause the commit to be +rejected. Each driver may relax this restriction if they have guarantees that +such property change doesn't cause modesets. Userspace can use TEST_ONLY commits +to query the driver about this. From patchwork Tue Oct 17 09:28:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 154007 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4008423vqb; Tue, 17 Oct 2023 02:31:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFBTlqEkYsLjIgSZy4WVZkMC5Zgv1b3U8lXnEy3bjMC87oSU0BOQu+2HdazZCEV37L6uyLf X-Received: by 2002:a05:6a20:d80d:b0:163:ab09:193e with SMTP id iv13-20020a056a20d80d00b00163ab09193emr1629285pzb.1.1697535073905; Tue, 17 Oct 2023 02:31:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697535073; cv=none; d=google.com; s=arc-20160816; b=izFGbPjPHXC5nwW7Qy72xxxrS9NnKlDpm6OQUDXOan9InkJXRQpKaUGQ6g8ROng4TY z9aU743+rYvlEixlYVcbCLj74B1ggEkp0aPnVs8iVZcyLiKXsXtdxNYN9Tcjntuf/l/t x56OeHRbrje/Yj0YfjDx22nYepQ79vPAFqMtx2pKuicZGKS0kbvTSq3wyFeGR7gvcUT1 U/A2VyCDfSfrEUoZrBqNzQAOhsy5CJxADimOI5FYz9BuAKPWJ+w20b4cV73M17HvyPH9 Q9No5WWYe0SE08zd79gsOiDE8LlHQVC/enN7UJjDGbyfeWsmJfASxIEweBk6wceeA9ym qYMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Zoyx6acph8T/D4cDNkRj+Bxu58arAqE6Znc8aS28M0U=; fh=SJQ48KwEv1Wk78SyBTKjV1EcFj2vZ5p6XYIidAE2t8E=; b=gjqxcObTWx5VRbBVzicgQMSB4OKZ2PLW5Do0jrFP5Cd1ytS4CZgQvDhJEy4dRW/50Z rqagpFjAa1Afii3CnKcx48fr8JnQjRFDxsVUh2KXTftMhrkwqoH0eVTXFbXd3/wx4Wpz qxD+ELLEhAs7XOdIp0WgVzyjTZ1FXJOUJ0d+nlpgOo3T2zC4BtwLd9RxG9SS7a6VoCFw l9YbEnBETASEAzFcNpInAnEfqG72XoGVsCrRoEdvMEa4cYTECgRWZm9ouufUyQFrb15N 6Q4H05fkJyVLE15TxC47YT2m67rklUEsqdvLn7k+fqtrH57fHyzBj3+jokvVjaJyxqfI CxrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=pG1JKIec; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id q17-20020a17090aa01100b00277e0d7163asi1359622pjp.32.2023.10.17.02.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 02:31:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=pG1JKIec; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id D9C9A808D692; Tue, 17 Oct 2023 02:31:11 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343601AbjJQJat (ORCPT + 19 others); Tue, 17 Oct 2023 05:30:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234984AbjJQJ3i (ORCPT ); Tue, 17 Oct 2023 05:29:38 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A4F119AE for ; Tue, 17 Oct 2023 02:28:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Zoyx6acph8T/D4cDNkRj+Bxu58arAqE6Znc8aS28M0U=; b=pG1JKIecF2BtvDA1vVl9uxnEb0 tsGe52hITAfAs+Sn4Hm7ycaFLwRLFA9I805pa/f2ozAqSfs1xZDYk8zW6uRcZbeR3XXCyHXizeeU5 u9Vo6KxtT9B1UORnieFMmwT/XL4M3Ss5L9Iht5UdQcYHYE2um1anYmPrGpXEC8Ag9WPcIPSpFNDc/ 4WxivlCutLspGIGkN9/S9GLzSZoXz4mNIPYN06AZLIVWB420p6pznXNck3+rRuj7K2eqo5lHpGXAB nWkJpZQUAXH5wYCTDuDICorsD3kHQ1TyoMCJUl/94FCf7nKUhAd2Msm51pRpYvjIzDAumK0gtpQTI SAlOAGxQ==; Received: from 167.red-81-39-185.dynamicip.rima-tde.net ([81.39.185.167] helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qsgNf-001ODF-7B; Tue, 17 Oct 2023 11:28:51 +0200 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pierre-eric.pelloux-prayer@amd.com, =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , =?utf-8?q?Michel_D?= =?utf-8?q?=C3=A4nzer?= , "Randy Dunlap" , "Pekka Paalanen" , hwentlan@amd.com, kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, joshua@froggi.es, Simon Ser , =?utf-8?q?Andr=C3=A9_Alm?= =?utf-8?q?eida?= Subject: [PATCH v7 6/6] amd/display: indicate support for atomic async page-flips on DC Date: Tue, 17 Oct 2023 11:28:37 +0200 Message-ID: <20231017092837.32428-7-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231017092837.32428-1-andrealmeid@igalia.com> References: <20231017092837.32428-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 17 Oct 2023 02:31:11 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779994537877626992 X-GMAIL-MSGID: 1779994537877626992 From: Simon Ser amdgpu_dm_commit_planes() already sets the flip_immediate flag for async page-flips. This flag is used to set the UNP_FLIP_CONTROL register. Thus, no additional change is required to handle async page-flips with the atomic uAPI. Signed-off-by: Simon Ser Reviewed-by: André Almeida Reviewed-by: Alex Deucher Signed-off-by: André Almeida --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 9d5742923aed..c6fd34bab358 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3997,7 +3997,6 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev) adev_to_drm(adev)->mode_config.prefer_shadow = 1; /* indicates support for immediate flip */ adev_to_drm(adev)->mode_config.async_page_flip = true; - adev_to_drm(adev)->mode_config.atomic_async_page_flip_not_supported = true; state = kzalloc(sizeof(*state), GFP_KERNEL); if (!state)