Mesa (master): util: simplify writemask parameters for util_blit_pixels()

Brian Paul brianp at kemper.freedesktop.org
Wed Sep 24 21:39:13 UTC 2014


Module: Mesa
Branch: master
Commit: b6947e02dedc2ea49c230c17c5c06bbed1c0c063
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b6947e02dedc2ea49c230c17c5c06bbed1c0c063

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Sep 24 07:27:02 2014 -0600

util: simplify writemask parameters for util_blit_pixels()

Instead of separate color and Z/S writemasks, just have one writemask
parameter that takes a mask of the PIPE_MASK_[RGBAZS] flags.

Reviewed-by: Charmaine Lee <charmainel at vmware.com>

---

 src/gallium/auxiliary/util/u_blit.c |   25 ++++++++++++++++---------
 src/gallium/auxiliary/util/u_blit.h |    7 +------
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blit.c b/src/gallium/auxiliary/util/u_blit.c
index eed1e40..502ee7a 100644
--- a/src/gallium/auxiliary/util/u_blit.c
+++ b/src/gallium/auxiliary/util/u_blit.c
@@ -337,9 +337,9 @@ formats_compatible(enum pipe_format src_format,
  * Overlapping regions are acceptable.
  * Flipping and stretching are supported.
  * \param filter  one of PIPE_TEX_FILTER_NEAREST/LINEAR
- * \param writemask  controls which channels in the dest surface are sourced
- *                   from the src surface.  Disabled channels are sourced
- *                   from (0,0,0,1).
+ * \param writemask  bitmask of PIPE_MASK_[RGBAZS].  Controls which channels
+ *                   in the dest surface are sourced from the src surface.
+ *                   Disabled color channels are sourced from (0,0,0,1).
  */
 void
 util_blit_pixels(struct blit_state *ctx,
@@ -352,7 +352,7 @@ util_blit_pixels(struct blit_state *ctx,
                  int dstX0, int dstY0,
                  int dstX1, int dstY1,
                  float z, uint filter,
-                 uint writemask, uint zs_writemask)
+                 uint writemask)
 {
    struct pipe_context *pipe = ctx->pipe;
    enum pipe_format src_format, dst_format;
@@ -383,11 +383,18 @@ util_blit_pixels(struct blit_state *ctx,
    is_depth = util_format_has_depth(src_desc);
    is_stencil = util_format_has_stencil(src_desc);
 
-   blit_depth = is_depth && (zs_writemask & BLIT_WRITEMASK_Z);
-   blit_stencil = is_stencil && (zs_writemask & BLIT_WRITEMASK_STENCIL);
+   blit_depth = is_depth && (writemask & PIPE_MASK_Z);
+   blit_stencil = is_stencil && (writemask & PIPE_MASK_S);
 
-   assert((writemask && !zs_writemask && !is_depth && !is_stencil) ||
-          (!writemask && (blit_depth || blit_stencil)));
+   if (is_depth || is_stencil) {
+      assert((writemask & PIPE_MASK_RGBA) == 0);
+      assert(blit_depth || blit_stencil);
+   }
+   else {
+      assert((writemask & PIPE_MASK_ZS) == 0);
+      assert(!blit_depth);
+      assert(!blit_stencil);
+   }
 
    /*
     * XXX: z parameter is deprecated. dst->u.tex.first_layer
@@ -447,7 +454,7 @@ util_blit_pixels(struct blit_state *ctx,
    info.src.box.height = srcY1 - srcY0;
    info.src.box.depth = 1;
    info.src.format = src_tex->format;
-   info.mask = writemask | (zs_writemask << 4);
+   info.mask = writemask;
    info.filter = filter;
    info.scissor_enable = 0;
 
diff --git a/src/gallium/auxiliary/util/u_blit.h b/src/gallium/auxiliary/util/u_blit.h
index 042c489..b50edab 100644
--- a/src/gallium/auxiliary/util/u_blit.h
+++ b/src/gallium/auxiliary/util/u_blit.h
@@ -31,8 +31,6 @@
 
 
 #include "pipe/p_compiler.h"
-/* for TGSI_WRITEMASK_* specification in util_blit_pixels */
-#include "pipe/p_shader_tokens.h"
 
 
 #ifdef __cplusplus
@@ -46,9 +44,6 @@ struct pipe_resource;
 struct pipe_sampler_view;
 struct pipe_surface;
 
-#define BLIT_WRITEMASK_Z         1
-#define BLIT_WRITEMASK_STENCIL   2
-
 extern struct blit_state *
 util_create_blit(struct pipe_context *pipe, struct cso_context *cso);
 
@@ -66,7 +61,7 @@ util_blit_pixels(struct blit_state *ctx,
                  int dstX0, int dstY0,
                  int dstX1, int dstY1,
                  float z, uint filter,
-                 uint writemask, uint zs_writemask);
+                 uint writemask);
 
 extern void
 util_blit_pixels_tex(struct blit_state *ctx,




More information about the mesa-commit mailing list