summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/gen6_sf_state.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-12-03 18:20:42 -0800
committerEric Anholt <eric@anholt.net>2010-12-04 16:26:55 -0800
commit8f23039f0014eafec8b9d3fa06ce5fcba655a39b (patch)
tree491afe01c65ba1c9d5d483bc86f16d0c624e13e7 /src/mesa/drivers/dri/i965/gen6_sf_state.c
parent65570d048234bfc13c5f1545e0454263fb2b5038 (diff)
i965: Update gen6 SF state on fragment program change too.
SF state depends on what inputs there are to the fragment program, not just the outputs of the VS.
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen6_sf_state.c')
-rw-r--r--src/mesa/drivers/dri/i965/gen6_sf_state.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c
index 06ac5d49a0..476bf531c6 100644
--- a/src/mesa/drivers/dri/i965/gen6_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c
@@ -67,6 +67,7 @@ upload_sf_state(struct brw_context *brw)
struct gl_context *ctx = &intel->ctx;
/* CACHE_NEW_VS_PROG */
uint32_t num_inputs = brw_count_bits(brw->vs.prog_data->outputs_written);
+ /* BRW_NEW_FRAGMENT_PROGRAM */
uint32_t num_outputs = brw_count_bits(brw->fragment_program->Base.InputsRead);
uint32_t dw1, dw2, dw3, dw4, dw16;
int i;
@@ -247,7 +248,8 @@ const struct brw_tracked_state gen6_sf_state = {
_NEW_BUFFERS |
_NEW_POINT |
_NEW_TRANSFORM),
- .brw = BRW_NEW_CONTEXT,
+ .brw = (BRW_NEW_CONTEXT |
+ BRW_NEW_FRAGMENT_PROGRAM),
.cache = CACHE_NEW_VS_PROG
},
.emit = upload_sf_state,