summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdiel Janulgue <abdiel.janulgue@linux.intel.com>2015-04-20 12:30:41 +0300
committerAbdiel Janulgue <abdiel.janulgue@linux.intel.com>2015-09-11 10:53:25 +0300
commitb1f333bb71faf4bf925e061a7069d13c03e81d23 (patch)
treed82d0048ac9cefaf00d4ecde110659b58f031982
parent20267b522d06a84a4ac8c113f02d56fb6b0990eb (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.c13
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));