From 810584270d5b34f6a130eac06a5529d616d82b0a Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 17 Feb 2012 10:18:55 -0700 Subject: [PATCH] svga: no-op sampler view referencing if no change Just to be safe with ref counting and avoid atomic operations. --- src/gallium/drivers/svga/svga_pipe_sampler.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/svga/svga_pipe_sampler.c b/src/gallium/drivers/svga/svga_pipe_sampler.c index c1ea4f8..7675daa 100644 --- a/src/gallium/drivers/svga/svga_pipe_sampler.c +++ b/src/gallium/drivers/svga/svga_pipe_sampler.c @@ -225,12 +225,14 @@ svga_set_fragment_sampler_views(struct pipe_context *pipe, } for (i = 0; i < num; i++) { - /* Note: we're using pipe_sampler_view_release() here to work around - * a possible crash when the old view belongs to another context that - * was already destroyed. - */ - pipe_sampler_view_release(pipe, &svga->curr.sampler_views[i]); - pipe_sampler_view_reference(&svga->curr.sampler_views[i], views[i]); + if (svga->curr.sampler_views[i] != views[i]) { + /* Note: we're using pipe_sampler_view_release() here to work around + * a possible crash when the old view belongs to another context that + * was already destroyed. + */ + pipe_sampler_view_release(pipe, &svga->curr.sampler_views[i]); + pipe_sampler_view_reference(&svga->curr.sampler_views[i], views[i]); + } if (!views[i]) continue; -- 2.7.4