diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen7_vs_state.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_vs_state.c | 10 |
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(); } |