[Mesa-dev] [PATCH 1/2] st/mesa: set the centroid qualifier in fragment shader inputs

Brian Paul brianp at vmware.com
Mon Jul 23 06:47:21 PDT 2012


On 07/22/2012 05:37 PM, Marek Olšák wrote:
> This fixes some centroid tests in the EXT_framebuffer_multisample piglit group.
> ---
>   src/mesa/state_tracker/st_glsl_to_tgsi.cpp |   10 ++++++----
>   src/mesa/state_tracker/st_glsl_to_tgsi.h   |    1 +
>   src/mesa/state_tracker/st_program.c        |    4 ++++
>   3 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 50c450e..45136de 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -4481,6 +4481,7 @@ st_translate_program(
>      const ubyte inputSemanticName[],
>      const ubyte inputSemanticIndex[],
>      const GLuint interpMode[],
> +   const GLboolean is_centroid[],
>      GLuint numOutputs,
>      const GLuint outputMapping[],
>      const ubyte outputSemanticName[],
> @@ -4522,10 +4523,11 @@ st_translate_program(
>       */
>      if (procType == TGSI_PROCESSOR_FRAGMENT) {
>         for (i = 0; i<  numInputs; i++) {
> -         t->inputs[i] = ureg_DECL_fs_input(ureg,
> -                                           inputSemanticName[i],
> -                                           inputSemanticIndex[i],
> -                                           interpMode[i]);
> +         t->inputs[i] = ureg_DECL_fs_input_cyl_centroid(ureg,
> +                                                        inputSemanticName[i],
> +                                                        inputSemanticIndex[i],
> +                                                        interpMode[i], 0,
> +                                                        is_centroid[i]);
>         }
>
>         if (proginfo->InputsRead&  FRAG_BIT_WPOS) {
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.h b/src/mesa/state_tracker/st_glsl_to_tgsi.h
> index 55d59d5..a3fe91f 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.h
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.h
> @@ -45,6 +45,7 @@ enum pipe_error st_translate_program(
>      const ubyte inputSemanticName[],
>      const ubyte inputSemanticIndex[],
>      const GLuint interpMode[],
> +   const GLboolean is_centroid[],
>      GLuint numOutputs,
>      const GLuint outputMapping[],
>      const ubyte outputSemanticName[],
> diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
> index 9f98298..36015f6 100644
> --- a/src/mesa/state_tracker/st_program.c
> +++ b/src/mesa/state_tracker/st_program.c
> @@ -347,6 +347,7 @@ st_translate_vertex_program(struct st_context *st,
>                                      NULL, /* input semantic name */
>                                      NULL, /* input semantic index */
>                                      NULL, /* interp mode */
> +                                   NULL, /* is centroid */
>                                      /* outputs */
>                                      stvp->num_outputs,
>                                      stvp->result_to_output,
> @@ -484,6 +485,7 @@ st_translate_fragment_program(struct st_context *st,
>
>      ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS];
>      ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS];
> +   GLboolean is_centroid[PIPE_MAX_SHADER_INPUTS];
>      uint fs_num_inputs = 0;
>
>      ubyte fs_output_semantic_name[PIPE_MAX_SHADER_OUTPUTS];
> @@ -537,6 +539,7 @@ st_translate_fragment_program(struct st_context *st,
>            const GLuint slot = fs_num_inputs++;
>
>            inputMapping[attr] = slot;
> +         is_centroid[slot] = (stfp->Base.IsCentroid&  BITFIELD64_BIT(attr)) != 0;
>
>            switch (attr) {
>            case FRAG_ATTRIB_WPOS:
> @@ -716,6 +719,7 @@ st_translate_fragment_program(struct st_context *st,
>                              input_semantic_name,
>                              input_semantic_index,
>                              interpMode,
> +                           is_centroid,
>                              /* outputs */
>                              fs_num_outputs,
>                              outputMapping,


Reviewed-by: Brian Paul <brianp at vmware.com>


More information about the mesa-dev mailing list