[Mesa-dev] [PATCH] tgsi/scan: fix scanning fragment shaders with PrimID and Position/Face

Brian Paul brianp at vmware.com
Fri Jun 2 19:13:26 UTC 2017


On 06/01/2017 12:10 PM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> Not relevant to radeonsi, because Position/Face are system values
> with radeonsi, while this codepath is for drivers where Position and
> Face are ordinary inputs.
> ---
>   src/gallium/auxiliary/tgsi/tgsi_scan.c | 17 ++++++++++-------
>   1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
> index 847f4fc..018ca4b 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
> @@ -550,27 +550,30 @@ scan_declaration(struct tgsi_shader_info *info,
>         case TGSI_FILE_INPUT:
>            info->input_semantic_name[reg] = (ubyte) semName;
>            info->input_semantic_index[reg] = (ubyte) semIndex;
>            info->input_interpolate[reg] = (ubyte)fulldecl->Interp.Interpolate;
>            info->input_interpolate_loc[reg] = (ubyte)fulldecl->Interp.Location;
>            info->input_cylindrical_wrap[reg] = (ubyte)fulldecl->Interp.CylindricalWrap;
>
>            /* Vertex shaders can have inputs with holes between them. */
>            info->num_inputs = MAX2(info->num_inputs, reg + 1);
>
> -         if (semName == TGSI_SEMANTIC_PRIMID)
> -            info->uses_primid = TRUE;
> -         else if (procType == PIPE_SHADER_FRAGMENT) {
> -            if (semName == TGSI_SEMANTIC_POSITION)
> -               info->reads_position = TRUE;
> -            else if (semName == TGSI_SEMANTIC_FACE)
> -               info->uses_frontface = TRUE;
> +         switch (semName) {
> +         case TGSI_SEMANTIC_PRIMID:
> +            info->uses_primid = true;
> +            break;
> +         case TGSI_SEMANTIC_POSITION:
> +            info->reads_position = true;
> +            break;
> +         case TGSI_SEMANTIC_FACE:
> +            info->uses_frontface = true;
> +            break;
>            }
>            break;
>
>         case TGSI_FILE_SYSTEM_VALUE:
>            index = fulldecl->Range.First;
>
>            info->system_value_semantic_name[index] = semName;
>            info->num_system_values = MAX2(info->num_system_values, index + 1);
>
>            switch (semName) {
>

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



More information about the mesa-dev mailing list