Mesa (master): util/blitter: allow NULL CSOs to be saved

Corbin Simpson csimpson at kemper.freedesktop.org
Wed Jan 6 20:49:32 UTC 2010


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Dec 23 09:59:30 2009 +0100

util/blitter: allow NULL CSOs to be saved

---

 src/gallium/auxiliary/util/u_blitter.c |   27 +++++++++++++++++----------
 1 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index 1f794d3..cef3b69 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -48,6 +48,8 @@
 #include "util/u_simple_shaders.h"
 #include "util/u_texture.h"
 
+#define INVALID_PTR ((void*)~0)
+
 struct blitter_context_priv
 {
    struct blitter_context blitter;
@@ -110,6 +112,11 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe)
    ctx->pipe = pipe;
 
    /* init state objects for them to be considered invalid */
+   ctx->blitter.saved_blend_state = INVALID_PTR;
+   ctx->blitter.saved_dsa_state = INVALID_PTR;
+   ctx->blitter.saved_rs_state = INVALID_PTR;
+   ctx->blitter.saved_fs = INVALID_PTR;
+   ctx->blitter.saved_vs = INVALID_PTR;
    ctx->blitter.saved_fb_state.nr_cbufs = ~0;
    ctx->blitter.saved_num_textures = ~0;
    ctx->blitter.saved_num_sampler_states = ~0;
@@ -234,11 +241,11 @@ void util_blitter_destroy(struct blitter_context *blitter)
 static void blitter_check_saved_CSOs(struct blitter_context_priv *ctx)
 {
    /* make sure these CSOs have been saved */
-   assert(ctx->blitter.saved_blend_state &&
-          ctx->blitter.saved_dsa_state &&
-          ctx->blitter.saved_rs_state &&
-          ctx->blitter.saved_fs &&
-          ctx->blitter.saved_vs);
+   assert(ctx->blitter.saved_blend_state != INVALID_PTR &&
+          ctx->blitter.saved_dsa_state != INVALID_PTR &&
+          ctx->blitter.saved_rs_state != INVALID_PTR &&
+          ctx->blitter.saved_fs != INVALID_PTR &&
+          ctx->blitter.saved_vs != INVALID_PTR);
 }
 
 static void blitter_restore_CSOs(struct blitter_context_priv *ctx)
@@ -252,11 +259,11 @@ static void blitter_restore_CSOs(struct blitter_context_priv *ctx)
    pipe->bind_fs_state(pipe, ctx->blitter.saved_fs);
    pipe->bind_vs_state(pipe, ctx->blitter.saved_vs);
 
-   ctx->blitter.saved_blend_state = 0;
-   ctx->blitter.saved_dsa_state = 0;
-   ctx->blitter.saved_rs_state = 0;
-   ctx->blitter.saved_fs = 0;
-   ctx->blitter.saved_vs = 0;
+   ctx->blitter.saved_blend_state = INVALID_PTR;
+   ctx->blitter.saved_dsa_state = INVALID_PTR;
+   ctx->blitter.saved_rs_state = INVALID_PTR;
+   ctx->blitter.saved_fs = INVALID_PTR;
+   ctx->blitter.saved_vs = INVALID_PTR;
 
    /* restore the state objects which are required to be saved before copy/fill
     */




More information about the mesa-commit mailing list