uterm: video: remove .blend and .blendv backends
authorDavid Herrmann <dh.herrmann@googlemail.com>
Fri, 11 Jan 2013 15:35:25 +0000 (16:35 +0100)
committerDavid Herrmann <dh.herrmann@googlemail.com>
Fri, 11 Jan 2013 15:35:25 +0000 (16:35 +0100)
We never implemented real blending and never hooked it up with the public
API. Hence, we can safely remove this. All functionality that was
available via .blend is now available via .fake_blendv.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
src/uterm_fbdev_internal.h
src/uterm_fbdev_render.c
src/uterm_fbdev_video.c
src/uterm_video_drm.c
src/uterm_video_dumb.c
src/uterm_video_internal.h

index f4e51e8..c4257c7 100644 (file)
@@ -72,11 +72,6 @@ struct fbdev_display {
 int uterm_fbdev_display_blit(struct uterm_display *disp,
                             const struct uterm_video_buffer *buf,
                             unsigned int x, unsigned int y);
-int uterm_fbdev_display_blend(struct uterm_display *disp,
-                             const struct uterm_video_buffer *buf,
-                             unsigned int x, unsigned int y,
-                             uint8_t fr, uint8_t fg, uint8_t fb,
-                             uint8_t br, uint8_t bg, uint8_t bb);
 int uterm_fbdev_display_fake_blendv(struct uterm_display *disp,
                                    const struct uterm_video_blend_req *req,
                                    size_t num);
index b9fdd6e..f441153 100644 (file)
@@ -171,146 +171,6 @@ int uterm_fbdev_display_blit(struct uterm_display *disp,
        return 0;
 }
 
-int uterm_fbdev_display_blend(struct uterm_display *disp,
-                             const struct uterm_video_buffer *buf,
-                             unsigned int x, unsigned int y,
-                             uint8_t fr, uint8_t fg, uint8_t fb,
-                             uint8_t br, uint8_t bg, uint8_t bb)
-{
-       unsigned int tmp;
-       uint8_t *dst, *src;
-       unsigned int width, height, i;
-       unsigned int r, g, b;
-       uint32_t val;
-       struct fbdev_display *fbdev = disp->data;
-
-       if (!disp->video || !(disp->flags & DISPLAY_ONLINE))
-               return -EINVAL;
-       if (!buf || !video_is_awake(disp->video))
-               return -EINVAL;
-       if (buf->format != UTERM_FORMAT_GREY)
-               return -EINVAL;
-
-       tmp = x + buf->width;
-       if (tmp < x || x >= fbdev->xres)
-               return -EINVAL;
-       if (tmp > fbdev->xres)
-               width = fbdev->xres - x;
-       else
-               width = buf->width;
-
-       tmp = y + buf->height;
-       if (tmp < y || y >= fbdev->yres)
-               return -EINVAL;
-       if (tmp > fbdev->yres)
-               height = fbdev->yres - y;
-       else
-               height = buf->height;
-
-       if (!(disp->flags & DISPLAY_DBUF) || fbdev->bufid)
-               dst = fbdev->map;
-       else
-               dst = &fbdev->map[fbdev->yres * fbdev->stride];
-       dst = &dst[y * fbdev->stride + x * fbdev->Bpp];
-       src = buf->data;
-
-       /* Division by 256 instead of 255 increases
-        * speed by like 20% on slower machines.
-        * Downside is, full white is 254/254/254
-        * instead of 255/255/255. */
-       if (fbdev->xrgb32) {
-               while (height--) {
-                       for (i = 0; i < width; ++i) {
-                               if (src[i] == 0) {
-                                       r = br;
-                                       g = bg;
-                                       b = bb;
-                               } else if (src[i] == 255) {
-                                       r = fr;
-                                       g = fg;
-                                       b = fb;
-                               } else {
-                                       r = fr * src[i] +
-                                           br * (255 - src[i]);
-                                       r /= 256;
-                                       g = fg * src[i] +
-                                           bg * (255 - src[i]);
-                                       g /= 256;
-                                       b = fb * src[i] +
-                                           bb * (255 - src[i]);
-                                       b /= 256;
-                               }
-                               val = (r << 16) | (g << 8) | b;
-                               ((uint32_t*)dst)[i] = val;
-                       }
-                       dst += fbdev->stride;
-                       src += buf->stride;
-               }
-       } else if (fbdev->Bpp == 2) {
-               while (height--) {
-                       for (i = 0; i < width; ++i) {
-                               if (src[i] == 0) {
-                                       r = br;
-                                       g = bg;
-                                       b = bb;
-                               } else if (src[i] == 255) {
-                                       r = fr;
-                                       g = fg;
-                                       b = fb;
-                               } else {
-                                       r = fr * src[i] +
-                                           br * (255 - src[i]);
-                                       r /= 256;
-                                       g = fg * src[i] +
-                                           bg * (255 - src[i]);
-                                       g /= 256;
-                                       b = fb * src[i] +
-                                           bb * (255 - src[i]);
-                                       b /= 256;
-                               }
-                               val = (r << 16) | (g << 8) | b;
-                               ((uint16_t*)dst)[i] = xrgb32_to_device(disp,
-                                                                      val);
-                       }
-                       dst += fbdev->stride;
-                       src += buf->stride;
-               }
-       } else if (fbdev->Bpp == 4) {
-               while (height--) {
-                       for (i = 0; i < width; ++i) {
-                               if (src[i] == 0) {
-                                       r = br;
-                                       g = bg;
-                                       b = bb;
-                               } else if (src[i] == 255) {
-                                       r = fr;
-                                       g = fg;
-                                       b = fb;
-                               } else {
-                                       r = fr * src[i] +
-                                           br * (255 - src[i]);
-                                       r /= 256;
-                                       g = fg * src[i] +
-                                           bg * (255 - src[i]);
-                                       g /= 256;
-                                       b = fb * src[i] +
-                                           bb * (255 - src[i]);
-                                       b /= 256;
-                               }
-                               val = (r << 16) | (g << 8) | b;
-                               ((uint32_t*)dst)[i] = xrgb32_to_device(disp,
-                                                                      val);
-                       }
-                       dst += fbdev->stride;
-                       src += buf->stride;
-               }
-       } else {
-               log_warning("invalid Bpp");
-       }
-
-       return 0;
-}
-
 int uterm_fbdev_display_fake_blendv(struct uterm_display *disp,
                                    const struct uterm_video_blend_req *req,
                                    size_t num)
index 95132bd..1954be3 100644 (file)
@@ -440,8 +440,6 @@ static const struct display_ops fbdev_display_ops = {
        .use = NULL,
        .swap = display_swap,
        .blit = uterm_fbdev_display_blit,
-       .blend = uterm_fbdev_display_blend,
-       .blendv = uterm_fbdev_display_fake_blendv,
        .fake_blendv = uterm_fbdev_display_fake_blendv,
        .fill = uterm_fbdev_display_fill,
 };
index 3a3ec93..c22b0ba 100644 (file)
@@ -977,8 +977,6 @@ static const struct display_ops drm_display_ops = {
        .use = display_use,
        .swap = display_swap,
        .blit = display_blit,
-       .blend = display_blend,
-       .blendv = display_fake_blendv,
        .fake_blendv = display_fake_blendv,
        .fill = display_fill,
 };
index b224bb3..325548c 100644 (file)
@@ -426,86 +426,6 @@ static int display_blit(struct uterm_display *disp,
        return 0;
 }
 
-static int display_blend(struct uterm_display *disp,
-                        const struct uterm_video_buffer *buf,
-                        unsigned int x, unsigned int y,
-                        uint8_t fr, uint8_t fg, uint8_t fb,
-                        uint8_t br, uint8_t bg, uint8_t bb)
-{
-       unsigned int tmp;
-       uint8_t *dst, *src;
-       struct dumb_rb *rb;
-       unsigned int width, height, i;
-       unsigned int sw, sh;
-       unsigned int r, g, b;
-
-       if (!disp->video || !display_is_online(disp))
-               return -EINVAL;
-       if (!buf || !video_is_awake(disp->video))
-               return -EINVAL;
-
-       rb = &disp->dumb.rb[disp->dumb.current_rb ^ 1];
-       sw = disp->current_mode->dumb.info.hdisplay;
-       sh = disp->current_mode->dumb.info.vdisplay;
-
-       tmp = x + buf->width;
-       if (tmp < x || x >= sw)
-               return -EINVAL;
-       if (tmp > sw)
-               width = sw - x;
-       else
-               width = buf->width;
-
-       tmp = y + buf->height;
-       if (tmp < y || y >= sh)
-               return -EINVAL;
-       if (tmp > sh)
-               height = sh - y;
-       else
-               height = buf->height;
-
-       dst = rb->map;
-       dst = &dst[y * rb->stride + x * 4];
-       src = buf->data;
-
-       if (buf->format == UTERM_FORMAT_GREY) {
-               while (height--) {
-                       for (i = 0; i < width; ++i) {
-                               /* Division by 256 instead of 255 increases
-                                * speed by like 20% on slower machines.
-                                * Downside is, full white is 254/254/254
-                                * instead of 255/255/255. */
-                               if (src[i] == 0) {
-                                       r = br;
-                                       g = bg;
-                                       b = bb;
-                               } else if (src[i] == 255) {
-                                       r = fr;
-                                       g = fg;
-                                       b = fb;
-                               } else {
-                                       r = fr * src[i] +
-                                           br * (255 - src[i]);
-                                       r /= 256;
-                                       g = fg * src[i] +
-                                           bg * (255 - src[i]);
-                                       g /= 256;
-                                       b = fb * src[i] +
-                                           bb * (255 - src[i]);
-                                       b /= 256;
-                               }
-                               ((uint32_t*)dst)[i] = (r << 16) | (g << 8) | b;
-                       }
-                       dst += rb->stride;
-                       src += buf->stride;
-               }
-       } else {
-               log_warning("using unsupported buffer format for blending");
-       }
-
-       return 0;
-}
-
 static int display_fake_blendv(struct uterm_display *disp,
                               const struct uterm_video_blend_req *req,
                               size_t num)
@@ -639,8 +559,6 @@ static const struct display_ops dumb_display_ops = {
        .use = NULL,
        .swap = display_swap,
        .blit = display_blit,
-       .blend = display_blend,
-       .blendv = display_fake_blendv,
        .fake_blendv = display_fake_blendv,
        .fill = display_fill,
 };
index fde37ac..046e7ed 100644 (file)
@@ -57,13 +57,6 @@ struct display_ops {
        int (*blit) (struct uterm_display *disp,
                     const struct uterm_video_buffer *buf,
                     unsigned int x, unsigned int y);
-       int (*blend) (struct uterm_display *disp,
-                     const struct uterm_video_buffer *buf,
-                     unsigned int x, unsigned int y,
-                     uint8_t fr, uint8_t fg, uint8_t fb,
-                     uint8_t br, uint8_t bg, uint8_t bb);
-       int (*blendv) (struct uterm_display *disp,
-                      const struct uterm_video_blend_req *req, size_t num);
        int (*fake_blendv) (struct uterm_display *disp,
                            const struct uterm_video_blend_req *req,
                            size_t num);