linux-stable/drivers/gpu/drm/qxl
Gerd Hoffmann 62676d10b4 qxl: alloc & use shadow for dumb buffers
This patch changes the way the primary surface is used for dumb
framebuffers.  Instead of configuring the bo itself as primary surface
a shadow bo is created and used instead.  Framebuffers can share the
shadow bo in case they have the same format and resolution.

On atomic plane updates we don't have to update the primary surface in
case we pageflip from one framebuffer to another framebuffer which
shares the same shadow.  This in turn avoids the flicker caused by the
primary-destroy + primary-create cycle, which is very annonying when
running wayland on qxl.

The qxl driver never actually writes to the shadow bo.  It sends qxl
blit commands which update it though, and the spice server might
actually execute them (and thereby write to the shadow) in case the
local rendering is kicked for some reason.  This happens for example in
case qemu is asked to write out a dump of the guest display (screendump
monitor command).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20171019062150.28090-3-kraxel@redhat.com
2017-10-23 08:23:11 +02: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 qxl: alloc & use shadow for dumb buffers 2017-10-23 08:23:11 +02:00
qxl_debugfs.c drm/qxl: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:36:17 +02:00
qxl_dev.h
qxl_display.c qxl: alloc & use shadow for dumb buffers 2017-10-23 08:23:11 +02:00
qxl_draw.c drm: Nuke fb->bits_per_pixel 2016-12-15 14:55:34 +02:00
qxl_drv.c drm/qxl: Use the drm_driver.dumb_destroy default 2017-08-16 20:15:38 +02:00
qxl_drv.h qxl: alloc & use shadow for dumb buffers 2017-10-23 08:23:11 +02:00
qxl_dumb.c qxl: alloc & use shadow for dumb buffers 2017-10-23 08:23:11 +02:00
qxl_fb.c drm/qxl: replace QXL_INFO with DRM_DEBUG_DRIVER 2017-10-23 08:22:56 +02:00
qxl_gem.c drm/qxl: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:36:17 +02:00
qxl_image.c
qxl_ioctl.c drm/qxl: fix __user annotations 2017-06-23 10:06:31 +02:00
qxl_irq.c drm: qxl: Embed drm_device into driver structure 2017-02-02 10:02:37 +01:00
qxl_kms.c drm/qxl: Remove qxl_debugfs_remove_files() 2017-03-09 09:01:00 +01:00
qxl_object.c drm/qxl: declare a bunch of functions as static 2017-06-23 10:06:38 +02:00
qxl_object.h drm: qxl: Drop duplicated device pointer attribute 2017-02-02 10:02:34 +01:00
qxl_prime.c drm/qxl: fix erroneous return value 2016-02-17 15:39:35 +10:00
qxl_release.c drm/qxl: replace QXL_INFO with DRM_DEBUG_DRIVER 2017-10-23 08:22:56 +02:00
qxl_ttm.c drm/qxl: replace QXL_INFO with DRM_DEBUG_DRIVER 2017-10-23 08:22:56 +02:00