]> asedeno.scripts.mit.edu Git - linux.git/commit
qxl: alloc & use shadow for dumb buffers
authorGerd Hoffmann <kraxel@redhat.com>
Thu, 19 Oct 2017 06:21:50 +0000 (08:21 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 23 Oct 2017 06:23:11 +0000 (08:23 +0200)
commit62676d10b483a2ff6e8b08c5e7c7d63a831343f5
tree303a852f58fe70dd7e1c2b9672b16240eda8110d
parent56cbcb6c41932b19ef0d838f1ff25a662a2e403d
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
drivers/gpu/drm/qxl/qxl_cmd.c
drivers/gpu/drm/qxl/qxl_display.c
drivers/gpu/drm/qxl/qxl_drv.h
drivers/gpu/drm/qxl/qxl_dumb.c