[Mesa-dev] [PATCH 2/5] anv: Keep track of whether the data cache should be enabled in L3

Jason Ekstrand jason at jlekstrand.net
Mon May 16 19:25:45 UTC 2016


On Wed, May 11, 2016 at 4:22 PM, Jordan Justen <jordan.l.justen at intel.com>
wrote:

> 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 at intel.com>
> ---
>  src/intel/vulkan/anv_pipeline.c  | 8 +++++++-
>  src/intel/vulkan/anv_private.h   | 1 +
>  src/intel/vulkan/genX_pipeline.c | 2 ++
>  3 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/src/intel/vulkan/anv_pipeline.c
> b/src/intel/vulkan/anv_pipeline.c
> index 5800e68..fcaa450 100644
> --- a/src/intel/vulkan/anv_pipeline.c
> +++ b/src/intel/vulkan/anv_pipeline.c
> @@ -331,8 +331,12 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
>     if (pipeline->layout &&
> pipeline->layout->stage[stage].has_dynamic_offsets)
>        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;
> +      pipeline->needs_data_cache |= true;
>

This can just be "= true"


> +   }
> +
> +   pipeline->needs_data_cache |= nir->info.num_ssbos > 0;
>

Maybe use "if (nir->info.num_ssbos >= 0)" to make it look more like the one
above?


>
>     if (prog_data->nr_params > 0) {
>        /* XXX: I think we're leaking this */
> @@ -1138,6 +1142,8 @@ anv_pipeline_init(struct anv_pipeline *pipeline,
>
>     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
>      * of various prog_data pointers.  Make them NULL by default.
>      */
> diff --git a/src/intel/vulkan/anv_private.h
> b/src/intel/vulkan/anv_private.h
> index d8a2194..fb308eb 100644
> --- a/src/intel/vulkan/anv_private.h
> +++ b/src/intel/vulkan/anv_private.h
> @@ -1403,6 +1403,7 @@ struct anv_pipeline {
>     struct anv_pipeline_bind_map
>  bindings[MESA_SHADER_STAGES];
>
>     bool                                         use_repclear;
> +   bool                                         needs_data_cache;
>
>     const struct brw_stage_prog_data *
>  prog_data[MESA_SHADER_STAGES];
>     uint32_t
>  scratch_start[MESA_SHADER_STAGES];
> diff --git a/src/intel/vulkan/genX_pipeline.c
> b/src/intel/vulkan/genX_pipeline.c
> index 2328920..2a41b2d 100644
> --- a/src/intel/vulkan/genX_pipeline.c
> +++ b/src/intel/vulkan/genX_pipeline.c
> @@ -74,6 +74,8 @@ genX(compute_pipeline_create)(
>     pipeline->active_stages = 0;
>     pipeline->total_scratch = 0;
>
> +   pipeline->needs_data_cache = false;
> +
>     assert(pCreateInfo->stage.stage == VK_SHADER_STAGE_COMPUTE_BIT);
>     ANV_FROM_HANDLE(anv_shader_module, module,  pCreateInfo->stage.module);
>     anv_pipeline_compile_cs(pipeline, cache, pCreateInfo, module,
> --
> 2.8.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160516/ca3252ca/attachment-0001.html>


More information about the mesa-dev mailing list