From bc035db3c8138d63e700a86b4137dfdba07e3d53 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sat, 9 Jan 2016 01:28:40 -0800 Subject: [PATCH] anv/gen8: Set SLM size in interface descriptor Signed-off-by: Jordan Justen --- src/vulkan/gen8_cmd_buffer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/vulkan/gen8_cmd_buffer.c b/src/vulkan/gen8_cmd_buffer.c index d4d01ea151b..096ced5694f 100644 --- a/src/vulkan/gen8_cmd_buffer.c +++ b/src/vulkan/gen8_cmd_buffer.c @@ -588,6 +588,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, GENX(INTERFACE_DESCRIPTOR_DATA), 64, @@ -600,6 +610,7 @@ flush_compute_descriptor_set(struct anv_cmd_buffer *cmd_buffer) .ConstantIndirectURBEntryReadLength = push_constant_regs, .ConstantURBEntryReadOffset = 0, .BarrierEnable = cs_prog_data->uses_barrier, + .SharedLocalMemorySize = slm_size, .NumberofThreadsinGPGPUThreadGroup = pipeline->cs_thread_width_max); -- 2.30.2