summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorMichel Dänzer <[email protected]>2012-11-20 17:33:19 +0100
committerMichel Dänzer <[email protected]>2012-11-28 13:35:16 +0100
commit49003a5cb658751a85383cd6600006e094f453bc (patch)
tree637026db1e653291467cfc14f0b6f02cb848a539 /src/gallium
parent3c024624fd3b5c4c43471ad06120cb988c045196 (diff)
radeonsi: Fix sampler views for depth textures.
Consistently reference the flushed depth texture in the sampler view, not the original one. Signed-off-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/radeonsi/radeonsi_pipe.h1
-rw-r--r--src/gallium/drivers/radeonsi/si_state.c10
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 1bd8bfbbcfd..1ccf95274dc 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 0683b676599..09948618b93 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);