From patchwork Thu Nov 9 17:24:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 163526 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b129:0:b0:403:3b70:6f57 with SMTP id q9csp589021vqs; Thu, 9 Nov 2023 09:26:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IENyzjAPHajxh1UQEkas3k9wGYYLqAQMg+P7YWD7VMVW0IR3nMLvNnBXJ52PTp3Cfqmpoub X-Received: by 2002:a05:6a00:a1f:b0:68f:f741:57a1 with SMTP id p31-20020a056a000a1f00b0068ff74157a1mr6727143pfh.7.1699550814566; Thu, 09 Nov 2023 09:26:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699550814; cv=none; d=google.com; s=arc-20160816; b=desWSPyTixThJGmdyzVm/pO80CAoLVUdT3AIjlZfqkpuUvRUkP/pSh0+d2s1CxG3Mz 1Dh4pgZHl/GyzexVZzlr3cBcfgJmGpc/mhiCRiVTsHqiiEyO3ia7gIIze9sSOMEx5Gqr KPawInYe5Bd68FQrgRmz3usQNSmGKbQU8HKxvLWAlP29e2k3gCvrZkmfzpquSAFN03vT usOoSp6AfPM+TKO88iPhhRYiNibT3IbtCR22gVlGEP1UMt1eu8VYyy9+Ux+Af06Gn8A/ 2VsyqAlKocF1PmeoU5HiHkv1K0hB+o9FdAOO682nj2Xa8LBLqElDw0P7s0RCoW+i8o/V ojFw== 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=3EBII1piFhjDdYePPF4sEFQnIWSSXfwKWEcUhw8jHaI=; fh=ztGji14Q8LlecWA4jNNGjf91HSIVDUOK90kz58J5ZZw=; b=T/Gink8G8YBFYU87KJ/9Vy7O+OD2an6Lk8hsdG2ueaGLsKjoV6RxJKoyX3YH3Yu3N6 Arfn0ByZJbRhBgxubEZie46F0xz/X0KeomCEe2YiXrvKGCwH8x3YzDMfALhYTaqza6+G r+AOQsVJYqiVMi+1s2WBdilu2Zt84LtcthrBUulmo6XQ/HEv8izRi+IIYJ1gy5rLuvpI Wf69B3YyVAJG9hKfiyPN0BiXuRj9Ti4aEcv32Wh9Yxi/v4j+hyWQgMA0DlMKgBjb8u8J ose6b7+/hbfiVx/dx67T83tjH8MOpOepzVnxlOD3O9Siy5ilUFBg9+nRBHiTso+VB+xo uMAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=AkaT3X+C; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id fi18-20020a056a00399200b0068fb95e5401si16868755pfb.65.2023.11.09.09.26.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:26:54 -0800 (PST) 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=pass header.i=@redhat.com header.s=mimecast20190719 header.b=AkaT3X+C; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id E81EA82393FF; Thu, 9 Nov 2023 09:26:44 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344620AbjKIR0G (ORCPT + 31 others); Thu, 9 Nov 2023 12:26:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344553AbjKIR0A (ORCPT ); Thu, 9 Nov 2023 12:26:00 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6015830FA for ; Thu, 9 Nov 2023 09:25:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1699550715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3EBII1piFhjDdYePPF4sEFQnIWSSXfwKWEcUhw8jHaI=; b=AkaT3X+C70YZEDmRr1fQuX43C3XgcEcpKuh2fPki+Wonco1CQavsnFjR7S6aQz3qZXrDPs pG5p5rID5c3DKwke8OD8ASj+9adTCcXaYyYTfm8jnYm+QMTo763dQXYS1LxQV64GbBt1AI Ve5ryFHrhfKkMGDNtFPcyflnFOlearM= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-214-NUZBN8a4O5G8MitdLp5h2g-1; Thu, 09 Nov 2023 12:25:10 -0500 X-MC-Unique: NUZBN8a4O5G8MitdLp5h2g-1 Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-507d2e150c2so1103324e87.3 for ; Thu, 09 Nov 2023 09:25:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699550708; x=1700155508; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3EBII1piFhjDdYePPF4sEFQnIWSSXfwKWEcUhw8jHaI=; b=MKFyGxZqkwEO1YeBW9qznMkZ4SEM6BDk7tEiwPH2wqjNxDQV6QcGEtowd9/8pCjz2/ 1JqJZ9gtI4uDwShwrvrEUF3rD8JL5eHh/4xnz9Y5M27fxvAqmIzIlffsd4JfO6F9Z3gR 9eB7nM9fNOwovwyCstom040rnLoZr1cdnciZJpC0SixJiCkqrUhw8rq+4lHrEEFg/5XW nT+N3EnFI7QEjSG+jii/PX6K8TzdgxgwkoTiJBNFj0so1cEhUFICfcJeFZv+TAalI1Fo GyPYhtDOL7Ev+oQOg05b3U1OZPNk6u3iQLny11lO7YYf1oBuZNHNNYiOchqGmlR+zqnb buqQ== X-Gm-Message-State: AOJu0YwuS2+GPTQebDrF+UE/Q/y4qF7kcLTcuO8leY8dZfyEDyWOcMEA OT8xvk6v0Ai3hIZjnexp8GaqHVO7RppiEM2sTlsxCVCA2c4dEK0OovXOj/S1DmB0R2VBjZYwC08 jzkLGLn3nlqSJMc5SGeZ63lElRc0R55vfv+BxhXaUSEfDHlLTF8L/yv0UVPBHhs8kXi+2PexDq2 Eoc8i8S50= X-Received: by 2002:a19:e00d:0:b0:503:32bb:d5ca with SMTP id x13-20020a19e00d000000b0050332bbd5camr1864097lfg.31.1699550708448; Thu, 09 Nov 2023 09:25:08 -0800 (PST) X-Received: by 2002:a19:e00d:0:b0:503:32bb:d5ca with SMTP id x13-20020a19e00d000000b0050332bbd5camr1864072lfg.31.1699550707984; Thu, 09 Nov 2023 09:25:07 -0800 (PST) Received: from localhost (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id q14-20020a05600000ce00b003143c9beeaesm133795wrx.44.2023.11.09.09.25.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:25:07 -0800 (PST) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Simon Ser , Sima Vetter , Pekka Paalanen , Maxime Ripard , Bilal Elmoussaoui , Erico Nunes , Javier Martinez Canillas , stable@vger.kernel.org, nerdopolis , Daniel Vetter , David Airlie , Gerd Hoffmann , Maarten Lankhorst , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH 1/6] drm: Move drm_atomic_helper_damage_{iter_init,merged}() to helpers Date: Thu, 9 Nov 2023 18:24:35 +0100 Message-ID: <20231109172449.1599262-2-javierm@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com> References: <20231109172449.1599262-1-javierm@redhat.com> MIME-Version: 1.0 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]); Thu, 09 Nov 2023 09:26:45 -0800 (PST) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782108195081804376 X-GMAIL-MSGID: 1782108195081804376 We need a similar drm_atomic_helper_buffer_damage_merged() helper function that takes into account if a framebuffer attached to the plane has changed since the last plane update (page-flip). Since both damage helpers will share most of the current logic, move it to an internal helper. The drm_atomic_helper_buffer_damage_merged() will have to use a different drm_atomic_helper_buffer_damage_iter_init() function so move that logic also to an internal helper. Fixes: 01f05940a9a7 ("drm/virtio: Enable fb damage clips property for the primary plane") Cc: # v6.4+ Reported-by: nerdopolis Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218115 Suggested-by: Sima Vetter Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/drm_damage_helper.c | 95 +++++++++++++++++------------ 1 file changed, 55 insertions(+), 40 deletions(-) diff --git a/drivers/gpu/drm/drm_damage_helper.c b/drivers/gpu/drm/drm_damage_helper.c index d8b2955e88fd..aa2325567918 100644 --- a/drivers/gpu/drm/drm_damage_helper.c +++ b/drivers/gpu/drm/drm_damage_helper.c @@ -201,28 +201,10 @@ int drm_atomic_helper_dirtyfb(struct drm_framebuffer *fb, } EXPORT_SYMBOL(drm_atomic_helper_dirtyfb); -/** - * drm_atomic_helper_damage_iter_init - Initialize the damage iterator. - * @iter: The iterator to initialize. - * @old_state: Old plane state for validation. - * @state: Plane state from which to iterate the damage clips. - * - * Initialize an iterator, which clips plane damage - * &drm_plane_state.fb_damage_clips to plane &drm_plane_state.src. This iterator - * returns full plane src in case damage is not present because either - * user-space didn't sent or driver discarded it (it want to do full plane - * update). Currently this iterator returns full plane src in case plane src - * changed but that can be changed in future to return damage. - * - * For the case when plane is not visible or plane update should not happen the - * first call to iter_next will return false. Note that this helper use clipped - * &drm_plane_state.src, so driver calling this helper should have called - * drm_atomic_helper_check_plane_state() earlier. - */ -void -drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, - const struct drm_plane_state *old_state, - const struct drm_plane_state *state) +static void +__drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, + const struct drm_plane_state *old_state, + const struct drm_plane_state *state) { struct drm_rect src; memset(iter, 0, sizeof(*iter)); @@ -247,6 +229,32 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, iter->full_update = true; } } + +/** + * drm_atomic_helper_damage_iter_init - Initialize the damage iterator. + * @iter: The iterator to initialize. + * @old_state: Old plane state for validation. + * @state: Plane state from which to iterate the damage clips. + * + * Initialize an iterator, which clips plane damage + * &drm_plane_state.fb_damage_clips to plane &drm_plane_state.src. This iterator + * returns full plane src in case damage is not present because either + * user-space didn't sent or driver discarded it (it want to do full plane + * update). Currently this iterator returns full plane src in case plane src + * changed but that can be changed in future to return damage. + * + * For the case when plane is not visible or plane update should not happen the + * first call to iter_next will return false. Note that this helper use clipped + * &drm_plane_state.src, so driver calling this helper should have called + * drm_atomic_helper_check_plane_state() earlier. + */ +void +drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, + const struct drm_plane_state *old_state, + const struct drm_plane_state *state) +{ + __drm_atomic_helper_damage_iter_init(iter, old_state, state); +} EXPORT_SYMBOL(drm_atomic_helper_damage_iter_init); /** @@ -291,24 +299,9 @@ drm_atomic_helper_damage_iter_next(struct drm_atomic_helper_damage_iter *iter, } EXPORT_SYMBOL(drm_atomic_helper_damage_iter_next); -/** - * drm_atomic_helper_damage_merged - Merged plane damage - * @old_state: Old plane state for validation. - * @state: Plane state from which to iterate the damage clips. - * @rect: Returns the merged damage rectangle - * - * This function merges any valid plane damage clips into one rectangle and - * returns it in @rect. - * - * For details see: drm_atomic_helper_damage_iter_init() and - * drm_atomic_helper_damage_iter_next(). - * - * Returns: - * True if there is valid plane damage otherwise false. - */ -bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, - struct drm_plane_state *state, - struct drm_rect *rect) +static bool __drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, + struct drm_plane_state *state, + struct drm_rect *rect) { struct drm_atomic_helper_damage_iter iter; struct drm_rect clip; @@ -330,4 +323,26 @@ bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, return valid; } + +/** + * drm_atomic_helper_damage_merged - Merged plane damage + * @old_state: Old plane state for validation. + * @state: Plane state from which to iterate the damage clips. + * @rect: Returns the merged damage rectangle + * + * This function merges any valid plane damage clips into one rectangle and + * returns it in @rect. + * + * For details see: drm_atomic_helper_damage_iter_init() and + * drm_atomic_helper_damage_iter_next(). + * + * Returns: + * True if there is valid plane damage otherwise false. + */ +bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, + struct drm_plane_state *state, + struct drm_rect *rect) +{ + return __drm_atomic_helper_damage_merged(old_state, state, rect); +} EXPORT_SYMBOL(drm_atomic_helper_damage_merged); From patchwork Thu Nov 9 17:24:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 163530 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b129:0:b0:403:3b70:6f57 with SMTP id q9csp589437vqs; Thu, 9 Nov 2023 09:27:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IFkuvFGIjYZCj8YIwgDBEkQgwUMFewSKuXpVgPw0jQefyngn6oFXCNibGEaa7Yl3FyKBOiH X-Received: by 2002:aca:2214:0:b0:3a3:4314:8dc0 with SMTP id b20-20020aca2214000000b003a343148dc0mr2286371oic.5.1699550859171; Thu, 09 Nov 2023 09:27:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699550859; cv=none; d=google.com; s=arc-20160816; b=ih5U2LxTH+fov9FNB9u+X9x16AoIlMjrQo1aGFXSVrUInzDJxAnc/eJ3tEK8Z+R8Io YOP9thmFETR9TGhzlTBsqX6CD0Ax9XDtDS256a8AEeqccRjjzgL2ZJ7O14I6DXv+0Gm2 sG22OubmReSq5v79+WQHwvJb+VJvRGOdlNuMyH0GwYEjJ7TBQ+XLhJ/I0goTId7uvaKF efKYGeZ2ZlNp0LY913o4gsqTHw/+6t1qdcc8mzBaA0O8WVpImE/ZU9/LJp0hF4SREY2+ P35zO2Rg/x+B8vMW7JgAGcCNsAhxMfq7yeA2JRavL5D3U/zRpLqsnJfNU6zR15Cz+rII 86cA== 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=DyicNWwvae7/KcxXuwMP09NutaVYwbuAqWEUxMoKBKk=; fh=ztGji14Q8LlecWA4jNNGjf91HSIVDUOK90kz58J5ZZw=; b=DkISjzA9wi3b+h22BJmoUwyPV4Sc5diyXjQBNRyH3kBnhWi9PY1UwLpx+UYYsZ3oCZ A/H6VYOmfd2AcjD6aaJiOR8AuGjmmpgfRRBtc6rlsp49ZCcR8/tnOGtQgHO+pJbjByk5 ZctyuyPQVY+MWMb5ZfK1eClWmDRLfUcO3FiGP8096fvo2Mm4V8L/gm5d3Hf3jlivnCId ofNkcgVk2AexgcFG4yEN4fPsgvKAkeBFW7qHFWPjP6P08sAC5n50tdF1XLCtp+McdVCa OO98TQ1vKT0kN8iM0BS0aBhGlb+HQUHi6Uq0z93XrByI9ocHGjcn8u4IwLbQJY/4x9PX 9Xzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="QDVyWOw/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id h191-20020a636cc8000000b005b106cd44d1si7065907pgc.486.2023.11.09.09.27.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:27:39 -0800 (PST) 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=pass header.i=@redhat.com header.s=mimecast20190719 header.b="QDVyWOw/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 7CE0780965BB; Thu, 9 Nov 2023 09:27:35 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344789AbjKIR0P (ORCPT + 31 others); Thu, 9 Nov 2023 12:26:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344567AbjKIR0A (ORCPT ); Thu, 9 Nov 2023 12:26:00 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0813325A for ; Thu, 9 Nov 2023 09:25:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1699550713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DyicNWwvae7/KcxXuwMP09NutaVYwbuAqWEUxMoKBKk=; b=QDVyWOw/W6wRlaBdHmdcmUPEjG7LojXpIj2xapR2qW6svpfGLuOx25LEF02ftFC9VdfyhP M76BXmxauNl5jbXf7AXyM9iagcwNWqEMyBDxuOTaMnTKF9Vq/ob7efcjAJrhqyQF/rKls+ xCsDqUUEf/ABV1J+vRXwTaezFrZdVew= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-w-xB_HvlOZGVvNG5vDzm4Q-1; Thu, 09 Nov 2023 12:25:12 -0500 X-MC-Unique: w-xB_HvlOZGVvNG5vDzm4Q-1 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4084001846eso7294995e9.1 for ; Thu, 09 Nov 2023 09:25:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699550710; x=1700155510; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DyicNWwvae7/KcxXuwMP09NutaVYwbuAqWEUxMoKBKk=; b=nS78Vkbkz0rN2lpsEP81Gz4e0l8CPgE9R+cIT8HfwawpBHiiGUURNL/TEfvwQYz5X0 5wln118yE4jk2MSt4JpVbTjJwjsyRz9YpFZKzFaVCjU3bYhbsM7y+V8tPBGBcQ53FzUn +SULJ/Zx8nPGLKpsrh05GAWn8M0UlZuBKcA97m2aXq3gUGB/16Zhx9kFzQYROe+SYs0n FyogNI+AVT5Q8So6RjNr/7nWqjx4G/9OX/ykExriHo1w2ZfWtz5ivxA7sy/0Vhz3mra1 CVYkmwENTClGXWLAOmvP1CVJ79BYIuhcUC/QoE/NG0ji9NOYUBS2+txZ45l2GpQwsF41 E/Xg== X-Gm-Message-State: AOJu0YwK8NRNrEoFAe7iY7gg0tbYd5CDaL8KEC31zRCDtAyfhS0LmY+s NKMmr2UQgdV5NIxIEFn8wxFeNHlNOUwjisx4JjxQe6py1ULoRlabT+E+U7ssalIT2C/i1ddwikF g8n93sP0LU5LHHosk4Qul8HGFCeoHD+o4NvO3CtGECZmraHMFgdo1zDmrxcGekf5KEa3hBlBnSS 0x17v0aSw= X-Received: by 2002:a05:600c:4f03:b0:3fe:687a:abb8 with SMTP id l3-20020a05600c4f0300b003fe687aabb8mr4840961wmq.7.1699550710549; Thu, 09 Nov 2023 09:25:10 -0800 (PST) X-Received: by 2002:a05:600c:4f03:b0:3fe:687a:abb8 with SMTP id l3-20020a05600c4f0300b003fe687aabb8mr4840926wmq.7.1699550710072; Thu, 09 Nov 2023 09:25:10 -0800 (PST) Received: from localhost (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id b11-20020a05600c4e0b00b004054dcbf92asm2767377wmq.20.2023.11.09.09.25.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:25:09 -0800 (PST) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Simon Ser , Sima Vetter , Pekka Paalanen , Maxime Ripard , Bilal Elmoussaoui , Erico Nunes , Javier Martinez Canillas , stable@vger.kernel.org, nerdopolis , Daniel Vetter , David Airlie , Gerd Hoffmann , Maarten Lankhorst , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH 2/6] drm: Add drm_atomic_helper_buffer_damage_{iter_init,merged}() helpers Date: Thu, 9 Nov 2023 18:24:36 +0100 Message-ID: <20231109172449.1599262-3-javierm@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com> References: <20231109172449.1599262-1-javierm@redhat.com> MIME-Version: 1.0 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]); Thu, 09 Nov 2023 09:27:35 -0800 (PST) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782108241325891816 X-GMAIL-MSGID: 1782108241325891816 To be used by drivers that do per-buffer (e.g: virtio-gpu) uploads (rather than per-plane uploads), since these type of drivers need to handle buffer damages instead of frame damages. The drm_atomic_helper_buffer_damage_iter_init() has the same logic than drm_atomic_helper_damage_iter_init() but it also takes into account if the framebuffer attached to plane's state has changed since the last update. And the drm_atomic_helper_buffer_damage_merged() is just a version of the drm_atomic_helper_damage_merged() helper, but it uses the iter_init helper that is mentioned above. Fixes: 01f05940a9a7 ("drm/virtio: Enable fb damage clips property for the primary plane") Cc: # v6.4+ Reported-by: nerdopolis Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218115 Suggested-by: Sima Vetter Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/drm_damage_helper.c | 79 ++++++++++++++++++++++++++--- include/drm/drm_damage_helper.h | 7 +++ 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_damage_helper.c b/drivers/gpu/drm/drm_damage_helper.c index aa2325567918..b72062c9d31c 100644 --- a/drivers/gpu/drm/drm_damage_helper.c +++ b/drivers/gpu/drm/drm_damage_helper.c @@ -204,7 +204,8 @@ EXPORT_SYMBOL(drm_atomic_helper_dirtyfb); static void __drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, const struct drm_plane_state *old_state, - const struct drm_plane_state *state) + const struct drm_plane_state *state, + bool buffer_damage) { struct drm_rect src; memset(iter, 0, sizeof(*iter)); @@ -223,7 +224,8 @@ __drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, iter->plane_src.x2 = (src.x2 >> 16) + !!(src.x2 & 0xFFFF); iter->plane_src.y2 = (src.y2 >> 16) + !!(src.y2 & 0xFFFF); - if (!iter->clips || !drm_rect_equals(&state->src, &old_state->src)) { + if (!iter->clips || !drm_rect_equals(&state->src, &old_state->src) || + (buffer_damage && old_state->fb != state->fb)) { iter->clips = NULL; iter->num_clips = 0; iter->full_update = true; @@ -243,6 +245,10 @@ __drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, * update). Currently this iterator returns full plane src in case plane src * changed but that can be changed in future to return damage. * + * Note that this helper is for drivers that do per-plane uploads and expect + * to handle frame damages. Drivers that do per-buffer uploads instead should + * use @drm_atomic_helper_buffer_damage_iter_init() that handles buffer damages. + * * For the case when plane is not visible or plane update should not happen the * first call to iter_next will return false. Note that this helper use clipped * &drm_plane_state.src, so driver calling this helper should have called @@ -253,10 +259,37 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, const struct drm_plane_state *old_state, const struct drm_plane_state *state) { - __drm_atomic_helper_damage_iter_init(iter, old_state, state); + __drm_atomic_helper_damage_iter_init(iter, old_state, state, false); } EXPORT_SYMBOL(drm_atomic_helper_damage_iter_init); +/** + * drm_atomic_helper_buffer_damage_iter_init - Initialize the buffer damage iterator. + * @iter: The iterator to initialize. + * @old_state: Old plane state for validation. + * @state: Plane state from which to iterate the damage clips. + * + * Initialize an iterator, which clips buffer damage + * &drm_plane_state.fb_damage_clips to plane &drm_plane_state.src. This iterator + * returns full plane src in case buffer damage is not present because user-space + * didn't sent, driver discarded it (it want to do full plane update) or the plane + * @state has an attached framebuffer that is different than the one in @state (it + * has changed since the last plane update). + * + * For the case when plane is not visible or plane update should not happen the + * first call to iter_next will return false. Note that this helper use clipped + * &drm_plane_state.src, so driver calling this helper should have called + * drm_atomic_helper_check_plane_state() earlier. + */ +void +drm_atomic_helper_buffer_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, + const struct drm_plane_state *old_state, + const struct drm_plane_state *state) +{ + __drm_atomic_helper_damage_iter_init(iter, old_state, state, true); +} +EXPORT_SYMBOL(drm_atomic_helper_buffer_damage_iter_init); + /** * drm_atomic_helper_damage_iter_next - Advance the damage iterator. * @iter: The iterator to advance. @@ -301,7 +334,8 @@ EXPORT_SYMBOL(drm_atomic_helper_damage_iter_next); static bool __drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, struct drm_plane_state *state, - struct drm_rect *rect) + struct drm_rect *rect, + bool buffer_damage) { struct drm_atomic_helper_damage_iter iter; struct drm_rect clip; @@ -312,7 +346,7 @@ static bool __drm_atomic_helper_damage_merged(const struct drm_plane_state *old_ rect->x2 = 0; rect->y2 = 0; - drm_atomic_helper_damage_iter_init(&iter, old_state, state); + __drm_atomic_helper_damage_iter_init(&iter, old_state, state, buffer_damage); drm_atomic_for_each_plane_damage(&iter, &clip) { rect->x1 = min(rect->x1, clip.x1); rect->y1 = min(rect->y1, clip.y1); @@ -336,6 +370,10 @@ static bool __drm_atomic_helper_damage_merged(const struct drm_plane_state *old_ * For details see: drm_atomic_helper_damage_iter_init() and * drm_atomic_helper_damage_iter_next(). * + * Note that this helper is for drivers that do per-plane uploads and expect + * to handle frame damages. Drivers that do per-buffer uploads instead should + * use @drm_atomic_helper_buffer_damage_merged() that handles buffer damages. + * * Returns: * True if there is valid plane damage otherwise false. */ @@ -343,6 +381,35 @@ bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, struct drm_plane_state *state, struct drm_rect *rect) { - return __drm_atomic_helper_damage_merged(old_state, state, rect); + return __drm_atomic_helper_damage_merged(old_state, state, rect, false); } EXPORT_SYMBOL(drm_atomic_helper_damage_merged); + +/** + * drm_atomic_helper_buffer_damage_merged - Merged buffer damage + * @old_state: Old plane state for validation. + * @state: Plane state from which to iterate the damage clips. + * @rect: Returns the merged buffer damage rectangle + * + * This function merges any valid buffer damage clips into one rectangle and + * returns it in @rect. It checks if the framebuffers attached to @old_state + * and @state are the same. If that is not the case then the returned damage + * rectangle is the &drm_plane_state.src, since a full update should happen. + * + * Note that &drm_plane_state.fb_damage_clips == NULL in plane state means that + * full plane update should happen. It also ensure helper iterator will return + * &drm_plane_state.src as damage. + * + * For details see: drm_atomic_helper_buffer_damage_iter_init() and + * drm_atomic_helper_damage_iter_next(). + * + * Returns: + * True if there is valid buffer damage otherwise false. + */ +bool drm_atomic_helper_buffer_damage_merged(const struct drm_plane_state *old_state, + struct drm_plane_state *state, + struct drm_rect *rect) +{ + return __drm_atomic_helper_damage_merged(old_state, state, rect, true); +} +EXPORT_SYMBOL(drm_atomic_helper_buffer_damage_merged); diff --git a/include/drm/drm_damage_helper.h b/include/drm/drm_damage_helper.h index effda42cce31..328bb249d68f 100644 --- a/include/drm/drm_damage_helper.h +++ b/include/drm/drm_damage_helper.h @@ -74,11 +74,18 @@ void drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, const struct drm_plane_state *old_state, const struct drm_plane_state *new_state); +void +drm_atomic_helper_buffer_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, + const struct drm_plane_state *old_state, + const struct drm_plane_state *new_state); bool drm_atomic_helper_damage_iter_next(struct drm_atomic_helper_damage_iter *iter, struct drm_rect *rect); bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, struct drm_plane_state *state, struct drm_rect *rect); +bool drm_atomic_helper_buffer_damage_merged(const struct drm_plane_state *old_state, + struct drm_plane_state *state, + struct drm_rect *rect); #endif From patchwork Thu Nov 9 17:24:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 163525 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b129:0:b0:403:3b70:6f57 with SMTP id q9csp588987vqs; Thu, 9 Nov 2023 09:26:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IHlttbwodIcHVt0MV6XDMNTRBXn03L+ztcX8q2mg6iR9diQn0tH6G7LUlXCMynCNsmVHX6y X-Received: by 2002:a05:6a21:a581:b0:180:7df:76a4 with SMTP id gd1-20020a056a21a58100b0018007df76a4mr5398652pzc.45.1699550811499; Thu, 09 Nov 2023 09:26:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699550811; cv=none; d=google.com; s=arc-20160816; b=0HmPDyVthrdchBPJdVP5gmTZ6hWQOCJOEUuJ+rEA6lfedjoIIW7Z38XX/Eh94yHT7J MSsg7nPk20TFksbgMQtxlaXH33V29mx9GIqVmUxyyOChMoxKFAoUVip17pOO0WQCsgDW I45eNRnqqmZ3x4i3DoRl84W61i2RdhRyYMZK0OmQR5EG5qLnBV4K+r/3j9XlxXblpwoF Qaje1gqllrG0F3xQYmyYfFE7deW1u+zacXnexYBaLW4Ddailast+MPB+OIKos4V1TXOX 8vAFokEbkmworWEAy08+gFJpGcAmY9JK2SGGqZH5E7UruKyQYvRqgR7+hrXqqF/zUZWy 8NGA== 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=Y0steN0/ACKFTtJOvpHMkiOMUe7bddz5OgwOILeHxPA=; fh=olY/imv5iLuThp9ORbG7b2DqjjbrwsfOkG1dic5JhFY=; b=ONwtHcF2LmpOBQco0BbvzOc0Y7SeNqFrroEBvDfk3TyRfp2jK8B9xvc+8tgSl6fVeT WInTzzy7vgIIGF1aX9wrT13nztASMvmY8mdfFKTwSOZtEGgL5PEoitnWCZVHiU9zUiU6 zP/lQlIuA+raP5efxbKjSG4N96KEElyM4h/IzLuQnNwGOVOJfvBj6atfsAtDnTkqQu1A /OqcWyz3CJNHbwg2ne+RnunrVcuDDgPTlzAqrvdJOmk0qtP25CuBmu3g79VwPxteZ4aw c9Ubo+iy6zrcoyBf/3QpPPdUg/rNeyG8xiSoJlKjppoSNV4fN6YJrMn4H9UpqOesYkSE aORQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=LZutde8n; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id in7-20020a17090b438700b002773af24826si2124161pjb.123.2023.11.09.09.26.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:26:51 -0800 (PST) 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=pass header.i=@redhat.com header.s=mimecast20190719 header.b=LZutde8n; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 2EEC2819CC15; Thu, 9 Nov 2023 09:26:45 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344256AbjKIR0L (ORCPT + 31 others); Thu, 9 Nov 2023 12:26:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344556AbjKIR0A (ORCPT ); Thu, 9 Nov 2023 12:26:00 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18C4235BC for ; Thu, 9 Nov 2023 09:25:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1699550716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Y0steN0/ACKFTtJOvpHMkiOMUe7bddz5OgwOILeHxPA=; b=LZutde8nifGetZOoGaJyDm42ry3qHT2mwHdnmjQtynnXKrvWeUHcvrFBL0jLk7R+gwaZuc /EJFpLVc6xE9g8aUNrNmPxyv706CICodU/WFtFmmdg2mh2UZ47th0TZcm4AqW72UhZN/nW /RrdSR02s5CMW3g91yZZ/XZDRR8z338= Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-LzTXkVDwMW60EJV4my14Iw-1; Thu, 09 Nov 2023 12:25:14 -0500 X-MC-Unique: LzTXkVDwMW60EJV4my14Iw-1 Received: by mail-lf1-f70.google.com with SMTP id 2adb3069b0e04-5079c865541so1062148e87.3 for ; Thu, 09 Nov 2023 09:25:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699550712; x=1700155512; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y0steN0/ACKFTtJOvpHMkiOMUe7bddz5OgwOILeHxPA=; b=RZCBPlinFfAhcIzNRMxw/w2s/f3Ht1rPifcg61xsePvplRiFJNQt/tw8MOkJTmazRp hYrhuUWoVkOeuzb6e393kFzUc99AtjDW1bwKye4COULYl+ug4pDR454PTIZ28zxTO6FW 81ARI3m8mQtaontKTvx8DfbKiH2R4a9OKAoHzHqLbGYNnR3a27tD5fQOd0+9HfvCiAgE yPTUVplW9twoCj53Tek+H49kF9SGbnjkzdnhq3pMq76AfUA8vkb279Zh25ht2tZL8NNl rtnotI/xyPuAX7anS/3IpS6NSoQQ0BboJZoD/z9hu1v6CbMn41NzHp2hZL9H6Ug/5ueE behA== X-Gm-Message-State: AOJu0YxtCOptIksOwHAjAQFwpuJnQOVdpyTqV54vMscN3oddbsLpoAt7 3yWfxqcvzADGaVx8TNYEqD/FIvNq+IsFoeaTRs6JDm5806erk1Zd76F33NkqHi6fZBL1k3tAtj0 No45yFUbzHOENHaKq+CEgangdR1plV5z4EZxgCRWqO4bmK+kNw9fWl4KVGtS0LT2TVRLITAmga2 W8H03cEMs= X-Received: by 2002:a19:e007:0:b0:507:b935:9f5f with SMTP id x7-20020a19e007000000b00507b9359f5fmr1877882lfg.24.1699550712376; Thu, 09 Nov 2023 09:25:12 -0800 (PST) X-Received: by 2002:a19:e007:0:b0:507:b935:9f5f with SMTP id x7-20020a19e007000000b00507b9359f5fmr1877857lfg.24.1699550712088; Thu, 09 Nov 2023 09:25:12 -0800 (PST) Received: from localhost (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id f15-20020a056000128f00b00323293bd023sm135806wrx.6.2023.11.09.09.25.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:25:11 -0800 (PST) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Simon Ser , Sima Vetter , Pekka Paalanen , Maxime Ripard , Bilal Elmoussaoui , Erico Nunes , Javier Martinez Canillas , stable@vger.kernel.org, nerdopolis , Chia-I Wu , Daniel Vetter , David Airlie , Gerd Hoffmann , Gurchetan Singh , Maarten Lankhorst , Thomas Zimmermann , dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org Subject: [PATCH 3/6] drm/virtio: Use drm_atomic_helper_buffer_damage_merged() for buffer damage Date: Thu, 9 Nov 2023 18:24:37 +0100 Message-ID: <20231109172449.1599262-4-javierm@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com> References: <20231109172449.1599262-1-javierm@redhat.com> MIME-Version: 1.0 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]); Thu, 09 Nov 2023 09:26:45 -0800 (PST) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782108191814192399 X-GMAIL-MSGID: 1782108191814192399 The driver does per-buffer uploads. It needs to use the damage helper that handles buffer damages, rather than the helper that handles frame damages. Fixes: 01f05940a9a7 ("drm/virtio: Enable fb damage clips property for the primary plane") Cc: # v6.4+ Reported-by: nerdopolis Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218115 Suggested-by: Sima Vetter Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index a2e045f3a000..1adfd9813cde 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -183,7 +183,7 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane, return; } - if (!drm_atomic_helper_damage_merged(old_state, plane->state, &rect)) + if (!drm_atomic_helper_buffer_damage_merged(old_state, plane->state, &rect)) return; bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]); From patchwork Thu Nov 9 17:24:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 163528 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b129:0:b0:403:3b70:6f57 with SMTP id q9csp589277vqs; Thu, 9 Nov 2023 09:27:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IGXw1DXr49ug03BKd08UsmtKfjOjy4XlzXmheYSKMZelx+/gK10xS4UOLHgCLYnsx/dE312 X-Received: by 2002:a05:6e02:1a09:b0:359:4ba2:c905 with SMTP id s9-20020a056e021a0900b003594ba2c905mr5690798ild.32.1699550840484; Thu, 09 Nov 2023 09:27:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699550840; cv=none; d=google.com; s=arc-20160816; b=yJEFnW++uv1tSXyOHcCt/VF0hBgOODpEcS6m5HGfDq3oSAoRoksY0DXbowQaDKZ+Ky cwoJ+Xl7u9Hl1LCg53k45MY2YHnW8a7FjLHQATO0+d21vqEYbyYY0aqC2B3Xpg+wNDOn F4vF3AmcS55sz/YwujOA6XRxKK7Fw4SSHP1u7DAXkcLOfBaeITksyiKBuCO0q2zp2CvE vZj1bctMGpJYsQeWcaj5YMpWjQjc/qOVGR7kWi2s00YYwCAIogiFLGTgJLz5HAwVeZri ZwKEYo62HZain3mVeh+4TdM5zjBP5/3VYgisbePXOegFx3obCL+13RZf9t+aZWrgJ9QB wLeA== 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=7sDHSqMuo7yUORgn5WByoTm7yhsDzWS7QFyd4p9GXpM=; fh=q06x4YG3DZlnBZnE8als0mMSEFT1Jb2ERfRbzdL+2VI=; b=WTksWgBuWRhsV4RtE3UJBfUEebQ4Fgv0rmsNvkoZeTI6gmPKGKy/6F4mDD+3PDNvRx 4qG/UoiKmTZkddB6iijCs8kilKYuKOFEX8BcmKHZ2aAigGFuWNUVkIf78LK79nuWtoOa NfQ8hMsLeocYeVJlUs9yEtHefsvPkj6osn5RTxYwr8t3q0QbTVLDU+Pyx+cu5KobRtO/ bYIzsYSmr6QBaydV3pkt1LvAv/IKWSWA6Rx29nXglqBPrLJHXUr1IYV9RYnKFmG4kwf8 XYnBdRdeNjAQqBbM0iIRS2J9qC8CJA44n8TBAAamq4kngrfHOwmO6MyA2LQ1m7h4jgu5 4g4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=gWvE5NG1; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id k20-20020a056a00135400b006bd20945b23si16512658pfu.37.2023.11.09.09.27.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:27:20 -0800 (PST) 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=pass header.i=@redhat.com header.s=mimecast20190719 header.b=gWvE5NG1; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id ADE75823585F; Thu, 9 Nov 2023 09:26:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344590AbjKIR0B (ORCPT + 31 others); Thu, 9 Nov 2023 12:26:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344550AbjKIR0A (ORCPT ); Thu, 9 Nov 2023 12:26:00 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7D2835BD for ; Thu, 9 Nov 2023 09:25:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1699550718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7sDHSqMuo7yUORgn5WByoTm7yhsDzWS7QFyd4p9GXpM=; b=gWvE5NG129QJ6Oit0WT325wdq/TCrLsRFmtdEYG5nG568XM5h4FHAo5PQ4Dl7NsUMZZjha t3WdnG+haBmQpW6gVQgNs6E2SMUjy0g+pHhinraY8bP6oldZsYi8WFZfAESt30pbgKaIaH /XF7zX25ZTe4WmvGK0Mz0f/akXv5Ryw= Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-583-yIkP4aZEMuGzMNw-xdDCAg-1; Thu, 09 Nov 2023 12:25:16 -0500 X-MC-Unique: yIkP4aZEMuGzMNw-xdDCAg-1 Received: by mail-lf1-f70.google.com with SMTP id 2adb3069b0e04-507d2e150c2so1103390e87.3 for ; Thu, 09 Nov 2023 09:25:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699550714; x=1700155514; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7sDHSqMuo7yUORgn5WByoTm7yhsDzWS7QFyd4p9GXpM=; b=rAYrrF803IHYRk9HJmkmvM5Q5mGyWAom1IwrUrd8WL+wRRzsBPjelrQWnLOKdwZZmo BH1rFywNSpzOZc5J/kURICwBJQVtvvTParg4dKBEQWehpK0VkgsWNZtKGU+s7j/hRNsN whThczLRhH5+C6ZLvb1eFQN1kCcHUZf48eOWwODTwmZXi1UFruTmC6izmpOjJUs/hHUG ykNSOurLASBVXXibNZkh0Bkvfd6o7LwRBbq1lDkAh6VF88EwqwWS1/AtxymE3t5T7pQP RwnHWxcLOENBoPZVR8AJhwVGYzoIXzBdxs0OMPaL3sJg6ZmhCsFCnKrXYFlZ7oFPDnZh vpUQ== X-Gm-Message-State: AOJu0YwSxNeJsf+9TIDKQjhxdNqsXNUDqm6F8zBnhhEvoXYkKBb6QXR+ qxICub6y/VdesJ0tkEWxGblnAI0QHAl0RdufOXvrPtPA39w4y8xPR3fogW/fvLN0OcrDTrf2tzE vkv1l0/7pkPh2vTACKQ42A14io0exrDdilnhYaQQvrWxC1Yo23KxkApdPodMEmp80EO1TWrMnZ0 lqkl8GzIQ= X-Received: by 2002:ac2:5e9e:0:b0:507:a6a5:a87b with SMTP id b30-20020ac25e9e000000b00507a6a5a87bmr1916881lfq.51.1699550714324; Thu, 09 Nov 2023 09:25:14 -0800 (PST) X-Received: by 2002:ac2:5e9e:0:b0:507:a6a5:a87b with SMTP id b30-20020ac25e9e000000b00507a6a5a87bmr1916854lfq.51.1699550714038; Thu, 09 Nov 2023 09:25:14 -0800 (PST) Received: from localhost (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id c1-20020adfed81000000b0032fab28e9c9sm119847wro.73.2023.11.09.09.25.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:25:13 -0800 (PST) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Simon Ser , Sima Vetter , Pekka Paalanen , Maxime Ripard , Bilal Elmoussaoui , Erico Nunes , Javier Martinez Canillas , Daniel Vetter , David Airlie , Maarten Lankhorst , Thomas Zimmermann , VMware Graphics Reviewers , Zack Rusin , dri-devel@lists.freedesktop.org Subject: [PATCH 4/6] drm/vmwgfx: Use drm_atomic_helper_buffer_damage_iter_init() for buffer damage Date: Thu, 9 Nov 2023 18:24:38 +0100 Message-ID: <20231109172449.1599262-5-javierm@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com> References: <20231109172449.1599262-1-javierm@redhat.com> MIME-Version: 1.0 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]); Thu, 09 Nov 2023 09:26:16 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782108222241015089 X-GMAIL-MSGID: 1782108222241015089 The driver does per-buffer uploads. It needs to use the damage helper that handles buffer damages, rather than the helper that handles frame damages. Suggested-by: Sima Vetter Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 1489ad73c103..91cda125784e 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -2912,7 +2912,7 @@ int vmw_du_helper_plane_update(struct vmw_du_update_plane *update) * Iterate in advance to check if really need plane update and find the * number of clips that actually are in plane src for fifo allocation. */ - drm_atomic_helper_damage_iter_init(&iter, old_state, state); + drm_atomic_helper_buffer_damage_iter_init(&iter, old_state, state); drm_atomic_for_each_plane_damage(&iter, &clip) num_hits++; From patchwork Thu Nov 9 17:24:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 163527 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b129:0:b0:403:3b70:6f57 with SMTP id q9csp589171vqs; Thu, 9 Nov 2023 09:27:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IFWxhPe3CPeFzbWr+GGhmBrF6qT1eSW/XJagMfZpVHlAkbE+20eK7hqoquyixx8saFj2Tip X-Received: by 2002:a17:902:e882:b0:1cc:6dd4:5955 with SMTP id w2-20020a170902e88200b001cc6dd45955mr7138605plg.19.1699550829669; Thu, 09 Nov 2023 09:27:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699550829; cv=none; d=google.com; s=arc-20160816; b=Ox/hWErSEBvzzPQQ2R2eXHhth2v8i466axybOTu2PBNa/xLGDSE6ibCq0tResIYBg6 UIddcAojgybZnz4jc+ZBYMSaZxOSeJDXz4qhH1wowUSnIxz+FTKAFE7SpiMYVkeuNQ0B d7RhrgrWNJo+RyTTYCVz/UTp3joN8B7MXfF+QpjK41laTQO2RI2fLpcN2UXa5PVYbMtn sR8JRi9DevpmePCZdJQlPDdrd6XpkmqO7bfSDF0dWJP5pSTjtQ8V8NXLzV/NL74SxdXm OruKiSnKxn7Np5S20/4l/nmzO1QHEQvib+HIpjJQFoqPPEDr5Zu5DQqlr5bNfdlBchuY DvpA== 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=I7tI1v3g4YDcTR34UtN17p6cKRPxCtoGaa2HZ2e5M58=; fh=RyjncBur1waUQtiGFovs8Fgd1zLo6dXK2ilpYnEglWI=; b=Dae5mKDO4dp3771IHsIocDzZmX3dy4r1+wa75726Jr9M6PGG4foXdsGNSDfi25KStC dD0QJ0LYqld3qNMSLB3sMfBiqehbSK3i+x/3JvYjSPxqgfWHOPdzhGkXPAHeCOYsiO10 RAjqcFkFvj9ff7TiTHC9b9wjiFmTXuJ1gd3JMy6wb3LqjKDEvk9PEwPL2LzC6LQPDS5s JHZmZyQOy1AV9Pn1RzCHBWjgfhlDK1fE3kw57lorVSjPg0yeHueAmlK0loHchx51BHoV yE6rP6++9iazoCvqiP5/7Hm7mWN3F6wa3h18J5KAVogpURRPpap5SIfRGEf5p3KUBoOG 5M/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KK7Riq2K; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id kw4-20020a170902f90400b001c9e765e151si4737534plb.116.2023.11.09.09.27.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:27:09 -0800 (PST) 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=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KK7Riq2K; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 4883C80FD8AA; Thu, 9 Nov 2023 09:27:07 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344735AbjKIR0R (ORCPT + 31 others); Thu, 9 Nov 2023 12:26:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344669AbjKIR0I (ORCPT ); Thu, 9 Nov 2023 12:26:08 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FAF235AE for ; Thu, 9 Nov 2023 09:25:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1699550719; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=I7tI1v3g4YDcTR34UtN17p6cKRPxCtoGaa2HZ2e5M58=; b=KK7Riq2KYMBru1Rk3duHY1otL91m67JKuA1567kQhFbOohEU/cw2G5TU3F9QyD3hZUeCv1 J5LdspFgMmNXjiwDPL/7emo5TDAHY66iSNtGnj+Fv/MW8j6i4brWbAGWulc6TrdgCnd9nj ANq9gh2+FJeUMAhFxur+TOlDEf30VN4= Received: from mail-lj1-f197.google.com (mail-lj1-f197.google.com [209.85.208.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-696-naX2DB-FN96uVHzC996Idg-1; Thu, 09 Nov 2023 12:25:18 -0500 X-MC-Unique: naX2DB-FN96uVHzC996Idg-1 Received: by mail-lj1-f197.google.com with SMTP id 38308e7fff4ca-2c52cbb64c9so10985231fa.1 for ; Thu, 09 Nov 2023 09:25:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699550716; x=1700155516; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=I7tI1v3g4YDcTR34UtN17p6cKRPxCtoGaa2HZ2e5M58=; b=WC8+Y284HbDHJdWMidukrALyg6TGYPl7pWrGB4MDzrLY1lFLM7m1LNOZuwW17l0YWK 0PJH0UHZbz5Dgt7BOudt4mpULl+koNllZE5wWdcu8p1IEp7JqPgxV03oAzEiSKqIBS24 qDlsjCfMI/eKBlylFtA4jXPQ7wLOFBOA2dDd9/Lhw1DvXoj/ZNqBGJ9MoUkbRtzLJcVs gK5Vxqnjgj/0/Kxj5RQEUch2tAFJsIacYXWiJWIc08R5OA/8onEOx7NsdLYXenHN8YKr z7mvdVFL7/OrXn72FEKxtMFaFirqA9MTO5PNkqQLPXNWgGrMBT842XaoLxnbEZje4EPk 8grQ== X-Gm-Message-State: AOJu0YyXus4m7BCsr2LqdV/Xbaf+RJepcTaOrC1IpZELLKX69mbs55mW lCmwP2VTxx2K0PYn9xqVMYOYT9UNW2zTVTeVxWTDQhbx0KuPkUnbGLU0L5KVwTNrc4/gvn40dJs 7K3pkhx+LdUsCCuuDfN/OoAwha8J7A2ETd1bLiokJ7f53Z4bXCBlUJrE1nSfs9Cn+rHonRmKfat +yDC+iUVk= X-Received: by 2002:ac2:549c:0:b0:500:b2f6:592 with SMTP id t28-20020ac2549c000000b00500b2f60592mr1983268lfk.50.1699550716579; Thu, 09 Nov 2023 09:25:16 -0800 (PST) X-Received: by 2002:ac2:549c:0:b0:500:b2f6:592 with SMTP id t28-20020ac2549c000000b00500b2f60592mr1983244lfk.50.1699550716301; Thu, 09 Nov 2023 09:25:16 -0800 (PST) Received: from localhost (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id n8-20020a5d6608000000b0032da75af3easm119414wru.80.2023.11.09.09.25.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:25:15 -0800 (PST) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Simon Ser , Sima Vetter , Pekka Paalanen , Maxime Ripard , Bilal Elmoussaoui , Erico Nunes , Javier Martinez Canillas , Daniel Vetter , David Airlie , Maarten Lankhorst , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH 5/6] drm/plane: Extend damage tracking kernel-doc Date: Thu, 9 Nov 2023 18:24:39 +0100 Message-ID: <20231109172449.1599262-6-javierm@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com> References: <20231109172449.1599262-1-javierm@redhat.com> MIME-Version: 1.0 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]); Thu, 09 Nov 2023 09:27:07 -0800 (PST) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782108211051213841 X-GMAIL-MSGID: 1782108211051213841 The "Damage Tracking Properties" section in the documentation doesn't have info about the two type of damage handling: frame damage vs buffer damage. Add that to the section, mention the different helpers that should be used by drivers depending on the damage handling type used and refer to sites that have more content about damage types and damage tracking in general. Suggested-by: Simon Ser Signed-off-by: Javier Martinez Canillas Reviewed-by: Simon Ser --- drivers/gpu/drm/drm_damage_helper.c | 10 ++++++---- drivers/gpu/drm/drm_plane.c | 22 +++++++++++++++++++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_damage_helper.c b/drivers/gpu/drm/drm_damage_helper.c index b72062c9d31c..ac9986da7d7c 100644 --- a/drivers/gpu/drm/drm_damage_helper.c +++ b/drivers/gpu/drm/drm_damage_helper.c @@ -367,8 +367,9 @@ static bool __drm_atomic_helper_damage_merged(const struct drm_plane_state *old_ * This function merges any valid plane damage clips into one rectangle and * returns it in @rect. * - * For details see: drm_atomic_helper_damage_iter_init() and - * drm_atomic_helper_damage_iter_next(). + * For details see: drm_atomic_helper_damage_iter_init(), + * drm_atomic_helper_damage_iter_next() and + * `Damage Tracking Properties`_. * * Note that this helper is for drivers that do per-plane uploads and expect * to handle frame damages. Drivers that do per-buffer uploads instead should @@ -400,8 +401,9 @@ EXPORT_SYMBOL(drm_atomic_helper_damage_merged); * full plane update should happen. It also ensure helper iterator will return * &drm_plane_state.src as damage. * - * For details see: drm_atomic_helper_buffer_damage_iter_init() and - * drm_atomic_helper_damage_iter_next(). + * For details see: drm_atomic_helper_buffer_damage_iter_init(), + * drm_atomic_helper_damage_iter_next() and + * `Damage Tracking Properties`_. * * Returns: * True if there is valid buffer damage otherwise false. diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c index 24e7998d1731..f137a99b3435 100644 --- a/drivers/gpu/drm/drm_plane.c +++ b/drivers/gpu/drm/drm_plane.c @@ -1439,9 +1439,25 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, * * Drivers that are interested in damage interface for plane should enable * FB_DAMAGE_CLIPS property by calling drm_plane_enable_fb_damage_clips(). - * Drivers implementing damage can use drm_atomic_helper_damage_iter_init() and - * drm_atomic_helper_damage_iter_next() helper iterator function to get damage - * rectangles clipped to &drm_plane_state.src. + * + * Note that there are two types of damage handling: frame damage and buffer + * damage. The drivers implementing a per-plane or per-CRTC upload target and + * need to handle frame damage can use drm_atomic_helper_damage_iter_init(), + * but drivers implementing a per-buffer upload target and need to handle buffer + * damage should use drm_atomic_helper_buffer_damage_iter_init() helper instead. + * + * Once the iterator has been initialized by the damage helpers mentioned above, + * the drm_atomic_helper_damage_iter_next() helper iterator function can be used + * to get damage rectangles clipped to &drm_plane_state.src. + * + * The type of damage handling implemented depends on the driver's upload target + * but notice that when using swap buffers, the returned damage rectangle is the + * &drm_plane_state.src, since a full plane update should happen. There is no + * buffer age support or similar damage accumulation algorithm implemented yet. + * + * For more information about the two type of damage, see: + * https://registry.khronos.org/EGL/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt + * https://emersion.fr/blog/2019/intro-to-damage-tracking/ */ /** From patchwork Thu Nov 9 17:24:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 163529 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b129:0:b0:403:3b70:6f57 with SMTP id q9csp589294vqs; Thu, 9 Nov 2023 09:27:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IFp8Spn5RerpId3+/43sbpRK6m2YA42pdTmZIr/cnOKtChcq1zsjcBdKS0KYvR8RXIPNEtu X-Received: by 2002:a17:902:74c5:b0:1cc:6dd3:e73c with SMTP id f5-20020a17090274c500b001cc6dd3e73cmr5140009plt.49.1699550842219; Thu, 09 Nov 2023 09:27:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699550842; cv=none; d=google.com; s=arc-20160816; b=LEx/8e1RjWSkdCA8ZqTj0YoJgKPpG//FVVBQDTYQDH7IEtsxpaz01I0CXyYpGX3c+8 HA7drD2B8Tqp3MOcJzbOCm/pFUeok3kFeim4Fo/qhzEQiJO8P7951WQevER4wUM65oBO qu402dR9EVXujSgNIKNlf14XDQvYPZrQfYASWxIDriQWgDMTcFY+s4jNdB5Kq9Mm68h3 RqwZEDaEUZRQuM3tEj9FeLNMTz2TkK6xowt+jYpKG8yUg0bu+LXIHuXAT3a+VcycNtQz 2hJJeIinfs6DtJHRc3kmzVtaVb0TNybm9uFe2kB9O3WVTnY94/S2MfFD0XvbstYlnhSJ NDJA== 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=LQsLMrBO0s8gsbhcurrkAKTlTUKc8bmHZW0Ex5lVbpk=; fh=sLuhEBDRpdA8o4irrTwlOuBLfRcI7JDd2TTXIeVLH04=; b=qe2sqIYlU7xS+086NuK4tf8lpHKhtTM3BrKXkCzyqhS6vIzoKCvSihN7Xj8G7b+zaY Su3t3L1phnegRvKmOPIrZckBryIl2qR9W6JIFPfIIE1H+zA6F0FEpsF1dR4gczGIbmwD tIfhdNDjvPIvNKmG2nVmX7Ei6EvuzkZRcXmHQq+Gr2Ly8h5Y1i9llF+3k2S8efdfSGpZ VhhR0IzdRBFoB1wDOeOtskE+NAt9Aj+/NDxuHhizAhGdMT9IxmmryE3s3Xj9iAF3AefQ 853z/ZGMJbloqow/KBQhJ+f8uICauOYTuJywEPfR9hZaB+ZAIyxabbk7OP3jVZPQmSiq fsgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=DMX+sItO; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id i5-20020a17090332c500b001cc453f5178si5776799plr.439.2023.11.09.09.27.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:27:22 -0800 (PST) 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=pass header.i=@redhat.com header.s=mimecast20190719 header.b=DMX+sItO; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id CA70C8078288; Thu, 9 Nov 2023 09:27:19 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344741AbjKIR0U (ORCPT + 31 others); Thu, 9 Nov 2023 12:26:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344661AbjKIR0H (ORCPT ); Thu, 9 Nov 2023 12:26:07 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5961F35BE for ; Thu, 9 Nov 2023 09:25:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1699550722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LQsLMrBO0s8gsbhcurrkAKTlTUKc8bmHZW0Ex5lVbpk=; b=DMX+sItOYcOs2cnMjOd+jDBrke9M0RGB+HrRhlxbT7+7jJO56EtgSPoQsmTkxZGlTjATOU fEEcfi+Lf9JeWfVgxc7eLo2OClzUH9JDHfpJaL7iX5x7y8EFqUcXMNQVCBVe/XskL9WY+I MfvGhv0DNRtsZZDAukNfsZ49dYijGqs= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-639-KgoYNOBQOmajo8gOq3HdxA-1; Thu, 09 Nov 2023 12:25:21 -0500 X-MC-Unique: KgoYNOBQOmajo8gOq3HdxA-1 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-32f7cfab43eso568415f8f.1 for ; Thu, 09 Nov 2023 09:25:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699550718; x=1700155518; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LQsLMrBO0s8gsbhcurrkAKTlTUKc8bmHZW0Ex5lVbpk=; b=o6uNIIPzwIPdrtwqwzztt9OLKbVZUAkww/dCcQVaZVBSwc+MD582EoaZu8Q8pbqWD9 coaOMiY3grqBtBjEe1wiOLA11TAMxrCHxzTADb/JRRcN2gQ/Z6VUjjNfsUvu/QRfvQjs uUHdFKA1cC57QoztAGEB0s4R6PjE3dRYdlZ8PzH5EmflZTemPqnjS2VUNP+sgIP3UU1o idmz2s2Lb7y8trOUTCvxIgrrTNEu6viMLKE4gkqRljsAqBEEV+U3UGz/8YxyVHss3NVN bUcow1LNezdom88yDzGmSIZ/2F2cv5OrTgjJ7nAif18EDyd9wQgbplqBPjfs7IRz0pb2 H3uQ== X-Gm-Message-State: AOJu0YyelwCDyUzVesQmpLh7vraUE8LIXHb+tXyX8Dgbomp99AevqBUu pg5QO7Iz6A0YvR0Rz/kvAyxRS+/XvAsk4gT8D1Vvc+Dj+0TprjiA5ekJNHRIOYjRWTobjJCC1IM 6BbyWXHO9enx6iCk4Q3SOXm6VhDcuGp7O65rYHcFdz5r0PPQqA1u/rUh95IYeIZixfelT5aCKSi biPPcf+nw= X-Received: by 2002:a05:6000:1cb:b0:32f:7963:8493 with SMTP id t11-20020a05600001cb00b0032f79638493mr4461568wrx.37.1699550718246; Thu, 09 Nov 2023 09:25:18 -0800 (PST) X-Received: by 2002:a05:6000:1cb:b0:32f:7963:8493 with SMTP id t11-20020a05600001cb00b0032f79638493mr4461536wrx.37.1699550717778; Thu, 09 Nov 2023 09:25:17 -0800 (PST) Received: from localhost (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id k8-20020a5d6e88000000b0032db430fb9bsm121425wrz.68.2023.11.09.09.25.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 09:25:17 -0800 (PST) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Simon Ser , Sima Vetter , Pekka Paalanen , Maxime Ripard , Bilal Elmoussaoui , Erico Nunes , Javier Martinez Canillas , Daniel Vetter , David Airlie , Jonathan Corbet , Maarten Lankhorst , Thomas Zimmermann , dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org Subject: [PATCH 6/6] drm/todo: Add entry about implementing buffer age for damage tracking Date: Thu, 9 Nov 2023 18:24:40 +0100 Message-ID: <20231109172449.1599262-7-javierm@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com> References: <20231109172449.1599262-1-javierm@redhat.com> MIME-Version: 1.0 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]); Thu, 09 Nov 2023 09:27:19 -0800 (PST) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782108223815943372 X-GMAIL-MSGID: 1782108223815943372 Currently, only damage tracking for frame damage is supported. If a driver needs to do buffer damage (e.g: the framebuffer attached to plane's state has changed since the last page-flip), the damage helpers just fallback to a full plane update. Add en entry in the TODO about implementing buffer age or any other damage accumulation algorithm for buffer damage handling. Suggested-by: Simon Ser Signed-off-by: Javier Martinez Canillas Reviewed-by: Simon Ser --- Documentation/gpu/todo.rst | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index 03fe5d1247be..adaa154210a0 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -765,6 +765,26 @@ Contact: Hans de Goede Level: Advanced +Buffer age or other damage accumulation algorithm for buffer damage handling +============================================================================ + +Drivers that do per-buffer uploads, need a buffer damage handling (rather than +frame damage like drivers that do per-plane or per-CRTC uploads), but there is +no support to get the buffer age or any other damage accumulation algorithm. + +For this reason, the damage helpers just fallback to a full plane update if the +framebuffer attached to a plane has changed since the last page-flip. + +This should be improved to get damage tracking properly working on drivers that +do per-buffer uploads. + +More information about damage tracking and references to learning materials in +`Damage Tracking Properties `_ + +Contact: Javier Martinez Canillas + +Level: Advanced + Outside DRM ===========