All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Lieven <pl@kamp.de>
To: Serge Hallyn <serge.hallyn@ubuntu.com>
Cc: Doug Smythies <dsmythies@telus.net>,
	Peter Lieven <lieven-lists@dlhnet.de>,
	Gerd Hoffmann <kraxel@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] vnc regression with -vga vmware
Date: Mon, 17 Mar 2014 18:36:40 +0100	[thread overview]
Message-ID: <532732A8.9080207@kamp.de> (raw)
In-Reply-To: <20140317173519.GA26776@sergelap>

On 17.03.2014 18:35, Serge Hallyn wrote:
> Quoting Peter Lieven (pl@kamp.de):
>> On 17.03.2014 16:19, Serge Hallyn wrote:
>>> Quoting Peter Lieven (lieven-lists@dlhnet.de):
>>>> I found 2 issues:
>>>>
>>>> - with vmware VGA the server surface and the client desktop size are out of sync for some time
>>>> at a resolution change. the server surface gets updates for x coordinates that are out of bound
>>>> for the client.
>>>> - the max width of the client (2360) is not dividable by 16 (VNC_DIRTY_PIXELS_PER_BIT).
>>>>
>>>> I will try to fix this in ui/vnc but we should definetly look for the root cause.
>>> Thanks, Peter!
>>>
>>> -serge
>>
>> The vmware vga driver seems to do some nasty things.
>> I receive the msg like this (independent of ui/vnc):
>> vmsvga_update_rect: update x was < 0 (-65)
>>
>> Can you try the following patch:
> Indeed, with this patch it seems quite stable, thanks.
Thanks for the feedback. I will send a patch to the list
shortly.

Peter
>
> -serge
>
>> diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
>> index bd2c108..6ae3348 100644
>> --- a/hw/display/vmware_vga.c
>> +++ b/hw/display/vmware_vga.c
>> @@ -25,6 +25,7 @@
>>   #include "hw/loader.h"
>>   #include "trace.h"
>>   #include "ui/console.h"
>> +#include "ui/vnc.h"
>>   #include "hw/pci/pci.h"
>>
>>   #undef VERBOSE
>> @@ -218,7 +219,7 @@ enum {
>>
>>   /* These values can probably be changed arbitrarily.  */
>>   #define SVGA_SCRATCH_SIZE               0x8000
>> -#define SVGA_MAX_WIDTH                  2360
>> +#define SVGA_MAX_WIDTH                  ROUND_UP(2360, VNC_DIRTY_PIXELS_PER_BIT)
>>   #define SVGA_MAX_HEIGHT                 1770
>>
>>   #ifdef VERBOSE
>> diff --git a/ui/vnc.c b/ui/vnc.c
>> index 9c84b3e..5925774 100644
>> --- a/ui/vnc.c
>> +++ b/ui/vnc.c
>> @@ -888,7 +888,7 @@ static int vnc_update_client(VncState *vs, int has_dirty, bool sync)
>>           VncDisplay *vd = vs->vd;
>>           VncJob *job;
>>           int y;
>> -        int height;
>> +        int height, width;
>>           int n = 0;
>>
>>           if (vs->output.offset && !vs->audio_cap && !vs->force_update)
>> @@ -907,6 +907,7 @@ static int vnc_update_client(VncState *vs, int has_dirty, bool sync)
>>           job = vnc_job_new(vs);
>>
>>           height = MIN(pixman_image_get_height(vd->server), vs->client_height);
>> +        width = MIN(pixman_image_get_width(vd->server), vs->client_width);
>>
>>           y = 0;
>>           for (;;) {
>> @@ -925,8 +926,11 @@ static int vnc_update_client(VncState *vs, int has_dirty, bool sync)
>>                                       VNC_DIRTY_BPL(vs), x);
>>               bitmap_clear(vs->dirty[y], x, x2 - x);
>>               h = find_and_clear_dirty_height(vs, y, x, x2, height);
>> -            n += vnc_job_add_rect(job, x * VNC_DIRTY_PIXELS_PER_BIT, y,
>> -                                  (x2 - x) * VNC_DIRTY_PIXELS_PER_BIT, h);
>> +            x2 = MIN(x2, width / VNC_DIRTY_PIXELS_PER_BIT);
>> +            if (x2 > x) {
>> +                n += vnc_job_add_rect(job, x * VNC_DIRTY_PIXELS_PER_BIT, y,
>> +                                      (x2 - x) * VNC_DIRTY_PIXELS_PER_BIT, h);
>> +            }
>>           }
>>
>>           vnc_job_push(job);
>>
>> Peter
>>
>>
>>

      reply	other threads:[~2014-03-17 17:36 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-14 16:06 [Qemu-devel] vnc regression with -vga vmware Serge Hallyn
2014-03-17 13:44 ` Gerd Hoffmann
2014-03-17 13:49   ` Peter Lieven
2014-03-17 14:01   ` Peter Lieven
2014-03-17 14:10     ` Serge Hallyn
2014-03-17 15:01       ` Peter Lieven
2014-03-17 15:19         ` Serge Hallyn
2014-03-17 15:29           ` Peter Lieven
2014-03-17 17:35             ` Serge Hallyn
2014-03-17 17:36               ` Peter Lieven [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=532732A8.9080207@kamp.de \
    --to=pl@kamp.de \
    --cc=dsmythies@telus.net \
    --cc=kraxel@redhat.com \
    --cc=lieven-lists@dlhnet.de \
    --cc=qemu-devel@nongnu.org \
    --cc=serge.hallyn@ubuntu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.