Module: Mesa Branch: master Commit: 7f9692b97dab498ad47f82394892455d43dcd08b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7f9692b97dab498ad47f82394892455d43dcd08b
Author: Brian Paul <[email protected]> Date: Tue Feb 28 07:48:34 2012 -0700 util: replace format equality test with compatibility test in blit code 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 Reviewed-by: Alex Deucher <[email protected]> Reviewed-by: José Fonseca <[email protected]> --- 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 && _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
