From: Michel Dänzer <michel.daen...@amd.com>

Consistently reference the flushed depth texture in the sampler view, not the
original one.

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 src/gallium/drivers/radeonsi/radeonsi_pipe.h |    1 +
 src/gallium/drivers/radeonsi/si_state.c      |   10 +++++-----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
index 1bd8bfb..1ccf952 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
@@ -71,6 +71,7 @@ struct r600_screen {
 
 struct si_pipe_sampler_view {
        struct pipe_sampler_view        base;
+       struct si_resource              *resource;
        uint32_t                        state[8];
 };
 
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 0683b67..0994861 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2086,8 +2086,11 @@ static struct pipe_sampler_view 
*si_create_sampler_view(struct pipe_context *ctx
        if (tmp->depth && !tmp->is_flushing_texture) {
                r600_texture_depth_flush(ctx, texture, TRUE);
                tmp = tmp->flushed_depth_texture;
+               texture = &tmp->resource.b.b;
        }
 
+       view->resource = &tmp->resource;
+
        /* not supported any more */
        //endian = si_colorformat_endian_swap(format);
 
@@ -2252,11 +2255,8 @@ static struct si_pm4_state *si_set_sampler_view(struct 
r600_context *rctx,
                        (struct pipe_sampler_view **)&samplers->views[i],
                        views[i]);
 
-               if (views[i]) {
-                       struct r600_resource_texture *tex = (void 
*)resource[i]->base.texture;
-
-                       si_pm4_add_bo(pm4, &tex->resource, RADEON_USAGE_READ);
-               }
+               if (views[i])
+                       si_pm4_add_bo(pm4, resource[i]->resource, 
RADEON_USAGE_READ);
 
                for (j = 0; j < Elements(resource[i]->state); ++j) {
                        si_pm4_sh_data_add(pm4, resource[i] ? 
resource[i]->state[j] : 0);
-- 
1.7.10.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to