patch 1-4 are

Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>

and should be in my opinion pushable before any of the discussed
changes to the disk cache.

On Wed, Mar 15, 2017 at 5:17 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote:
> Apps can limit the size of the cache via VkAllocationCallbacks so we
> can't be sure that both are always in the cache.
> ---
>  src/amd/vulkan/radv_pipeline.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
> index 73a3776..0eeb535 100644
> --- a/src/amd/vulkan/radv_pipeline.c
> +++ b/src/amd/vulkan/radv_pipeline.c
> @@ -532,33 +532,38 @@ radv_pipeline_compile(struct radv_pipeline *pipeline,
>                                                                  cache,
>                                                                  sha1);
>
>         if (stage == MESA_SHADER_GEOMETRY) {
>                 pipeline->gs_copy_shader =
>                         radv_create_shader_variant_from_pipeline_cache(
>                                 pipeline->device,
>                                 cache,
>                                 gs_copy_sha1);
>         }
> -       if (variant)
> +
> +       if (variant &&
> +           (stage != MESA_SHADER_GEOMETRY || pipeline->gs_copy_shader))
>                 return variant;
>
>         nir = radv_shader_compile_to_nir(pipeline->device,
>                                          module, entrypoint, stage,
>                                          spec_info, dump);
>         if (nir == NULL)
>                 return NULL;
>
> -       variant = radv_shader_variant_create(pipeline->device, nir, layout, 
> key,
> -                                            &code, &code_size, dump);
> +       if (!variant) {
> +               variant = radv_shader_variant_create(pipeline->device, nir,
> +                                                    layout, key, &code,
> +                                                    &code_size, dump);
> +       }
>
> -       if (stage == MESA_SHADER_GEOMETRY) {
> +       if (stage == MESA_SHADER_GEOMETRY && !pipeline->gs_copy_shader) {
>                 void *gs_copy_code = NULL;
>                 unsigned gs_copy_code_size = 0;
>                 pipeline->gs_copy_shader = 
> radv_pipeline_create_gs_copy_shader(
>                         pipeline, nir, &gs_copy_code, &gs_copy_code_size, 
> dump);
>
>                 if (pipeline->gs_copy_shader) {
>                         pipeline->gs_copy_shader =
>                                 
> radv_pipeline_cache_insert_shader(pipeline->device,
>                                                                   cache,
>                                                                   
> gs_copy_sha1,
> --
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to