[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