[Mesa-dev] [PATCH] r600: don't parse properties ourselves.

Marek Olšák maraeo at gmail.com
Sun Aug 23 02:44:12 PDT 2015


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Sun, Aug 23, 2015 at 2:21 AM, Dave Airlie <airlied at gmail.com> wrote:
> shader scan has already happened so just the results,
> also nobody uses gs_input_prim so drop it.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/gallium/drivers/r600/r600_shader.c | 38 +++++++++-------------------------
>  src/gallium/drivers/r600/r600_shader.h |  1 -
>  2 files changed, 10 insertions(+), 29 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
> index 8d1f95a..74141bb 100644
> --- a/src/gallium/drivers/r600/r600_shader.c
> +++ b/src/gallium/drivers/r600/r600_shader.c
> @@ -1809,7 +1809,6 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
>         struct tgsi_token *tokens = pipeshader->selector->tokens;
>         struct pipe_stream_output_info so = pipeshader->selector->so;
>         struct tgsi_full_immediate *immediate;
> -       struct tgsi_full_property *property;
>         struct r600_shader_ctx ctx;
>         struct r600_bytecode_output output[32];
>         unsigned output_done, noutput;
> @@ -1968,6 +1967,16 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
>         ctx.nliterals = 0;
>         ctx.literals = NULL;
>         shader->fs_write_all = FALSE;
> +       if (ctx.info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS])
> +               shader->fs_write_all = TRUE;
> +
> +       shader->vs_position_window_space = FALSE;
> +       if (ctx.info.properties[TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION])
> +               shader->vs_position_window_space = TRUE;
> +
> +       shader->gs_output_prim = ctx.info.properties[TGSI_PROPERTY_GS_OUTPUT_PRIM];
> +       shader->gs_max_out_vertices = ctx.info.properties[TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES];
> +       shader->gs_num_invocations = ctx.info.properties[TGSI_PROPERTY_GS_INVOCATIONS];
>
>         if (shader->vs_as_gs_a)
>                 vs_add_primid_output(&ctx, key.vs_prim_id_out);
> @@ -1994,34 +2003,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
>                                 goto out_err;
>                         break;
>                 case TGSI_TOKEN_TYPE_INSTRUCTION:
> -                       break;
>                 case TGSI_TOKEN_TYPE_PROPERTY:
> -                       property = &ctx.parse.FullToken.FullProperty;
> -                       switch (property->Property.PropertyName) {
> -                       case TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS:
> -                               if (property->u[0].Data == 1)
> -                                       shader->fs_write_all = TRUE;
> -                               break;
> -                       case TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION:
> -                               if (property->u[0].Data == 1)
> -                                       shader->vs_position_window_space = TRUE;
> -                               break;
> -                       case TGSI_PROPERTY_VS_PROHIBIT_UCPS:
> -                               /* we don't need this one */
> -                               break;
> -                       case TGSI_PROPERTY_GS_INPUT_PRIM:
> -                               shader->gs_input_prim = property->u[0].Data;
> -                               break;
> -                       case TGSI_PROPERTY_GS_OUTPUT_PRIM:
> -                               shader->gs_output_prim = property->u[0].Data;
> -                               break;
> -                       case TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES:
> -                               shader->gs_max_out_vertices = property->u[0].Data;
> -                               break;
> -                       case TGSI_PROPERTY_GS_INVOCATIONS:
> -                               shader->gs_num_invocations = property->u[0].Data;
> -                               break;
> -                       }
>                         break;
>                 default:
>                         R600_ERR("unsupported token type %d\n", ctx.parse.FullToken.Token.Type);
> diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
> index 5d05c81..e0cfafd 100644
> --- a/src/gallium/drivers/r600/r600_shader.h
> +++ b/src/gallium/drivers/r600/r600_shader.h
> @@ -79,7 +79,6 @@ struct r600_shader {
>         boolean                 uses_index_registers;
>
>         /* geometry shader properties */
> -       unsigned                gs_input_prim;
>         unsigned                gs_output_prim;
>         unsigned                gs_max_out_vertices;
>         unsigned                gs_num_invocations;
> --
> 2.4.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list