anv: Keep track of whether the data cache should be enabled in L3
If images or shader buffers are used, we will enable the data cache in the the L3 config. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -332,8 +332,13 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
|
|||||||
if (pipeline->layout && pipeline->layout->stage[stage].has_dynamic_offsets)
|
if (pipeline->layout && pipeline->layout->stage[stage].has_dynamic_offsets)
|
||||||
prog_data->nr_params += MAX_DYNAMIC_BUFFERS * 2;
|
prog_data->nr_params += MAX_DYNAMIC_BUFFERS * 2;
|
||||||
|
|
||||||
if (nir->info.num_images > 0)
|
if (nir->info.num_images > 0) {
|
||||||
prog_data->nr_params += nir->info.num_images * BRW_IMAGE_PARAM_SIZE;
|
prog_data->nr_params += nir->info.num_images * BRW_IMAGE_PARAM_SIZE;
|
||||||
|
pipeline->needs_data_cache = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nir->info.num_ssbos > 0)
|
||||||
|
pipeline->needs_data_cache = true;
|
||||||
|
|
||||||
if (prog_data->nr_params > 0) {
|
if (prog_data->nr_params > 0) {
|
||||||
/* XXX: I think we're leaking this */
|
/* XXX: I think we're leaking this */
|
||||||
@@ -1113,6 +1118,8 @@ anv_pipeline_init(struct anv_pipeline *pipeline,
|
|||||||
|
|
||||||
pipeline->use_repclear = extra && extra->use_repclear;
|
pipeline->use_repclear = extra && extra->use_repclear;
|
||||||
|
|
||||||
|
pipeline->needs_data_cache = false;
|
||||||
|
|
||||||
/* When we free the pipeline, we detect stages based on the NULL status
|
/* When we free the pipeline, we detect stages based on the NULL status
|
||||||
* of various prog_data pointers. Make them NULL by default.
|
* of various prog_data pointers. Make them NULL by default.
|
||||||
*/
|
*/
|
||||||
|
@@ -1403,6 +1403,7 @@ struct anv_pipeline {
|
|||||||
struct anv_pipeline_bind_map bindings[MESA_SHADER_STAGES];
|
struct anv_pipeline_bind_map bindings[MESA_SHADER_STAGES];
|
||||||
|
|
||||||
bool use_repclear;
|
bool use_repclear;
|
||||||
|
bool needs_data_cache;
|
||||||
|
|
||||||
const struct brw_stage_prog_data * prog_data[MESA_SHADER_STAGES];
|
const struct brw_stage_prog_data * prog_data[MESA_SHADER_STAGES];
|
||||||
uint32_t scratch_start[MESA_SHADER_STAGES];
|
uint32_t scratch_start[MESA_SHADER_STAGES];
|
||||||
|
@@ -74,6 +74,8 @@ genX(compute_pipeline_create)(
|
|||||||
pipeline->active_stages = 0;
|
pipeline->active_stages = 0;
|
||||||
pipeline->total_scratch = 0;
|
pipeline->total_scratch = 0;
|
||||||
|
|
||||||
|
pipeline->needs_data_cache = false;
|
||||||
|
|
||||||
assert(pCreateInfo->stage.stage == VK_SHADER_STAGE_COMPUTE_BIT);
|
assert(pCreateInfo->stage.stage == VK_SHADER_STAGE_COMPUTE_BIT);
|
||||||
ANV_FROM_HANDLE(anv_shader_module, module, pCreateInfo->stage.module);
|
ANV_FROM_HANDLE(anv_shader_module, module, pCreateInfo->stage.module);
|
||||||
anv_pipeline_compile_cs(pipeline, cache, pCreateInfo, module,
|
anv_pipeline_compile_cs(pipeline, cache, pCreateInfo, module,
|
||||||
|
Reference in New Issue
Block a user