Mesa (9.0): gallium/u_blitter: fix stencil-only blits

Marek Olšák mareko at kemper.freedesktop.org
Sat Sep 22 14:32:40 UTC 2012


Module: Mesa
Branch: 9.0
Commit: 27e056ff15ff365e0e00209738ff97ca64f02f2a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=27e056ff15ff365e0e00209738ff97ca64f02f2a

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Sep  8 15:30:24 2012 +0200

gallium/u_blitter: fix stencil-only blits

NOTE: This is a candidate for the stable branches.
(cherry picked from commit 61706915a3b5644faf7a5e67f47c9c593620bf8c)

---

 src/gallium/auxiliary/util/u_blitter.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index 44295c1..35b8edb 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -1213,6 +1213,21 @@ void util_blitter_copy_texture_view(struct blitter_context *blitter,
       pipe->bind_fragment_sampler_states(pipe, 2, samplers);
 
       pipe_sampler_view_reference(&views[1], NULL);
+   } else if (blit_stencil) {
+      /* Set a stencil-only sampler view for it not to sample depth instead. */
+      struct pipe_sampler_view templ;
+      struct pipe_sampler_view *view;
+
+      templ = *src;
+      templ.format = util_format_stencil_only(templ.format);
+      assert(templ.format != PIPE_FORMAT_NONE);
+
+      view = pipe->create_sampler_view(pipe, src->texture, &templ);
+
+      pipe->set_fragment_sampler_views(pipe, 1, &view);
+      pipe->bind_fragment_sampler_states(pipe, 1, &ctx->sampler_state);
+
+      pipe_sampler_view_reference(&view, NULL);
    } else {
       pipe->set_fragment_sampler_views(pipe, 1, &src);
       pipe->bind_fragment_sampler_states(pipe, 1, &ctx->sampler_state);




More information about the mesa-commit mailing list