anv/gen7: Set SLM size in interface descriptor

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Jordan Justen 2016-01-30 00:49:31 -08:00
parent ab0d8608d2
commit 8e48ff3ad6
1 changed files with 11 additions and 0 deletions

View File

@ -294,6 +294,16 @@ flush_compute_descriptor_set(struct anv_cmd_buffer *cmd_buffer)
.CURBEDataStartAddress = push_state.offset);
}
assert(prog_data->total_shared <= 64 * 1024);
uint32_t slm_size = 0;
if (prog_data->total_shared > 0) {
/* slm_size is in 4k increments, but must be a power of 2. */
slm_size = 4 * 1024;
while (slm_size < prog_data->total_shared)
slm_size <<= 1;
slm_size /= 4 * 1024;
}
struct anv_state state =
anv_state_pool_emit(&device->dynamic_state_pool,
GEN7_INTERFACE_DESCRIPTOR_DATA, 64,
@ -304,6 +314,7 @@ flush_compute_descriptor_set(struct anv_cmd_buffer *cmd_buffer)
push_constant_regs,
.ConstantURBEntryReadOffset = 0,
.BarrierEnable = cs_prog_data->uses_barrier,
.SharedLocalMemorySize = slm_size,
.NumberofThreadsinGPGPUThreadGroup =
pipeline->cs_thread_width_max);