summary refs log tree commit diff stats
path: root/hw/display/sm501.c
diff options
context:
space:
mode:
authorBALATON Zoltan <balaton@eik.bme.hu>2020-06-20 22:56:28 +0200
committerGerd Hoffmann <kraxel@redhat.com>2020-06-30 22:46:28 +0200
commit1cb62e3666b48ac4c6a22340165e21439919908f (patch)
tree51d3b67b84f736d55ed402463512647063231a42 /hw/display/sm501.c
parent4decaad9d295c8598bbcba09c40d3fd4a115f1e8 (diff)
downloadfocaccia-qemu-1cb62e3666b48ac4c6a22340165e21439919908f.tar.gz
focaccia-qemu-1cb62e3666b48ac4c6a22340165e21439919908f.zip
sm501: Ignore no-op blits
Some guests seem to try source copy blits with same source and dest
which are no-op so avoid calling pixman for these.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: a2a8214dd37344dfb65f1c343ace4cff2e94f3bb.1592686588.git.balaton@eik.bme.hu
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/display/sm501.c')
-rw-r--r--hw/display/sm501.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 5d2e019575..ad5a62bfab 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -788,6 +788,11 @@ static void sm501_2d_operation(SM501State *s)
                               (rop2_source_is_pattern ?
                                   " with pattern source" : ""));
             }
+            /* Ignore no-op blits, some guests seem to do this */
+            if (src_base == dst_base && src_pitch == dst_pitch &&
+                src_x == dst_x && src_y == dst_y) {
+                break;
+            }
             /* Check for overlaps, this could be made more exact */
             uint32_t sb, se, db, de;
             sb = src_base + src_x + src_y * (width + src_pitch);