All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sven Schnelle <svens@stackframe.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: Helge Deller <deller@gmx.de>, Gerd Hoffmann <kraxel@redhat.com>,
	qemu-devel@nongnu.org, Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH 1/5] hw/display/artist: Move trace event to draw_line()
Date: Sat, 15 Feb 2020 10:12:40 +0100	[thread overview]
Message-ID: <20200215091240.GD18657@t470p.stackframe.org> (raw)
In-Reply-To: <20200214001303.12873-2-f4bug@amsat.org>

On Fri, Feb 14, 2020 at 01:12:58AM +0100, Philippe Mathieu-Daudé wrote:
> Instead of emitting the trace event before each call to
> draw_line(), call it once at draw_line() entrance.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  hw/display/artist.c | 6 +-----
>  1 file changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/hw/display/artist.c b/hw/display/artist.c
> index 65be9e3554..abacb0e27d 100644
> --- a/hw/display/artist.c
> +++ b/hw/display/artist.c
> @@ -557,90 +557,91 @@ static void fill_window(ARTISTState *s, int startx, int starty,
>  static void draw_line(ARTISTState *s, int x1, int y1, int x2, int y2,
>                        bool update_start, int skip_pix, int max_pix)
>  {
>      struct vram_buffer *buf;
>      uint8_t color = artist_get_color(s);
>      int dx, dy, t, e, x, y, incy, diago, horiz;
>      bool c1;
>      uint8_t *p;
>  
> +    trace_artist_draw_line(x1, y1, x2, y2);
>  
>      if (update_start) {
>          s->vram_start = (x2 << 16) | y2;
>      }
>  
>      buf = &s->vram_buffer[ARTIST_BUFFER_AP];
>  
>      c1 = false;
>      incy = 1;
>  
>      if (x2 > x1) {
>          dx = x2 - x1;
>      } else {
>          dx = x1 - x2;
>      }
>      if (y2 > y1) {
>          dy = y2 - y1;
>      } else {
>          dy = y1 - y2;
>      }
>      if (dy > dx) {
>          t = y2;
>          y2 = x2;
>          x2 = t;
>  
>          t = y1;
>          y1 = x1;
>          x1 = t;
>  
>          t = dx;
>          dx = dy;
>          dy = t;
>  
>          c1 = true;
>      }
>  
>      if (x1 > x2) {
>          t = y2;
>          y2 = y1;
>          y1 = t;
>  
>          t = x1;
>          x1 = x2;
>          x2 = t;
>      }
>  
>      horiz = dy << 1;
>      diago = (dy - dx) << 1;
>      e = (dy << 1) - dx;
>  
>      if (y1 <= y2) {
>          incy = 1;
>      } else {
>          incy = -1;
>      }
>      x = x1;
>      y = y1;
>  
>      do {
>          if (c1) {
>              p = buf->data + x * s->width + y;
>          } else {
>              p = buf->data + y * s->width + x;
>          }
>  
>          if (skip_pix > 0) {
>              skip_pix--;
>          } else {
>              artist_rop8(s, p, color);
>          }
>  
>          if (e > 0) {
>              artist_invalidate_lines(buf, y, 1);
>              y  += incy;
>              e  += diago;
>          } else {
>              e += horiz;
>          }
>          x++;
>      } while (x <= x2 && (max_pix == -1 || --max_pix > 0));
>  }
> @@ -648,13 +649,12 @@ static void draw_line(ARTISTState *s, int x1, int y1, int x2, int y2,
>  static void draw_line_pattern_start(ARTISTState *s)
>  {
>  
>      int startx = artist_get_x(s->vram_start);
>      int starty = artist_get_y(s->vram_start);
>      int endx = artist_get_x(s->blockmove_size);
>      int endy = artist_get_y(s->blockmove_size);
>      int pstart = s->line_pattern_start >> 16;
>  
> -    trace_artist_draw_line(startx, starty, endx, endy);
>      draw_line(s, startx, starty, endx, endy, false, -1, pstart);
>      s->line_pattern_skip = pstart;
>  }
> @@ -662,15 +662,14 @@ static void draw_line_pattern_start(ARTISTState *s)
>  static void draw_line_pattern_next(ARTISTState *s)
>  {
>  
>      int startx = artist_get_x(s->vram_start);
>      int starty = artist_get_y(s->vram_start);
>      int endx = artist_get_x(s->blockmove_size);
>      int endy = artist_get_y(s->blockmove_size);
>      int line_xy = s->line_xy >> 16;
>  
> -    trace_artist_draw_line(startx, starty, endx, endy);
>      draw_line(s, startx, starty, endx, endy, false, s->line_pattern_skip,
>                s->line_pattern_skip + line_xy);
>      s->line_pattern_skip += line_xy;
>      s->image_bitmap_op ^= 2;
>  }
> @@ -678,84 +677,81 @@ static void draw_line_pattern_next(ARTISTState *s)
>  static void draw_line_size(ARTISTState *s, bool update_start)
>  {
>  
>      int startx = artist_get_x(s->vram_start);
>      int starty = artist_get_y(s->vram_start);
>      int endx = artist_get_x(s->line_size);
>      int endy = artist_get_y(s->line_size);
>  
> -    trace_artist_draw_line(startx, starty, endx, endy);
>      draw_line(s, startx, starty, endx, endy, update_start, -1, -1);
>  }
>  
>  static void draw_line_xy(ARTISTState *s, bool update_start)
>  {
>  
>      int startx = artist_get_x(s->vram_start);
>      int starty = artist_get_y(s->vram_start);
>      int sizex = artist_get_x(s->blockmove_size);
>      int sizey = artist_get_y(s->blockmove_size);
>      int linexy = s->line_xy >> 16;
>      int endx, endy;
>  
>      endx = startx;
>      endy = starty;
>  
>      if (sizex > 0) {
>          endx = startx + linexy;
>      }
>  
>      if (sizex < 0) {
>          endx = startx;
>          startx -= linexy;
>      }
>  
>      if (sizey > 0) {
>          endy = starty + linexy;
>      }
>  
>      if (sizey < 0) {
>          endy = starty;
>          starty -= linexy;
>      }
>  
>      if (startx < 0) {
>          startx = 0;
>      }
>  
>      if (endx < 0) {
>          endx = 0;
>      }
>  
>      if (starty < 0) {
>          starty = 0;
>      }
>  
>      if (endy < 0) {
>          endy = 0;
>      }
>  
>  
>      if (endx < 0) {
>          return;
>      }
>  
>      if (endy < 0) {
>          return;
>      }
>  
> -    trace_artist_draw_line(startx, starty, endx, endy);
>      draw_line(s, startx, starty, endx, endy, false, -1, -1);
>  }
>  
>  static void draw_line_end(ARTISTState *s, bool update_start)
>  {
>  
>      int startx = artist_get_x(s->vram_start);
>      int starty = artist_get_y(s->vram_start);
>      int endx = artist_get_x(s->line_end);
>      int endy = artist_get_y(s->line_end);
>  
> -    trace_artist_draw_line(startx, starty, endx, endy);
>      draw_line(s, startx, starty, endx, endy, update_start, -1, -1);
>  }
>  
> -- 
> 2.21.1
> 

Acked-by: Sven Schnelle <svens@stackframe.org>


  reply	other threads:[~2020-02-15  9:21 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-14  0:12 [PATCH 0/5] hw/display/artist: Fix Coverity 1419388 & 1419389 Philippe Mathieu-Daudé
2020-02-14  0:12 ` [PATCH 1/5] hw/display/artist: Move trace event to draw_line() Philippe Mathieu-Daudé
2020-02-15  9:12   ` Sven Schnelle [this message]
2020-02-14  0:12 ` [PATCH 2/5] hw/display/artist: Remove pointless initialization Philippe Mathieu-Daudé
2020-02-15  9:12   ` Sven Schnelle
2020-02-14  0:13 ` [PATCH 3/5] hw/display/artist: Delay some variables initialization Philippe Mathieu-Daudé
2020-02-15  9:12   ` Sven Schnelle
2020-02-14  0:13 ` [RFC PATCH 4/5] hw/display/artist: Avoid drawing line when nothing to display Philippe Mathieu-Daudé
2020-02-14  0:13 ` [PATCH 5/5] hw/display/artist: Remove dead code (CID 1419388 & 1419389) Philippe Mathieu-Daudé
2020-02-15  9:11   ` Sven Schnelle
2020-02-16  1:45 ` [PATCH 0/5] hw/display/artist: Fix Coverity 1419388 & 1419389 Richard Henderson

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=20200215091240.GD18657@t470p.stackframe.org \
    --to=svens@stackframe.org \
    --cc=deller@gmx.de \
    --cc=f4bug@amsat.org \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.