linux_dsm_epyc7002/drivers/gpu/drm/qxl
Gerd Hoffmann 90adda2ce8 drm/qxl: cover all crtcs in shadow bo.
The qxl device supports only a single active framebuffer ("primary
surface" in spice terminology).  In multihead configurations are handled
by defining rectangles within the primary surface for each head/crtc.

Userspace which uses the qxl ioctl interface (xorg qxl driver) is aware
of this limitation and will setup framebuffers and crtcs accordingly.

Userspace which uses dumb framebuffers (xorg modesetting driver,
wayland) is not aware of this limitation and tries to use two
framebuffers (one for each crtc) instead.

The qxl kms driver already has the dumb bo separated from the primary
surface, by using a (shared) shadow bo as primary surface.  This is
needed to support pageflips without having to re-create the primary
surface.  The qxl driver will blit from the dumb bo to the shadow bo
instead.

So we can extend the shadow logic:  Maintain a global shadow bo (aka
primary surface), make it big enough that dumb bo's for all crtcs fit in
side-by-side.  Adjust the pageflip blits to place the heads next to each
other in the shadow.

With this patch in place multihead qxl works with wayland.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Noralf Trønnes <noralf@tronnes.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-15-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
..
Kconfig drm: fix compilations issues introduced by "drm: allow to use mmuless SoC" 2017-01-09 11:30:30 +01:00
Makefile drm/qxl: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:36:17 +02:00
qxl_cmd.c drm/qxl: use shadow bo directly 2019-01-28 14:24:53 +01:00
qxl_debugfs.c drm/qxl: Use 'unsigned int' instead of 'usigned' 2018-10-30 07:20:00 +01:00
qxl_dev.h drm/qxl: Remove exceding whiteline 2018-10-30 07:19:59 +01:00
qxl_display.c drm/qxl: cover all crtcs in shadow bo. 2019-01-28 14:24:53 +01:00
qxl_draw.c drm/qxl: cover all crtcs in shadow bo. 2019-01-28 14:24:53 +01:00
qxl_drv.c drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
qxl_drv.h drm/qxl: cover all crtcs in shadow bo. 2019-01-28 14:24:53 +01:00
qxl_dumb.c drm/qxl: use QXL_GEM_DOMAIN_SURFACE for dumb gem objects 2019-01-28 14:24:53 +01:00
qxl_fb.c drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
qxl_gem.c drm/qxl: Replace ttm_bo_unref with ttm_bo_put 2018-08-30 09:41:01 +02:00
qxl_image.c drm/qxl: Use 'unsigned int' instead of 'usigned' 2018-10-30 07:20:00 +01:00
qxl_ioctl.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
qxl_irq.c qxl: remove qxl_io_log() 2018-04-27 08:58:04 +02:00
qxl_kms.c drm/qxl: use separate offset spaces for the two slots / ttm memory types. 2019-01-28 14:24:52 +01:00
qxl_object.c drm/qxl: allow both PRIV and VRAM placement for QXL_GEM_DOMAIN_SURFACE 2019-01-28 14:24:52 +01:00
qxl_object.h qxl: Remove unused qxl_bo_pin arguments 2018-11-21 09:12:45 +01:00
qxl_prime.c drm/qxl: Remove exceding whiteline 2018-10-30 07:19:59 +01:00
qxl_release.c Merge branch 'drm-next-4.21' of git://people.freedesktop.org/~agd5f/linux into drm-next 2018-12-13 10:06:34 +10:00
qxl_ttm.c drm/qxl: use separate offset spaces for the two slots / ttm memory types. 2019-01-28 14:24:52 +01:00