[Mesa-dev] [PATCH 12/92] tgsi_from_mesa: add tgsi_get_gl_frag_result_semantic

Samuel Pitoiset samuel.pitoiset at gmail.com
Mon Jul 3 15:42:39 UTC 2017


Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 06/26/2017 04:09 PM, Nicolai Hähnle wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
> 
> ---
>   src/gallium/auxiliary/tgsi/tgsi_from_mesa.c | 35 +++++++++++++++++++++++++++++
>   src/gallium/auxiliary/tgsi/tgsi_from_mesa.h |  5 +++++
>   2 files changed, 40 insertions(+)
> 
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c
> index 44fae1c..b7a21f2 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c
> @@ -141,10 +141,45 @@ tgsi_get_gl_varying_semantic(gl_varying_slot attr,
>      case VARYING_SLOT_VAR0:
>      default:
>         assert(attr >= VARYING_SLOT_VAR0 ||
>                (attr >= VARYING_SLOT_TEX0 && attr <= VARYING_SLOT_TEX7));
>         *semantic_name = TGSI_SEMANTIC_GENERIC;
>         *semantic_index =
>            tgsi_get_generic_gl_varying_index(attr, needs_texcoord_semantic);
>         break;
>      }
>   }
> +
> +/**
> + * Determine the semantic name and index used for the given fragment shader
> + * result.
> + */
> +void
> +tgsi_get_gl_frag_result_semantic(gl_frag_result frag_result,
> +                                 unsigned *semantic_name,
> +                                 unsigned *semantic_index)
> +{
> +   if (frag_result >= FRAG_RESULT_DATA0) {
> +      *semantic_name = TGSI_SEMANTIC_COLOR;
> +      *semantic_index = frag_result - FRAG_RESULT_DATA0;
> +      return;
> +   }
> +
> +   *semantic_index = 0;
> +
> +   switch (frag_result) {
> +   case FRAG_RESULT_DEPTH:
> +      *semantic_name = TGSI_SEMANTIC_POSITION;
> +      break;
> +   case FRAG_RESULT_STENCIL:
> +      *semantic_name = TGSI_SEMANTIC_STENCIL;
> +      break;
> +   case FRAG_RESULT_COLOR:
> +      *semantic_name = TGSI_SEMANTIC_COLOR;
> +      break;
> +   case FRAG_RESULT_SAMPLE_MASK:
> +      *semantic_name = TGSI_SEMANTIC_SAMPLEMASK;
> +      break;
> +   default:
> +      assert(false);
> +   }
> +}
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
> index d0f211e..bfaa48d 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
> +++ b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
> @@ -35,20 +35,25 @@
>   void
>   tgsi_get_gl_varying_semantic(gl_varying_slot attr,
>                                bool needs_texcoord_semantic,
>                                unsigned *semantic_name,
>                                unsigned *semantic_index);
>   
>   unsigned
>   tgsi_get_generic_gl_varying_index(gl_varying_slot attr,
>                                     bool needs_texcoord_semantic);
>   
> +void
> +tgsi_get_gl_frag_result_semantic(gl_frag_result frag_result,
> +                                 unsigned *semantic_name,
> +                                 unsigned *semantic_index);
> +
>   static inline enum pipe_shader_type
>   pipe_shader_type_from_mesa(gl_shader_stage stage)
>   {
>      switch (stage) {
>      case MESA_SHADER_VERTEX:
>         return PIPE_SHADER_VERTEX;
>      case MESA_SHADER_TESS_CTRL:
>         return PIPE_SHADER_TESS_CTRL;
>      case MESA_SHADER_TESS_EVAL:
>         return PIPE_SHADER_TESS_EVAL;
> 


More information about the mesa-dev mailing list