I can at least fix formats_compatible() to be smarter when src_format==dst_format. I'll post a v2.

-Brian

On 02/28/2012 08:11 AM, Jose Fonseca wrote:
Looks good. Thanks for using util_format_description.

If cpu usage in u_format becomes an issue in the future I'd suggest obtaining 
util_format_description only once per format, as currently 
util_format_description() ends up being called a few times per format.

At any rate, I think that cpu should rarely be a bottleneck on blit functions. 
And if it is, then we should probably consider adding support for multiple 
rectangles per call, as opposed of only one.

Jose


----- Original Message -----
This lets us use the resource_copy_region() path when blitting from
R8G8B8A8 to R8G8B8x8, for example.
---
  src/gallium/auxiliary/util/u_blit.c |   17 ++++++++++++++++-
  1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blit.c
b/src/gallium/auxiliary/util/u_blit.c
index a10fd17..8865823 100644
--- a/src/gallium/auxiliary/util/u_blit.c
+++ b/src/gallium/auxiliary/util/u_blit.c
@@ -321,6 +321,21 @@ 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)
+{
+   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 +392,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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to