From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 221654279E9 for ; Wed, 27 May 2026 14:51:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.130 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779893485; cv=none; b=pYX+H64zdCR+jIuIyyGnC8jwBr4aBHfnvM97IQXJWhzaC0i0CaB0NRIuUElObe8Si21tIEtET0yGRIrTL8rFTb72QVA08Qy/ixBXqhQJhQCPDE/VUJlrDIcFtntENguZE5Z+x+EhED47YcYDsu1AzuVnpg0diqVAd9CnECvTSkc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779893485; c=relaxed/simple; bh=k827t0Gpl5UIxT0WX7sDfvGLGH6+qLHxIr9aBJyULbw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=pYgFixndDUomVDLRcz4qeX2PFih/54pH5a4PBGFJ+ZqHi7swpL+wd2B7YfYjbowPhXH1oliguZhWxN9+HtKeqNeBSpiTjTSclPeKYFfpWix13E9LsbJWOw0wWj6kV5CdZ4VzitHd+gzHt/2DUPqCkkpn1aWt3xnCKt5ZKqwm9F8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=DZ7FnH8A; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=8PesZOzc; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=DZ7FnH8A; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=8PesZOzc; arc=none smtp.client-ip=195.135.223.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="DZ7FnH8A"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="8PesZOzc"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="DZ7FnH8A"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="8PesZOzc" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 8D88A6B168; Wed, 27 May 2026 14:51:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1779893479; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=3m/5O51/6gJpJUZlgUTVM23u58TzBQcvVOdnYvwVijI=; b=DZ7FnH8ALizYFlWsPDtGw1BbG30NFsDogiD7MDWhCf7nVJE2UgYrh6alRlkFh6H+7ND1kO 6qfwUq2eOH7Yx0cpzq6XXPzV/MgTcp/ejg1l605BpPxtxovA8QiAJNfGIhc8jSTKpm4lzC rSc2bdGJe6PIRTeeLQ9nAeTFxgm2aa0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1779893479; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=3m/5O51/6gJpJUZlgUTVM23u58TzBQcvVOdnYvwVijI=; b=8PesZOzcfDnFpPOQpRyzeLQI7qcUcreVJGAgzCjTwQTV8ZVSzWz/vjeuSn0/Td/XhUy1AJ 1ESvfZnabZYNjSBQ== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1779893479; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=3m/5O51/6gJpJUZlgUTVM23u58TzBQcvVOdnYvwVijI=; b=DZ7FnH8ALizYFlWsPDtGw1BbG30NFsDogiD7MDWhCf7nVJE2UgYrh6alRlkFh6H+7ND1kO 6qfwUq2eOH7Yx0cpzq6XXPzV/MgTcp/ejg1l605BpPxtxovA8QiAJNfGIhc8jSTKpm4lzC rSc2bdGJe6PIRTeeLQ9nAeTFxgm2aa0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1779893479; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=3m/5O51/6gJpJUZlgUTVM23u58TzBQcvVOdnYvwVijI=; b=8PesZOzcfDnFpPOQpRyzeLQI7qcUcreVJGAgzCjTwQTV8ZVSzWz/vjeuSn0/Td/XhUy1AJ 1ESvfZnabZYNjSBQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0E2FC5A8A8; Wed, 27 May 2026 14:51:19 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id aW4MAucEF2qsegAAD6G6ig (envelope-from ); Wed, 27 May 2026 14:51:19 +0000 From: Thomas Zimmermann To: mripard@kernel.org, maarten.lankhorst@linux.intel.com, airlied@redhat.com, airlied@gmail.com, simona@ffwll.ch, admin@kodeit.net, gargaditya08@proton.me, paul@crapouillou.net, jani.nikula@linux.intel.com, mhklinux@outlook.com, zack.rusin@broadcom.com, bcm-kernel-feedback-list@broadcom.com Cc: dri-devel@lists.freedesktop.org, linux-hyperv@vger.kernel.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-mips@vger.kernel.org, virtualization@lists.linux.dev, Thomas Zimmermann Subject: [PATCH v3 00/10] Date: Wed, 27 May 2026 16:46:19 +0200 Message-ID: <20260527145113.241595-1-tzimmermann@suse.de> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-hyperv@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Level: X-Spam-Score: -2.30 X-Spam-Flag: NO X-Spamd-Result: default: False [-2.30 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; SUBJECT_ENDS_SPACES(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-0.993]; MIME_GOOD(-0.10)[text/plain]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.de:mid]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_TWELVE(0.00)[19]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; FREEMAIL_TO(0.00)[kernel.org,linux.intel.com,redhat.com,gmail.com,ffwll.ch,kodeit.net,proton.me,crapouillou.net,outlook.com,broadcom.com]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCVD_TLS_ALL(0.00)[]; TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,outlook.com] DRM clients can supply information on framebuffer areas to update as part of each page flip, called damage clipping rectangles. But DRM's processing of this information is inconsistent and prone to errors. - There are multiple fields and tests that decide if damage clips should be taken or ignored. - Sometimes damage clips are removed behind the back of the DRM client. - Atomic helpers evaluate damage clipping in the middle of the atomic check: after connectors and encoders, but before planes and CRTCs. Hence pipeline stages have an inconsistent view. - Which leads to drivers (ingenic) doing a re-evaluation if necessary. - Tests of plane source coordinates only happen during commits. At this point, the driver should already know if damage clips are to be taken or not. Because of this, some drivers (appletbdrm) might operate on incorrect damage information for their internal workings. This also leads to excessive use of the old plane state. Therefore go through DRM helpers and drivers and fix the logic. - Run all of the atomic checks with the damage information supplied by DRM clients. Afterwards evaluate plane and CRTC states on whether to take or ignore damage clips. Do all related tests in a single atomic helper. - Do not discard damage clips. Set ignore_damage_clips in struct drm_plane_state instead. This includes changes to plane source-coordinates. The damage iterator now only has to look at this flag to detect if it should use the damage clips. - Go over drivers and fix the damage handling in the plane's atomic_update helpers. Most drivers no longer need the old plane state in their update. - The appletbdrm driver requires a fix in how it uses damage information. Ingenic and vmwgfx can be simplified. These changes improve the drivers' code organization. - Kunit tests require some changes. Drop some obsolete tests and add a new one for ignore_damage_flags. Tested with bochs, mgag200, Kunit tests. v3: - fix error path in appletbdrm v2: - rebase on latest upstream Thomas Zimmermann (10): drm/damage-helper: Do not alter damage clips on modeset, but ignore them drm/atomic-helpers: Evaluate plane damage after atomic_check drm/ingenic: Remove calls to drm_atomic_helper_check_plane_damage() drm/damage-helper: Test src coord in drm_atomic_helper_check_plane_damage() drm/appletbdrm: Allocate request/response buffers in begin_fb_access drm/damage-helper: Remove old state from drm_atomic_helper_damage_iter_init() drm/damage-helper: Remove old state from drm_atomic_helper_damage_merged() drm/atomic_helper: Do not evaluate plane damage before atomic_check drm/damage-helper: Rename state parameters in damage helpers drm/vmwgfx: Remove unused field struct vmwgfx_du_update_plane.old_state drivers/gpu/drm/ast/ast_cursor.c | 3 +- drivers/gpu/drm/ast/ast_mode.c | 2 +- drivers/gpu/drm/drm_atomic_helper.c | 6 +- drivers/gpu/drm/drm_atomic_state_helper.c | 1 + drivers/gpu/drm/drm_damage_helper.c | 44 ++-- drivers/gpu/drm/drm_fb_dma_helper.c | 2 +- drivers/gpu/drm/drm_mipi_dbi.c | 3 +- drivers/gpu/drm/gud/gud_pipe.c | 3 +- drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 3 +- drivers/gpu/drm/i915/display/intel_plane.c | 11 +- drivers/gpu/drm/i915/display/intel_psr.c | 3 +- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 3 - drivers/gpu/drm/ingenic/ingenic-ipu.c | 8 +- drivers/gpu/drm/mgag200/mgag200_mode.c | 3 +- drivers/gpu/drm/sitronix/st7571.c | 3 +- drivers/gpu/drm/sitronix/st7586.c | 3 +- drivers/gpu/drm/sitronix/st7920.c | 3 +- drivers/gpu/drm/solomon/ssd130x.c | 9 +- drivers/gpu/drm/sysfb/drm_sysfb_modeset.c | 3 +- .../gpu/drm/tests/drm_damage_helper_test.c | 200 +++--------------- drivers/gpu/drm/tiny/appletbdrm.c | 59 +++--- drivers/gpu/drm/tiny/bochs.c | 3 +- drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +- drivers/gpu/drm/tiny/gm12u320.c | 2 +- drivers/gpu/drm/tiny/ili9225.c | 3 +- drivers/gpu/drm/tiny/repaper.c | 2 +- drivers/gpu/drm/tiny/sharp-memory.c | 3 +- drivers/gpu/drm/udl/udl_modeset.c | 3 +- drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 5 +- drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 2 - drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 12 +- drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 15 +- include/drm/drm_damage_helper.h | 9 +- 34 files changed, 123 insertions(+), 315 deletions(-) base-commit: 5fb5a9a63cf5ece68e0eeb6fa397da27712bccf0 -- 2.54.0