diff options
author | Abdiel Janulgue <abdiel.janulgue@linux.intel.com> | 2015-04-20 12:30:41 +0300 |
---|---|---|
committer | Abdiel Janulgue <abdiel.janulgue@linux.intel.com> | 2015-09-11 10:53:25 +0300 |
commit | b1f333bb71faf4bf925e061a7069d13c03e81d23 (patch) | |
tree | d82d0048ac9cefaf00d4ecde110659b58f031982 | |
parent | 20267b522d06a84a4ac8c113f02d56fb6b0990eb (diff) |
i965: Assign hw-binding table index for uniform constant buffer block
Assign the uploaded uniform block with hardware binding table indices.
This is indexed by the resource streamer to fetch the constant buffers
referred to by our gather table entries.
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_vs_state.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index 843df94604..d43af5b26e 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -72,9 +72,18 @@ gen6_upload_push_constants(struct brw_context *brw, gl_constant_value *param; unsigned i; - param = brw_state_batch(brw, type, - prog_data->nr_params * sizeof(gl_constant_value), + const uint32_t size = prog_data->nr_params * sizeof(gl_constant_value); + param = brw_state_batch(brw, type, size, 32, &stage_state->push_const_offset); + if (brw->gather_pool.bo != NULL) { + uint32_t surf_offset = 0; + brw_create_constant_surface(brw, brw->batch.bo, + stage_state->push_const_offset, + size, &surf_offset, false); + gen7_edit_hw_binding_table_entry(brw, stage_state->stage, + BRW_UNIFORM_GATHER_INDEX_START, + surf_offset); + } STATIC_ASSERT(sizeof(gl_constant_value) == sizeof(float)); |