Mesa (master): svga: null out all sampler views if start=num=0

Brian Paul brianp at kemper.freedesktop.org
Wed May 18 01:22:43 UTC 2016


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

Author: Brian Paul <brianp at vmware.com>
Date:   Fri May  6 09:46:29 2016 -0600

svga: null out all sampler views if start=num=0

Because the CSO module handles sampler views for fragment shaders
differently than vertex/geom shaders, VS/GS shader sampler views
aren't explicitly unbound like for FS sampler vers.  This code
checks for the case of start=num=0 and nulls out the sampler views.
Fixes a assert regression in piglit's arb_texture_multisample-
sample-position test.

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

---

 src/gallium/drivers/svga/svga_pipe_sampler.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/gallium/drivers/svga/svga_pipe_sampler.c b/src/gallium/drivers/svga/svga_pipe_sampler.c
index 845eebb..63771ac 100644
--- a/src/gallium/drivers/svga/svga_pipe_sampler.c
+++ b/src/gallium/drivers/svga/svga_pipe_sampler.c
@@ -433,6 +433,18 @@ svga_set_sampler_views(struct pipe_context *pipe,
    if (!svga_have_vgpu10(svga) && shader != PIPE_SHADER_FRAGMENT)
       return;
 
+   /* This bit of code works around a quirk in the CSO module.
+    * If start=num=0 it means all sampler views should be released.
+    * Note that the CSO module treats sampler views for fragment shaders
+    * differently than other shader types.
+    */
+   if (start == 0 && num == 0 && svga->curr.num_sampler_views[shader] > 0) {
+      for (i = 0; i < svga->curr.num_sampler_views[shader]; i++) {
+         pipe_sampler_view_release(pipe, &svga->curr.sampler_views[shader][i]);
+      }
+      any_change = TRUE;
+   }
+
    for (i = 0; i < num; i++) {
       enum pipe_texture_target target;
 




More information about the mesa-commit mailing list