red-parse-qxl: Avoid invalid flag usage
self_bitmap flag is used for some complex drawing not possible by QXL_DRAW_COPY commands. Having this flag set causes spice-server do draw part of the screen, copy that part on new allocated image and reduce network optimisations with no visual changes. Some drivers (like Windows 10 DOD) set this flag by mistake for this command so reset it. More details follow. The self_bitmap flag is used for some drawing command requiring to mix the frame buffer with some other image. For this specific QXL_DRAW_COPY command self_bitmap is used by spice-server code during cachine/sending (the reason for the cache is to cache images sent to client so the relationship between the two parts of the code). However the self_bitmap_image (an image created in spice-server if this flags is set) is used only if src_bitmap of SpiceCopy structure (the structure used to store the QXL_DRAW_COPY command inside spice-server) is NULL. But in red_get_copy_ptr (red-parse-qxl.c, the function that parse the QXL_DRAW_COPY command form the QXL device) not having a src_bitmap is considered an error so the self_bitmap_image won't be used. Why this flag affects network performance? When spice-server see this flag it update the frame buffer according to the pending commands (commands to be sent or still to be drawn on frame buffer). spice-server maintain a tree of commands used to reduce rendering and command to send. More or less if a command is covering other commands (for instance filling the entire screen with a single color) the pending commands can be removed from the queue and not sent to the client. However when an update of the frame buffer is requested spice-server update the frame buffer removing the commands from the tree but not from the client queue. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
parent
dde5fd04
Loading
Loading
Pipeline
#1935
passed
with stage
in
19 minutes and 2 seconds
Loading
Please register or sign in to comment