[Mesa-dev] [PATCH] intel/compiler: Stop assuming the entrypoint is called "main"

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Oct 30 17:07:34 UTC 2018


On 30/10/2018 16:26, Jason Ekstrand wrote:
> This isn't true for Vulkan so we have to whack it to "main" in anv which
> is silly.  Instead of walking the list of functions and asserting that
> everything is named "main" and hoping there's only one function named
> "main", just use the nir_shader_get_entrypoint() helper which has better
> assertions anyway.


There is this comment that might need updating in 
src/intel/compiler/brw_fs.cpp :

       /* Generate FS IR for main().  (the visitor only descends into
        * functions called "main").
        */
       emit_nir_code();

Either way:


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>


> ---
>   src/intel/compiler/brw_fs_nir.cpp   | 17 ++++-------------
>   src/intel/compiler/brw_vec4_nir.cpp |  7 +------
>   src/intel/vulkan/anv_pipeline.c     |  1 -
>   3 files changed, 5 insertions(+), 20 deletions(-)
>
> diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp
> index 7930205d659..c845d87d59b 100644
> --- a/src/intel/compiler/brw_fs_nir.cpp
> +++ b/src/intel/compiler/brw_fs_nir.cpp
> @@ -40,12 +40,7 @@ fs_visitor::emit_nir_code()
>      nir_setup_uniforms();
>      nir_emit_system_values();
>   
> -   /* get the main function and emit it */
> -   nir_foreach_function(function, nir) {
> -      assert(strcmp(function->name, "main") == 0);
> -      assert(function->impl);
> -      nir_emit_impl(function->impl);
> -   }
> +   nir_emit_impl(nir_shader_get_entrypoint((nir_shader *)nir));
>   }
>   
>   void
> @@ -267,13 +262,9 @@ fs_visitor::nir_emit_system_values()
>         }
>      }
>   
> -   nir_foreach_function(function, nir) {
> -      assert(strcmp(function->name, "main") == 0);
> -      assert(function->impl);
> -      nir_foreach_block(block, function->impl) {
> -         emit_system_values_block(block, this);
> -      }
> -   }
> +   nir_function_impl *impl = nir_shader_get_entrypoint((nir_shader *)nir);
> +   nir_foreach_block(block, impl)
> +      emit_system_values_block(block, this);
>   }
>   
>   /*
> diff --git a/src/intel/compiler/brw_vec4_nir.cpp b/src/intel/compiler/brw_vec4_nir.cpp
> index 5ccfd1f8940..19ee79367c8 100644
> --- a/src/intel/compiler/brw_vec4_nir.cpp
> +++ b/src/intel/compiler/brw_vec4_nir.cpp
> @@ -37,12 +37,7 @@ vec4_visitor::emit_nir_code()
>      if (nir->num_uniforms > 0)
>         nir_setup_uniforms();
>   
> -   /* get the main function and emit it */
> -   nir_foreach_function(function, nir) {
> -      assert(strcmp(function->name, "main") == 0);
> -      assert(function->impl);
> -      nir_emit_impl(function->impl);
> -   }
> +   nir_emit_impl(nir_shader_get_entrypoint((nir_shader *)nir));
>   }
>   
>   void
> diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
> index 7c9b1230115..ad0f08253e7 100644
> --- a/src/intel/vulkan/anv_pipeline.c
> +++ b/src/intel/vulkan/anv_pipeline.c
> @@ -191,7 +191,6 @@ anv_shader_compile_to_nir(struct anv_pipeline *pipeline,
>            exec_node_remove(&func->node);
>      }
>      assert(exec_list_length(&nir->functions) == 1);
> -   entry_point->name = ralloc_strdup(entry_point, "main");
>   
>      /* Now that we've deleted all but the main function, we can go ahead and
>       * lower the rest of the constant initializers.  We do this here so that




More information about the mesa-dev mailing list