summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/gen7_vs_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen7_vs_state.c')
-rw-r--r--src/mesa/drivers/dri/i965/gen7_vs_state.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/gen7_vs_state.c b/src/mesa/drivers/dri/i965/gen7_vs_state.c
index 4daf2bc238..4fdc4ab6f5 100644
--- a/src/mesa/drivers/dri/i965/gen7_vs_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_vs_state.c
@@ -52,13 +52,13 @@ gen7_submit_gather_table(struct brw_context* brw,
SET_FIELD(BRW_UNIFORM_GATHER_INDEX_START / 16,
BRW_GATHER_BINDING_TABLE_BLOCK));
OUT_BATCH(stage_state->push_const_offset);
+ struct brw_shader_program* prog = prog_data->program;
for (int i = 0; i < prog_data->nr_gather_table; i++) {
/* Which bo are we referring to? The uniform constant buffer or
* the UBO block?
*/
- bool is_uniform = prog_data->gather_table[i].reg == -1;
- int cb_offset = is_uniform ? i :
- (prog_data->gather_table[i].const_offset / 16);
+ bool is_uniform = prog_data->gather_table[i].uniform_location != -1;
+ int cb_offset = prog_data->gather_table[i].const_offset / 16;
int bt_offset = is_uniform ? 0 :
(prog_data->gather_table[i].const_block + BRW_UBO_GATHER_INDEX_APPEND);
@@ -68,6 +68,10 @@ gen7_submit_gather_table(struct brw_context* brw,
OUT_BATCH(SET_FIELD(cb_offset, BRW_GATHER_CONST_BUFFER_OFFSET) |
SET_FIELD(prog_data->gather_table[i].channel_mask,
BRW_GATHER_CHANNEL_MASK) | bt_offset);
+
+ int loc = prog_data->gather_table[i].uniform_location;
+ if (loc > -1)
+ prog->storage_table[loc].needs_update = true;
}
ADVANCE_BATCH();
}