[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