[Mesa-dev] [PATCH] util: replace format equality test with compatibility test in blit code
Jose Fonseca
jfonseca at vmware.com
Tue Feb 28 07:54:31 PST 2012
Good idea.
Jose
----- Original Message -----
> This lets us use the resource_copy_region() path when blitting from
> R8G8B8A8 to R8G8B8x8, for example.
>
> v2: be smarter when src_format==dst_format
> ---
> src/gallium/auxiliary/util/u_blit.c | 22 +++++++++++++++++++++-
> 1 files changed, 21 insertions(+), 1 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_blit.c
> b/src/gallium/auxiliary/util/u_blit.c
> index a10fd17..1279733 100644
> --- a/src/gallium/auxiliary/util/u_blit.c
> +++ b/src/gallium/auxiliary/util/u_blit.c
> @@ -321,6 +321,26 @@ regions_overlap(int srcX0, int srcY0,
>
>
> /**
> + * Can we blit from src format to dest format with a simple copy?
> + */
> +static boolean
> +formats_compatible(enum pipe_format src_format,
> + enum pipe_format dst_format)
> +{
> + if (src_format == dst_format) {
> + return TRUE;
> + }
> + else {
> + const struct util_format_description *src_desc =
> + util_format_description(src_format);
> + const struct util_format_description *dst_desc =
> + util_format_description(dst_format);
> + return util_is_format_compatible(src_desc, dst_desc);
> + }
> +}
> +
> +
> +/**
> * Copy pixel block from src surface to dst surface.
> * Overlapping regions are acceptable.
> * Flipping and stretching are supported.
> @@ -377,7 +397,7 @@ util_blit_pixels_writemask(struct blit_state
> *ctx,
> * no overlapping.
> * Filter mode should not matter since there's no stretching.
> */
> - if (dst_format == src_format &&
> + if (formats_compatible(src_format, dst_format) &&
> srcX0 < srcX1 &&
> dstX0 < dstX1 &&
> srcY0 < srcY1 &&
> --
> 1.7.3.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list