From patchwork Wed Oct 25 00:53:13 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: 157778 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp2293003vqx; Tue, 24 Oct 2023 17:53:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFqH7iQqPh87tYmto2GDDCMezpyKyuccDHD4RsNVMLKsHLPv5Hh5OSY7imFlVOgUaBqDKtG X-Received: by 2002:a05:6358:c10a:b0:168:d90a:f72 with SMTP id fh10-20020a056358c10a00b00168d90a0f72mr9156030rwb.28.1698195235914; Tue, 24 Oct 2023 17:53:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698195235; cv=none; d=google.com; s=arc-20160816; b=y/Nn3l/HQ/a0eXhsF39pY3Mlr/nNFWTsjHM7YnQB1T+bGScNxTURhu6f/XqXZmOc3s lM/qq4rWnQIU7CMmmw3/gN+07qq536lsJJ9r/FXseTKuqwzmnYfmKrd+5TNiHTI9MXiK bA2F0BQOqbh9wIcyj+79wz1gE6VoEjbd6cGyLgSVVefnA9lzlbI3zU1S3wne+YCCEvIm Dz4ITVa7NpzU2mISnu/hokq4GYatsWRKfKd/krWAZIwi4oArC+aFUk7czx7YUlCZEZ2D 7c5NWzWJxlz9kDvbUWXHY/gcoVli5r5bVMAnLO2di84q4Qv7KiwHTqw1cerznR1ucnMX +Zxw== 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=oozRrKarZZG8EJ8TWYFtLglEZVoKmF8bWYorcz/JMDw=; b=qBxy9yvKjA9a48Hc+LoqzUwFZMe+DD+HrcSIAIu6YyteDQufLArE7XxH3YRaKdGe9X A/Mnp8Hs34/R0PjZ1qDErqOcUz4bowKUwRc42kCjMXoPEOc/Tlf0Il0q1Zij+dagMBMO 6PKZqWYMPopMVHZM6eCqWiJRILlbmFmGXcePzqzodNnR2len84orXhJkY6J0INAB2uYP egyVDM0O3FldW0dyuMwdsC6fyvWLjBTYNei3sMt9GDa0usAt+Y/1PQxQDlciEy4B5RvV 8fH4VvMMqe3n0vk1F6ouSXHHp9yML+ALUyVKNH8VRu1j0nSRBvWOjtXcCrq9idYGlAlo +f5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=bWMqqSbK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id v202-20020a6361d3000000b005b74de09ee0si9208228pgb.108.2023.10.24.17.53.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:53:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=bWMqqSbK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 snail.vger.email (Postfix) with ESMTP id 442F580267FE; Tue, 24 Oct 2023 17:53:55 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229456AbjJYAxr (ORCPT + 26 others); Tue, 24 Oct 2023 20:53:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229441AbjJYAxn (ORCPT ); Tue, 24 Oct 2023 20:53:43 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D0A2C128 for ; Tue, 24 Oct 2023 17:53:38 -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=bWMqqSbK+vJm9pFO3CNK/K8Xz7 oXt5jMp7dAb6q4y1jqDVjSmFeWuxfzFsbbugVjqAMaQRxTjD3wf/dncG99zjH8sC2p7mSz6Vv6Do5 aMQfMvVekoSud/iVE2jTocu0xK+CKSIr3LelQDjp6NDD4TQJgJerZCYbBCldAidXM7Fe70bVLE29A qjFvqpe1mqVgUbw1B39aZxsSgNlSk+xAOQHXE4TxKrp6PbhKqXNbS7l+qPlMXeb8yPQzZIcwZkUo7 CrmZGjFFD9vfQp14Vqwq/9Sl19wDbni1ubH03tPH3GJbb4qiHoN1x4EjHGKgWnroTelKL4TCGjThH JZfMeesg==; Received: from [191.193.179.125] (helo=steammachine.lan) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qvS9M-006qog-Lm; Wed, 25 Oct 2023 02:53:33 +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: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com, Simon Ser , Rob Clark , Pekka Paalanen , Daniel Vetter , Daniel Stone , =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , Dave Airlie , =?utf-8?q?Michel_D=C3=A4nzer?= , Randy Dunlap , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v8 1/6] drm: allow DRM_MODE_PAGE_FLIP_ASYNC for atomic commits Date: Tue, 24 Oct 2023 21:53:13 -0300 Message-ID: <20231025005318.293690-2-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231025005318.293690-1-andrealmeid@igalia.com> References: <20231025005318.293690-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:53:55 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780686768138542598 X-GMAIL-MSGID: 1780686768138542598 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 Wed Oct 25 00:53:14 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: 157780 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp2293066vqx; Tue, 24 Oct 2023 17:54:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEpYhiZtbK5rFTRvm/yN6gi0k1cF5fr47uzL0vk4FLjLywEAK/ZvphR7IFdeehwldPTJnRY X-Received: by 2002:a25:374a:0:b0:da0:3b6c:fc22 with SMTP id e71-20020a25374a000000b00da03b6cfc22mr3416033yba.31.1698195248344; Tue, 24 Oct 2023 17:54:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698195248; cv=none; d=google.com; s=arc-20160816; b=C+tTQ0Gh2lRM1xyFuLgNdegG8tydwQsL1koSGRC+SvyzdBwh4LDjiFg6nfnrXBBaAB DPl25UwskYYGDP9ZqdZKt8A+M8Ih4EeEMhA1eeZEftFIiN2aaAh5I5eC6thutW+wmnjN twpGqO4V4VPeYo+Hk4j+D3M54bBSUhqMeDMwKEQ988kNSdR7uQ5BNsM1w7VVIH5HgNqi pSTedbjsW2i0zyOmE88IJ4V+HXmANKerbEDBDXNTimXodCro+f73m1YU7pH9QV4Mplt9 IVBDFvJ0Sa+7gGCwkXLUPba19yW1HJTASsrSq3JVTytUmnClVC50u/bMCo/fqr2CpYKS hXgg== 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=oozRrKarZZG8EJ8TWYFtLglEZVoKmF8bWYorcz/JMDw=; b=as0R5K5sJTQx5FmfmnAONdmX173Mlqw8DjywxN8Hm11Qd3qHL08iuLo5kGfXLrpGSS hP2VmgmEJBcW1MsX6UEY3fPrxAiVLSnf4kdx3DZmvwDP7xr6ESTJTeifLqFWsCcS2iQu ptSQinj5ZGmpIUOdXSZrQFKjKROM+IMfl1uuSor5Wsb2tGQOzA4fdOOPcQ+IwHcaq3/D Liiltk+106ydegxqyYg1XSh5iyOGMIVG9DOhdAGSkH8w8gj8prORrHN42LRqUIMd3FPo g/XRxQw3snJIKdCK2kijh+gXM86DIviXqHn3M+SoUSOstiEDBb/7QLLSXbj6fx35spB1 lywg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=hthFN61C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id d34-20020a25ade2000000b00da0735957fasi422129ybe.701.2023.10.24.17.54.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:54:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=hthFN61C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (Postfix) with ESMTP id 701B9802189C; Tue, 24 Oct 2023 17:54:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229830AbjJYAxv (ORCPT + 26 others); Tue, 24 Oct 2023 20:53:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229470AbjJYAxn (ORCPT ); Tue, 24 Oct 2023 20:53:43 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C708FD7D for ; Tue, 24 Oct 2023 17:53:39 -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=hthFN61C8pMIVQZ9RcWSEyznZC DCeWLPIkDfiSIsBrhvaJDxWCUUTEfmCVssQ1H32zqZhFNWHFykB/dHTnX0gjyyu1gf9x9v0J7XyQ+ C7yJkfnSuooedqn98rRf9GBdD0x7sgem+HcqZwo6Njr+7NHky5TXnUM9ye6cAAGFXZf8kDobb9L3B 1inDoSVQ8yliZsA1h/+ihIVj6U8wxx7xY2XvdY8ad5vNS3U6K7W+9uHPMiSw7gr7a/5OZZ2LVaaDS JRfQnttuCmahd0DJbWb/julEFp9GlpOdd8HFFnlvGEPk+6WQlZy+jyc6ae6iSRa0KDfJAMaax/gUf Ip2CnGdA==; Received: from [191.193.179.125] (helo=steammachine.lan) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qvS9R-006qog-CV; Wed, 25 Oct 2023 02:53:37 +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: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com, Simon Ser , Rob Clark , Pekka Paalanen , Daniel Vetter , Daniel Stone , =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , Dave Airlie , =?utf-8?q?Michel_D=C3=A4nzer?= , Randy Dunlap , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v8 2/6] drm: introduce DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP Date: Tue, 24 Oct 2023 21:53:14 -0300 Message-ID: <20231025005318.293690-3-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231025005318.293690-1-andrealmeid@igalia.com> References: <20231025005318.293690-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 morse.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 (morse.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:54:05 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780686780961570360 X-GMAIL-MSGID: 1780686780961570360 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 Wed Oct 25 00:53:15 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: 157779 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp2293047vqx; Tue, 24 Oct 2023 17:54:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEsVAKMlT70iqwfo2XRVtVc/SBPd9Ki0aYR5w/0IzSE7Cj6Iy7knNggJo62wmtDJ0CaLilg X-Received: by 2002:a05:6a00:24d1:b0:6be:2720:16a5 with SMTP id d17-20020a056a0024d100b006be272016a5mr17551198pfv.33.1698195245482; Tue, 24 Oct 2023 17:54:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698195245; cv=none; d=google.com; s=arc-20160816; b=XCMKwarGBBwuRgA7wMFFtWA9pKpfkTjHIY/06orFEXQI0VL0/9n9QBe3e/1VWM08k7 7gHtHEDvPeSxvRwlUMxNWthbuTo3cRNofbth2AvhiTPGJVVszTeUmqBk0ynumlhZbgNM mHNoeHY6ZTx94GRVEKgl56zMe2nDuByRnei5g++6opKwdM+y5Nxc1jO5jkXHLDEdUfny 6JUXLBTGRyaeRw5ETSotknLl0AvN+byZy4nIwv7Y8Mnz7bAVqN65jJgzd8gR7RYsQHsa SM7aOxddwXFc2LSP4VUz2T9D6VFO5j+Hzl0MGY3622uU4FgKmU4wSIIpcTasSrcHMEhV 6Lag== 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=xE7LTmMZjaRJ+zHlhQbtMeGR5wPTTYaFb8tvKPrpSe4=; fh=oozRrKarZZG8EJ8TWYFtLglEZVoKmF8bWYorcz/JMDw=; b=vbTu6nnfjYsqj7tZEV3IizASTSWzVz3kqj9yaqZTzXK4iGfQALS7K73STcZErBLNAZ YpxR2Xa3XPIXAtOHouc9kQNnVcPvVw2J0N5/Hy4MvhJ4IPOrXJkVBTydSBNYYSVUByow PfLUTaBFjy0LY0R9IN1QCNACEREpjbfb9rKkGNgeygzxo3deftUi3m2GZEEudLscJgP8 6PXd9NWpRk2QsIFJkG5x1CKPdIqhb7nG7JEyejeqgb5Q3Wne/Bu0mrehrag9NhaLmNT3 Jf/2wXTht8BZqaxQB1hSkdX8E1TnUYkmgGlOO7MUAi/0O8UY2nrauiRRgdfaWHq4P9M+ i/rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=MBE40FXB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id f19-20020a056a001ad300b006bceac424f7si9556897pfv.102.2023.10.24.17.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:54:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=MBE40FXB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id C1B4C8025E42; Tue, 24 Oct 2023 17:54:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230421AbjJYAx5 (ORCPT + 26 others); Tue, 24 Oct 2023 20:53:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229582AbjJYAxr (ORCPT ); Tue, 24 Oct 2023 20:53:47 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2017E5 for ; Tue, 24 Oct 2023 17:53:44 -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=xE7LTmMZjaRJ+zHlhQbtMeGR5wPTTYaFb8tvKPrpSe4=; b=MBE40FXBrYAmSfHUHELm6J+ATg nom51bEDsd2qUTkCyIU1QdaD/YiWjlQgZZGMoJgPQvyYtJMdjC7SIi53JR6NmZPq/Y+L+2O8xUppX 8n5qydU4MiRM/NpHn0NfNoUpPxs1oBGFJw6um4O4vXQ1icyrSBiSXIg5D/xRpgscQ8XG+pFUeXu05 x8jPO1oWSOsN8LKZADJgfXXblDHBmoU5Dk/t5aoZZ1icvt5GEC1eFNzXRFabQyoeq1XdrLAPO6RNW XJJCIupnoLjWWKJHW6+JLvrfmwWbQQNnI0sB3a8GgSLmSLcPo3j4RzYyjsgRqhM/vkz2pgLBX3TiB 6UwZCTvQ==; Received: from [191.193.179.125] (helo=steammachine.lan) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qvS9W-006qog-41; Wed, 25 Oct 2023 02:53:42 +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: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com, Simon Ser , Rob Clark , Pekka Paalanen , Daniel Vetter , Daniel Stone , =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , Dave Airlie , =?utf-8?q?Michel_D=C3=A4nzer?= , Randy Dunlap , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v8 3/6] drm: introduce drm_mode_config.atomic_async_page_flip_not_supported Date: Tue, 24 Oct 2023 21:53:15 -0300 Message-ID: <20231025005318.293690-4-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231025005318.293690-1-andrealmeid@igalia.com> References: <20231025005318.293690-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:54:04 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780686777305433589 X-GMAIL-MSGID: 1780686777305433589 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 45b8fd61a044..dec6e43e7198 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4003,6 +4003,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 Wed Oct 25 00:53:16 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: 157781 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp2293069vqx; Tue, 24 Oct 2023 17:54:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHVQdnWcMaVoQ5HsDivlf2x/mPiNRTX8XdB3PuAJZ6cAavkXgY6Jcm7ekOXoHcSsLSjfq1r X-Received: by 2002:a05:6358:7295:b0:168:d282:90e with SMTP id w21-20020a056358729500b00168d282090emr9396018rwf.5.1698195249054; Tue, 24 Oct 2023 17:54:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698195249; cv=none; d=google.com; s=arc-20160816; b=rzytP1lDL47stUoT0+aIVEOfJdcsmAnl/NfNsO1DAFtE6VpB/9tMcXhyVtPVMK742Z a3EbXvXMR6dQgMoaGxjBZFjVXT1Bngxjmi341NanefySFAwyK4u4hxZDnS6mXdH73kmV 6SXX+Q8l1bi5QRebb5GfIlsEka38epS73LbKPuYJv9XJNVQOS12sDl1kGLBBhBP6+M9Z wjRJO0rG7zi1LJLmNFP5v0pIlvWwYVnCsB4MrfR1Wod2yBZcvarkSa8M1tbAnqEP+Fu1 MKdKntmjXn/WvUvmpxcceF99RpSerpUNc0vYuaatX1p4JiTRwkd879VJFcz2JbvBzED+ gSOA== 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=2ipLywiKe03HXmSk3vSJ4s2gBzs/5qTiNVoKg2/Jy+Y=; fh=oozRrKarZZG8EJ8TWYFtLglEZVoKmF8bWYorcz/JMDw=; b=CqXDC8Do6uH9Ok0JdxDeZJkz8xubznjFfyd6HtOwz7zX4yXZcuzEoNlUb2O6ebnI0O Ep6nhYqbMeqOCmazpDjZGbqpPWURUUOCcfCLlB1VAqrhgAfxtE9nu/AY8yf1hQd+jYef y+nouSodO0zs+ppe8jcb8RFTlNTqGjHKjyNT7KzxoIEBDthVcFg0Rhdx1/sforoMs/ez 34lv9crRp37g3bcMXO3RZF72N/qbFVMxY1lj57freP+CiTNlg6ipVNh4GbVdjG7NSjvV Q8Bmb4lsqAMyW+Zrimdpd8Ww0z1zAxk2NzjL9b5pyqPheObHjOV65eH3FKrxEXDlYAOC 4laA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=nTYgai2R; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id u185-20020a6385c2000000b005ad6babc019si8753690pgd.479.2023.10.24.17.54.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:54:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=nTYgai2R; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id 000408025D02; Tue, 24 Oct 2023 17:54:07 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230316AbjJYAyA (ORCPT + 26 others); Tue, 24 Oct 2023 20:54:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229968AbjJYAxw (ORCPT ); Tue, 24 Oct 2023 20:53:52 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72A0D128 for ; Tue, 24 Oct 2023 17:53:49 -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=2ipLywiKe03HXmSk3vSJ4s2gBzs/5qTiNVoKg2/Jy+Y=; b=nTYgai2REMNJ3OlVhUKnKdD1iG zk+dMfkoOYgieRo1YaXnehzQZlUM2zF+93yQDRttEtWnJF4Y/bMN1E8beo02QdM+dBM4CdtBxezde N8FPtcrNyFETLIZ0y9ymHDXai7wYfWgyt7UUeP5v9jPSg1dH1iYeJUlnxBZ05m2frv+t8YEx8Vn3Z SGeoHHrCxdorlOBcuehXtnc4ANFo4D6tDEtVHB7RKdHftEQ6FljlpQwtxbpnsOWSVy7fyYyj3k85t t5WBxr9ckQSqK5wGGYIfsiQbdS5HF52Yhu8ZA8C9iN5T1bCDDs4xPpH+JjzhCxeBNuiZmIiDqdL9H TzHPVquQ==; Received: from [191.193.179.125] (helo=steammachine.lan) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qvS9a-006qog-Ty; Wed, 25 Oct 2023 02:53:47 +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: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com, Simon Ser , Rob Clark , Pekka Paalanen , Daniel Vetter , Daniel Stone , =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , Dave Airlie , =?utf-8?q?Michel_D=C3=A4nzer?= , Randy Dunlap , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v8 4/6] drm: Refuse to async flip with atomic prop changes Date: Tue, 24 Oct 2023 21:53:16 -0300 Message-ID: <20231025005318.293690-5-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231025005318.293690-1-andrealmeid@igalia.com> References: <20231025005318.293690-1-andrealmeid@igalia.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:54:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780686781498121818 X-GMAIL-MSGID: 1780686781498121818 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 exception is the framebuffer ID to flip to. Currently the only plane type supported is the primary one. Reviewed-by: Simon Ser Signed-off-by: André Almeida --- v8: add a check for plane type, we can only flip primary planes v7: drop the mode_id exception for prop changes --- --- drivers/gpu/drm/drm_atomic_uapi.c | 54 +++++++++++++++++++++++++++-- drivers/gpu/drm/drm_crtc_internal.h | 2 +- drivers/gpu/drm/drm_mode_object.c | 2 +- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index a15121e75a0a..ebaa6413d5a0 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); @@ -1044,6 +1066,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 +1080,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 +1088,21 @@ 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; + } + + if (async_flip && plane_state->plane->type != DRM_PLANE_TYPE_PRIMARY) { + drm_dbg_atomic(prop->dev, + "[OBJECT:%d] Only primary planes can be changed during async flip\n", + obj->id); + ret = -EINVAL; + break; + } + ret = drm_atomic_plane_set_property(plane, plane_state, file_priv, prop, prop_value); @@ -1349,6 +1394,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 +1431,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 +1517,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 Wed Oct 25 00:53:17 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: 157782 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp2293151vqx; Tue, 24 Oct 2023 17:54:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGwAklfcGvZl8Shw/kfZpR8sBT33ynZAxiQnhwna4Bj0sFWKay4b5vntHtDBGPerpHFrFia X-Received: by 2002:a05:6808:1b0b:b0:3b2:e308:a4da with SMTP id bx11-20020a0568081b0b00b003b2e308a4damr16866938oib.44.1698195267654; Tue, 24 Oct 2023 17:54:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698195267; cv=none; d=google.com; s=arc-20160816; b=XUtj6J/2bypPaIjKzU0E6b99asJ/F9HGUlXYzLBt03K9kQBnqrzodPzWHqTdSIOXtu 9tcq0yXmGsU/DAUGT1E8dgx9DwLNwKx/FuOJ6r+aKtOnXQVWw0UzZAKyvjy8uWcl4Pzu 5UuO2cdoIRvXJ6u/2ZTxzcDS+taeAcqtkqdZWEuHJXsfgCAbmAeeJ0xJE0/0C5JwebPP 1L19QrITPKHDB321XZ2toAoloNdEbGpxownaCwv7kLaUaE+K6QyRpAph5cot0q+2Up/B U6w3ZJl02WS9vGxOWaUiR/OGJPp1qJYCiaVBWoKMunQ7IVOJECJg4Do4bBPXUurjINbr x0eA== 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=ptMecIWhxppUkq2aXoZa2CHrMXZa5VzlLHDPQoyEpAg=; fh=rYjRbIqNfYW0lvQEx2f4BL5R5ljGGFslRfQX73dBhWQ=; b=j7njxNyyttBtwFmMmhL1X98f/6IVUZrkbAQEWFp1FkQQHlAIKcafa4Y2TwErSH3wap Dh373Ni839IvZmgwPUIg5tXwfKMOgJvoX2P6EL8FbAb5eP9Q7XNMAXKJ8sIA7gM7pgeu 7L5x0AM9//HLqq2fZmeoMcaMHXktNmz1SH9X8SKUnMLfUSsxRyXbIeJAI+OjXwUwDjHB GQhwe1zbxcrbng+5nUBWRi+O9zgvo375VUv5aWAk67vzLbvcM6JHxJyZme29KAx8QYqI 3ydH8g1GguLeMIobHnA3uf0wE36BHeEQtCgp2Zi2am5DmzsdcaCXm9odEd/UYlSGFgu1 1xRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=OrClVTCZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id w191-20020a6382c8000000b0059b9e4e53d5si9180377pgd.218.2023.10.24.17.54.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:54:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=OrClVTCZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (Postfix) with ESMTP id 3CF3A804C531; Tue, 24 Oct 2023 17:54:24 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232011AbjJYAyG (ORCPT + 26 others); Tue, 24 Oct 2023 20:54:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231433AbjJYAx7 (ORCPT ); Tue, 24 Oct 2023 20:53:59 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB5EA10E7 for ; Tue, 24 Oct 2023 17:53:54 -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=ptMecIWhxppUkq2aXoZa2CHrMXZa5VzlLHDPQoyEpAg=; b=OrClVTCZX7Ue/kAEL5KE0PbLo0 T5rBz0LCKIV0u9EhorjmSHrK/I2GsDpHz4hehUYHXr0SfGRpp86Zn6cF1EgD48DwZMgm41AW40nCC Fh93+/G6I9+CILBb0D9fb3G/bq6g2ZhiEEXORCHd6yjrGocodEeyqgGByRmWnrdLHtDZb9WhRfs2I 5vEJnp8tVghSkjIF3pj3pykoCH8aJOfT3Q4/Bhnw7yaP8ynG5CHOQ+nZqwzT5E6wA//Y4PtTeoKAs 1fuOer0ETIIGxT6QEgEAoJtcGuLFccnidF9aDXi5J56qydss64qUhhu1PFZbjtODkN1c4bCUykkbO LEuP7SOQ==; Received: from [191.193.179.125] (helo=steammachine.lan) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qvS9f-006qog-Uh; Wed, 25 Oct 2023 02:53:52 +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: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com, Simon Ser , Rob Clark , Pekka Paalanen , Daniel Vetter , Daniel Stone , =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , Dave Airlie , =?utf-8?q?Michel_D=C3=A4nzer?= , Randy Dunlap , Pekka Paalanen , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v8 5/6] drm/doc: Define KMS atomic state set Date: Tue, 24 Oct 2023 21:53:17 -0300 Message-ID: <20231025005318.293690-6-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231025005318.293690-1-andrealmeid@igalia.com> References: <20231025005318.293690-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 groat.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 (groat.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:54:24 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780686801243247365 X-GMAIL-MSGID: 1780686801243247365 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 --- v8: - no changes 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 Wed Oct 25 00:53:18 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: 157783 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp2293179vqx; Tue, 24 Oct 2023 17:54:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG0mbxKxHwqbqaWitdSE1UVdm7yVQkHhl96ruIziAVdAB93y9Q+4TTxiNA6IJsoN32brUg/ X-Received: by 2002:a05:6870:10d1:b0:1ea:8b10:2438 with SMTP id 17-20020a05687010d100b001ea8b102438mr14907576oar.50.1698195274767; Tue, 24 Oct 2023 17:54:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698195274; cv=none; d=google.com; s=arc-20160816; b=mWLigtRIsIrWThXPj51mVcj0rKyYqXactSWa0m6DNcUsDvJDmTg+M5z7PtiDJtZTdM lF3/HHDQIXm0UnlfcGOTgJV9jGpCjhxV73gIkv1lytVyr+3fNLwr2BndWBHTFOWx++sp Hvsudih6qOUwydfjdlBJitzzzpjKUQboHhuOuUppBkSkwc6eaGAK/Tex1YEz9jm2HM8e c5yIxrQxpm0O3tRtw8rMWfnpeveYEMXsAALxkNRJGtWhCmFDkupTkl0gt54R8x6BoH3K uz0YErrD5nQg5TeDlWB2vxjYB+f8oKzWZX65oig4AwluyyAZKcuEZk+tV/xDST5rSFW3 WJmw== 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=Ly+W1BaF+i7xsZIAQ5S1YLd4toT2p72ofv+UymR90NM=; fh=oozRrKarZZG8EJ8TWYFtLglEZVoKmF8bWYorcz/JMDw=; b=Ezo2trqud8UXavgsEr2cZspQ8KIJ7vDX5LA0UGggXk5+oWjOb6jLQOY1m38AFqk5pj YPSvt16o0Ghl/uJRmDcW6MUrebYNjbg3yY0l3mxMNxHEKFF26LF9lb7irkR58XKRLl+G xzNOKjSn5uIZHqrUBdLkbFHeocR2V88J4PqPuXcw9B4X14rEDpcD4CAsfngYX4VfJ5oU 3MIlETwp8mVFTbyhxk8LEYlo+lDXOHMRGTUZNPfOzn6PuzYhyj16JUJ+XYGqKU11x0X7 qYp5DYALimTOHqO6favTGmi79bqzZCKpMbG8SgYiX1YlL34k4Zcq+scmiA0dAkDnYXI3 XIRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=ZP2InQEG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id x5-20020a654145000000b0058974d3c296si6338907pgp.815.2023.10.24.17.54.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:54:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=fail header.i=@igalia.com header.s=20170329 header.b=ZP2InQEG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (Postfix) with ESMTP id 773D580ACC56; Tue, 24 Oct 2023 17:54:31 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229763AbjJYAyU (ORCPT + 26 others); Tue, 24 Oct 2023 20:54:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231865AbjJYAyD (ORCPT ); Tue, 24 Oct 2023 20:54:03 -0400 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A1AA10F4 for ; Tue, 24 Oct 2023 17:53:59 -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=Ly+W1BaF+i7xsZIAQ5S1YLd4toT2p72ofv+UymR90NM=; b=ZP2InQEGRTWolLJT6f0CDEqXPp RNTQEcCo/bJEx2eKMu1gf7+1wNHH6IxhUJvG0lDW+Z44NIqWNWEObkLEWTiYM88nMKRZUUwzwK7SN 1Ip+tT9pzsrC/bUYO0D16oqjX6p9w7YK5uMxsDvstwXSEhb4a2gzKMLFJTZcSHrwz243nqK6+91u7 UT8iaeqocgouYMlyi7QvVTC/kITlrHB8KtNPmSnQIOzVe2Fnd7XQAJqOOraphEXRdA/26UjW0Lvtt b983rd00w0PD540+5pn1mzQ6hCCWAHGt583ogSXu5BubSg1FfHOSM4B5BmExG2zTNjkpFseR9CWb+ KZJHNxUg==; Received: from [191.193.179.125] (helo=steammachine.lan) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1qvS9k-006qog-LD; Wed, 25 Oct 2023 02:53:57 +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: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com, Simon Ser , Rob Clark , Pekka Paalanen , Daniel Vetter , Daniel Stone , =?utf-8?b?J01hcmVrIE9sxaHDoWsn?= , Dave Airlie , =?utf-8?q?Michel_D=C3=A4nzer?= , Randy Dunlap , =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v8 6/6] amd/display: indicate support for atomic async page-flips on DC Date: Tue, 24 Oct 2023 21:53:18 -0300 Message-ID: <20231025005318.293690-7-andrealmeid@igalia.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231025005318.293690-1-andrealmeid@igalia.com> References: <20231025005318.293690-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 groat.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 (groat.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:54:31 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780686808109474487 X-GMAIL-MSGID: 1780686808109474487 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 dec6e43e7198..45b8fd61a044 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4003,7 +4003,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)