[PATCH spice-server] red-parse-qxl: Avoid invalid flag usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 server/red-parse-qxl.c | 4 ++++
 1 file changed, 4 insertions(+)

The only concern about this patch is that the flag could be reset
from all calls to red_get_copy_ptr/red_get_blend_ptr

diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
index 4a45c0f7..0bf022d5 100644
--- a/server/red-parse-qxl.c
+++ b/server/red-parse-qxl.c
@@ -1051,6 +1051,10 @@ static bool red_get_native_drawable(RedMemSlotInfo *slots, int group_id,
     case QXL_DRAW_BLEND:
         return red_get_blend_ptr(slots, group_id, &red->u.blend, &qxl->u.blend, flags);
     case QXL_DRAW_COPY:
+        /* there's no sense to have this true, this will just waste CPU and reduce optimizations
+         * for this command. Due to some bugs however some driver set self_bitmap field for this
+         * command so reset it. */
+        red->self_bitmap = false;
         return red_get_copy_ptr(slots, group_id, &red->u.copy, &qxl->u.copy, flags);
     case QXL_COPY_BITS:
         red_get_point_ptr(&red->u.copy_bits.src_pos, &qxl->u.copy_bits.src_pos);
-- 
2.17.1

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]