[Mesa-dev] [PATCH 22/26] nir: Add a helper for getting the unique function in a shader

Rob Clark robdclark at gmail.com
Sat Mar 26 15:12:14 UTC 2016


On Fri, Mar 25, 2016 at 7:12 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
>

btw, will there be some point where we actually don't want to inline
everything for vulkan and/or gl?  Adreno does have call/return
instructions (which I haven't really played with too much but I've
seen blob use them in some cases).. and seems like at some threshold
it would be better to have a smaller shader w/ call/ret rather than
inline a large fxn that is called many times.  (Above some size
threshold, the shader needs to execute from external memory using
internal memory as cache, rather than executing completely out of
internal memory.)

otoh I still have enough assumptions in the ir3 code that there is
just a single "main" fxn.  Not sure if I should try to move away from
those assumptions..  anyways, just random question this patch reminded
me of.


Reviewed-by: Rob Clark <robdclark at gmail.com>


> ---
>  src/compiler/nir/nir.h | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
> index d46858e..d39c5fd 100644
> --- a/src/compiler/nir/nir.h
> +++ b/src/compiler/nir/nir.h
> @@ -1816,6 +1816,17 @@ typedef struct nir_shader {
>     gl_shader_stage stage;
>  } nir_shader;
>
> +static inline nir_function *
> +nir_shader_get_entrypoint(nir_shader *shader)
> +{
> +   assert(exec_list_length(&shader->functions) == 1);
> +   struct exec_node *func_node = exec_list_get_head(&shader->functions);
> +   nir_function *func = exec_node_data(nir_function, func_node, node);
> +   assert(func->return_type == glsl_void_type());
> +   assert(func->num_params == 0);
> +   return func;
> +}
> +
>  #define nir_foreach_function(shader, func) \
>     foreach_list_typed(nir_function, func, node, &(shader)->functions)
>
> --
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list