From: Thomas Zimmermann <tzimmermann@suse.de>
To: daniel@ffwll.ch, airlied@linux.ie, mripard@kernel.org,
maarten.lankhorst@linux.intel.com, noralf@tronnes.org,
drawat.floss@gmail.com, airlied@redhat.com, kraxel@redhat.com,
david@lechnology.com, sam@ravnborg.org, javierm@redhat.com,
kernel@amanoeldawod.com, dirty.ice.hu@gmail.com,
michael+lkml@stapelberg.ch, aros@gmx.com,
joshua@stroblindustries.com, arnd@arndb.de
Cc: dri-devel@lists.freedesktop.org, linux-hyperv@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 0/9] drm/simpledrm: Enable damage clips and virtual screens
Date: Wed, 10 Nov 2021 11:36:53 +0100 [thread overview]
Message-ID: <20211110103702.374-1-tzimmermann@suse.de> (raw)
Enable FB_DAMAGE_CLIPS with simpledrm for improved performance and/or
less overhead. With this in place, add support for virtual screens
(i.e., framebuffers that are larger than the display resolution). This
also enables fbdev panning and page flipping.
After the discussion and bug fixing wrt to fbdev overallocation, I
decided to add full support for this to simpledrm. Patches #1 to #5
change the format-helper functions accordingly. Destination buffers
are now clipped by the caller and all functions support a similar
feature set. This has some fallout in various drivers.
Patch #6 change fbdev emulation to support overallocation with
shadow buffers, even if the hardware buffer would be too small.
Patch #7 and #8 update simpledrm to enable damage clipping and virtual
screen sizes. Both features go hand in hand, sort of. For shadow-
buffered planes, the DRM framebuffer lives in system memory. So the
maximum size of the virtual screen is somewhat arbitrary. We add two
constants for resonable maximum width and height of 4096 each.
Patch #9 adds documentation and a TODO item.
Tested with simpledrm. I also ran the recently posted fbdev panning
tests to make sure that the fbdev overallocation works correctly. [1]
v3:
* remove unnecessary clipping in simpledrm (Noralf)
* fix drm_dev_enter() usage (Noralf)
* style changes (Noralf)
v2:
* add missing docs (Sam)
* return unsigned int from drm_fb_clip_offset() (Sam, Noralf)
* fix OOB access in drm_fb_xrgb8888_to_gray8() (Noralf)
[1] https://lists.freedesktop.org/archives/igt-dev/2021-October/036642.html
Thomas Zimmermann (9):
drm/format-helper: Export drm_fb_clip_offset()
drm/format-helper: Rework format-helper memcpy functions
drm/format-helper: Add destination-buffer pitch to drm_fb_swab()
drm/format-helper: Rework format-helper conversion functions
drm/format-helper: Streamline blit-helper interface
drm/fb-helper: Allocate shadow buffer of surface height
drm/simpledrm: Enable FB_DAMAGE_CLIPS property
drm/simpledrm: Support virtual screen sizes
drm: Clarify semantics of struct
drm_mode_config.{min,max}_{width,height}
Documentation/gpu/todo.rst | 15 ++
drivers/gpu/drm/drm_fb_helper.c | 2 +-
drivers/gpu/drm/drm_format_helper.c | 247 ++++++++++----------
drivers/gpu/drm/drm_mipi_dbi.c | 6 +-
drivers/gpu/drm/gud/gud_pipe.c | 14 +-
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 5 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 24 +-
drivers/gpu/drm/tiny/repaper.c | 2 +-
drivers/gpu/drm/tiny/simpledrm.c | 37 ++-
drivers/gpu/drm/tiny/st7586.c | 2 +-
include/drm/drm_format_helper.h | 58 ++---
include/drm/drm_gem_atomic_helper.h | 18 ++
include/drm/drm_mode_config.h | 13 ++
14 files changed, 260 insertions(+), 187 deletions(-)
base-commit: 215295e7b0a3deb2015c6d6b343b319e4f6d9a1d
prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
--
2.33.1
next reply other threads:[~2021-11-10 10:37 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-10 10:36 Thomas Zimmermann [this message]
2021-11-10 10:36 ` [PATCH v3 1/9] drm/format-helper: Export drm_fb_clip_offset() Thomas Zimmermann
2021-11-10 10:36 ` [PATCH v3 2/9] drm/format-helper: Rework format-helper memcpy functions Thomas Zimmermann
2021-11-10 10:36 ` [PATCH v3 3/9] drm/format-helper: Add destination-buffer pitch to drm_fb_swab() Thomas Zimmermann
2021-11-10 10:36 ` [PATCH v3 4/9] drm/format-helper: Rework format-helper conversion functions Thomas Zimmermann
2021-11-10 10:36 ` [PATCH v3 5/9] drm/format-helper: Streamline blit-helper interface Thomas Zimmermann
2021-11-10 10:36 ` [PATCH v3 6/9] drm/fb-helper: Allocate shadow buffer of surface height Thomas Zimmermann
2021-11-10 10:37 ` [PATCH v3 7/9] drm/simpledrm: Enable FB_DAMAGE_CLIPS property Thomas Zimmermann
2021-11-10 12:34 ` Noralf Trønnes
2021-11-10 12:48 ` Thomas Zimmermann
2021-11-10 10:37 ` [PATCH v3 8/9] drm/simpledrm: Support virtual screen sizes Thomas Zimmermann
2021-11-10 10:37 ` [PATCH v3 9/9] drm: Clarify semantics of struct drm_mode_config.{min,max}_{width,height} Thomas Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211110103702.374-1-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@linux.ie \
--cc=airlied@redhat.com \
--cc=arnd@arndb.de \
--cc=aros@gmx.com \
--cc=daniel@ffwll.ch \
--cc=david@lechnology.com \
--cc=dirty.ice.hu@gmail.com \
--cc=drawat.floss@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=joshua@stroblindustries.com \
--cc=kernel@amanoeldawod.com \
--cc=kraxel@redhat.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=michael+lkml@stapelberg.ch \
--cc=mripard@kernel.org \
--cc=noralf@tronnes.org \
--cc=sam@ravnborg.org \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).