aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_state_common.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2011-09-02 07:35:48 +0200
committerMarek Olšák <[email protected]>2011-09-10 08:53:29 +0200
commitc4519c3aec37f5cb3db8fe7e8ead13ae04e792b5 (patch)
tree364ef162d7c0f89b9733cc684bce277b23e2079c /src/gallium/drivers/r600/r600_state_common.c
parent9edd0b5ddf406ef089edebd12999ff2a26774ca3 (diff)
r600g: fix texture array filtering
This fixes piglit/fbo-generatemipmap-array. It looks like SQ_TEX_SAMPLER_WORD0_0.TEX_ARRAY_OVERRIDE should be set for array textures in order to disable filtering between slices, which adds a dependency between sampler views and sampler states. This patch reworks sampler state updates such that they are postponed until draw time. TEX_ARRAY_OVERRIDE is updated according to bound sampler views. This also consolidates setting the texture state between vertex and pixel shaders.
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r--src/gallium/drivers/r600/r600_state_common.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
index 4d23833671c..ac426847eb8 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -564,6 +564,10 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
if (rctx->have_depth_fb || rctx->have_depth_texture)
r600_flush_depth_textures(rctx);
}
+
+ if (rctx->chip_class < EVERGREEN)
+ r600_update_sampler_states(rctx);
+
u_vbuf_mgr_draw_begin(rctx->vbuf_mgr, info);
r600_vertex_buffer_update(rctx);