Mesa (master): cso: check for no sampler view changes in cso_set_sampler_views()

Brian Paul brianp at kemper.freedesktop.org
Fri Apr 4 02:07:02 UTC 2014


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

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Apr  2 17:12:02 2014 -0600

cso: check for no sampler view changes in cso_set_sampler_views()

As we do for sampler states in single_sampler_done() and many other
CSO functions.

Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Reviewed-by: José Fonseca <jfonseca at vmware.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/auxiliary/cso_cache/cso_context.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
index dda3c20..dd0e3df 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.c
+++ b/src/gallium/auxiliary/cso_cache/cso_context.c
@@ -1177,20 +1177,25 @@ cso_set_sampler_views(struct cso_context *ctx,
 {
    struct sampler_info *info = &ctx->samplers[shader_stage];
    unsigned i;
+   boolean any_change = FALSE;
 
    /* reference new views */
    for (i = 0; i < count; i++) {
+      any_change |= info->views[i] != views[i];
       pipe_sampler_view_reference(&info->views[i], views[i]);
    }
    /* unref extra old views, if any */
    for (; i < info->nr_views; i++) {
+      any_change |= info->views[i] != NULL;
       pipe_sampler_view_reference(&info->views[i], NULL);
    }
 
    /* bind the new sampler views */
-   ctx->pipe->set_sampler_views(ctx->pipe, shader_stage, 0,
-                                MAX2(info->nr_views, count),
-                                info->views);
+   if (any_change) {
+      ctx->pipe->set_sampler_views(ctx->pipe, shader_stage, 0,
+                                   MAX2(info->nr_views, count),
+                                   info->views);
+   }
 
    info->nr_views = count;
 }




More information about the mesa-commit mailing list