[Mesa-dev] [PATCH 03/17] gallium: add NIR as a possible IR
Jose Fonseca
jfonseca at vmware.com
Mon May 16 21:19:09 UTC 2016
On 09/05/16 20:33, Rob Clark wrote:
> From: Rob Clark <robclark at freedesktop.org>
>
> Signed-off-by: Rob Clark <robclark at freedesktop.org>
> Reviewed-by: Roland Scheidegger <sroland at vmware.com>
> Reviewed-by: Marek Olšák <marek.olsak at amd.com>
> ---
> src/gallium/include/pipe/p_defines.h | 1 +
> src/gallium/include/pipe/p_screen.h | 9 +++++++++
> src/gallium/include/pipe/p_state.h | 6 ++++++
> 3 files changed, 16 insertions(+)
>
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index 2f48109..0cea2e3 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -813,6 +813,7 @@ enum pipe_shader_ir
> PIPE_SHADER_IR_TGSI = 0,
> PIPE_SHADER_IR_LLVM,
> PIPE_SHADER_IR_NATIVE,
> + PIPE_SHADER_IR_NIR,
> };
>
> /**
> diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
> index 3ac5f3c..755291a 100644
> --- a/src/gallium/include/pipe/p_screen.h
> +++ b/src/gallium/include/pipe/p_screen.h
> @@ -275,6 +275,15 @@ struct pipe_screen {
> */
> void (*query_memory_info)(struct pipe_screen *screen,
> struct pipe_memory_info *info);
> +
> + /**
> + * Get IR specific compiler options struct. For PIPE_SHADER_IR_NIR this
> + * returns a 'struct nir_shader_compiler_options'. Drivers reporting
> + * NIR as the preferred IR must implement this.
> + */
> + const void *(*get_compiler_options)(struct pipe_screen *screen,
> + enum pipe_shader_ir ir,
> + unsigned shader);
> };
>
>
> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
> index 3f14e41..eacf9bb 100644
> --- a/src/gallium/include/pipe/p_state.h
> +++ b/src/gallium/include/pipe/p_state.h
> @@ -221,6 +221,11 @@ struct pipe_stream_output_info
> *
> * TODO pipe_compute_state should probably get similar treatment to handle
> * multiple IR's in a cleaner way..
> + *
> + * NOTE: since it is expected that the consumer will want to perform
> + * additional passes on the nir_shader, the driver takes ownership of
> + * the nir_shader. If state trackers need to hang on to the IR (for
> + * example, variant management), it should use nir_shader_clone().
> */
> struct pipe_shader_state
> {
> @@ -230,6 +235,7 @@ struct pipe_shader_state
> union {
> void *llvm;
> void *native;
> + void *nir;
> } ir;
> struct pipe_stream_output_info stream_output;
> };
>
FWIW,
Acked-by: Jose Fonseca <jonseca at vmware.com>
More information about the mesa-dev
mailing list