[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