[PATCH xserver 2/2] glamor: Drop the composite_with_copy path entirely.

Dave Airlie airlied at gmail.com
Thu Jan 21 13:18:45 PST 2016


On 22 January 2016 at 07:06, Eric Anholt <eric at anholt.net> wrote:
> I originally inherited this from the EXA code, without determining
> whether it was really needed.  Regular composite should end up doing
> the same thing, since it's all just shaders anyway.  To the extent
> that it doesn't, we should fix composite.

For EXA I could see us caring, for glamor not so much. Though I
suppose in theory we could
have a blitfb based copy that is faster, but we don't.

Reviewed-by: Dave Airlie <airlied at redhat.com>
>
> Signed-off-by: Eric Anholt <eric at anholt.net>
> ---
>  glamor/glamor_render.c | 92 --------------------------------------------------
>  1 file changed, 92 deletions(-)
>
> diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
> index 92b6b0c..1b226aa 100644
> --- a/glamor/glamor_render.c
> +++ b/glamor/glamor_render.c
> @@ -508,41 +508,6 @@ glamor_set_composite_solid(float *color, GLint uniform_location)
>      glUniform4fv(uniform_location, 1, color);
>  }
>
> -static int
> -compatible_formats(CARD8 op, PicturePtr dst, PicturePtr src)
> -{
> -    if (op == PictOpSrc) {
> -        /* We can't do direct copies between different depths at 16bpp
> -         * because r,g,b are allocated to different bits.
> -         */
> -        if (dst->pDrawable->bitsPerPixel == 16 &&
> -            dst->pDrawable->depth != src->pDrawable->depth) {
> -            return 0;
> -        }
> -
> -        if (src->format == dst->format)
> -            return 1;
> -
> -        if (src->format == PICT_a8r8g8b8 && dst->format == PICT_x8r8g8b8)
> -            return 1;
> -
> -        if (src->format == PICT_a8b8g8r8 && dst->format == PICT_x8b8g8r8)
> -            return 1;
> -    }
> -    else if (op == PictOpOver) {
> -        if (src->alphaMap || dst->alphaMap)
> -            return 0;
> -
> -        if (src->format != dst->format)
> -            return 0;
> -
> -        if (src->format == PICT_x8r8g8b8 || src->format == PICT_x8b8g8r8)
> -            return 1;
> -    }
> -
> -    return 0;
> -}
> -
>  static char
>  glamor_get_picture_location(PicturePtr picture)
>  {
> @@ -564,54 +529,6 @@ glamor_get_picture_location(PicturePtr picture)
>      return glamor_get_drawable_location(picture->pDrawable);
>  }
>
> -static Bool
> -glamor_composite_with_copy(CARD8 op,
> -                           PicturePtr source,
> -                           PicturePtr dest,
> -                           INT16 x_source,
> -                           INT16 y_source,
> -                           INT16 x_dest, INT16 y_dest, RegionPtr region)
> -{
> -    int ret = FALSE;
> -
> -    if (!source->pDrawable)
> -        return FALSE;
> -
> -    if (!compatible_formats(op, dest, source))
> -        return FALSE;
> -
> -    if (source->repeat || source->transform) {
> -        return FALSE;
> -    }
> -
> -    x_dest += dest->pDrawable->x;
> -    y_dest += dest->pDrawable->y;
> -    x_source += source->pDrawable->x;
> -    y_source += source->pDrawable->y;
> -    if (PICT_FORMAT_A(source->format) == 0) {
> -        /* Fallback if we sample outside the source so that we
> -         * swizzle the correct clear color for out-of-bounds texels.
> -         */
> -        if (region->extents.x1 + x_source - x_dest < 0)
> -            goto cleanup_region;
> -        if (region->extents.x2 + x_source - x_dest > source->pDrawable->width)
> -            goto cleanup_region;
> -
> -        if (region->extents.y1 + y_source - y_dest < 0)
> -            goto cleanup_region;
> -        if (region->extents.y2 + y_source - y_dest > source->pDrawable->height)
> -            goto cleanup_region;
> -    }
> -    glamor_copy(source->pDrawable,
> -                dest->pDrawable, NULL,
> -                RegionRects(region), RegionNumRects(region),
> -                x_source - x_dest, y_source - y_dest,
> -                FALSE, FALSE, 0, NULL);
> -    ret = TRUE;
> - cleanup_region:
> -    return ret;
> -}
> -
>  static void *
>  glamor_setup_composite_vbo(ScreenPtr screen, int n_verts)
>  {
> @@ -1451,15 +1368,6 @@ glamor_composite_clipped_region(CARD8 op,
>          }
>      }
>
> -    if (!mask && temp_src) {
> -        if (glamor_composite_with_copy(op, temp_src, dest,
> -                                       x_temp_src, y_temp_src,
> -                                       x_dest, y_dest, region)) {
> -            ok = TRUE;
> -            goto out;
> -        }
> -    }
> -
>      if (temp_src_pixmap == dest_pixmap) {
>          glamor_fallback("source and dest pixmaps are the same\n");
>          goto out;
> --
> 2.6.4
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list