[Mesa-dev] [PATCH 4/5] st/mesa: use the new subroutine index upload API.

Andres Gomez agomez at igalia.com
Thu Aug 11 14:04:02 UTC 2016


On Tue, 2016-06-07 at 15:25 +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This plugs the new API into the gallium state tracker.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/mesa/state_tracker/st_atom_constbuf.c | 19 +++++++++++--------
>  src/mesa/state_tracker/st_cb_bitmap.c     |  2 +-
>  src/mesa/state_tracker/st_cb_drawpixels.c |  4 ++--
>  3 files changed, 14 insertions(+), 11 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c
> index a980dbe..2646c00 100644
> --- a/src/mesa/state_tracker/st_atom_constbuf.c
> +++ b/src/mesa/state_tracker/st_atom_constbuf.c
> @@ -34,7 +34,7 @@
>  #include "main/imports.h"
>  #include "program/prog_parameter.h"
>  #include "program/prog_print.h"
> -
> +#include "main/shaderapi.h"
>  #include "pipe/p_context.h"
>  #include "pipe/p_defines.h"
>  #include "util/u_inlines.h"
> @@ -55,8 +55,10 @@
>   */
>  void st_upload_constants( struct st_context *st,
>                            struct gl_program_parameter_list *params,
> -                          unsigned shader_type)
> +                          gl_shader_stage stage)

It would be good to update also the declaration
atĀ src/mesa/state_tracker/st_atom_constbuf.h, I think.

Since that would mean the inclusion of the shader_enums.h header in
that file, I leave the decision to you ... maybe it is better as it is
in your patch.

>  {
> +   unsigned shader_type = st_shader_stage_to_ptarget(stage);
> +
>     assert(shader_type == PIPE_SHADER_VERTEX ||
>            shader_type == PIPE_SHADER_FRAGMENT ||
>            shader_type == PIPE_SHADER_GEOMETRY ||
> @@ -92,6 +94,7 @@ void st_upload_constants( struct st_context *st,
>        if (params->StateFlags)
>           _mesa_load_state_parameters(st->ctx, params);
>  
> +      _mesa_shader_write_subroutine_indicies(st->ctx, stage);
>        /* We always need to get a new buffer, to keep the drivers simple and
>         * avoid gratuitous rendering synchronization.
>         * Let's use a user buffer to avoid an unnecessary copy.
> @@ -140,7 +143,7 @@ static void update_vs_constants(struct st_context *st )
>     struct st_vertex_program *vp = st->vp;
>     struct gl_program_parameter_list *params = vp->Base.Base.Parameters;
>  
> -   st_upload_constants( st, params, PIPE_SHADER_VERTEX );
> +   st_upload_constants( st, params, MESA_SHADER_VERTEX );
>  }
>  
>  
> @@ -163,7 +166,7 @@ static void update_fs_constants(struct st_context *st )
>     struct st_fragment_program *fp = st->fp;
>     struct gl_program_parameter_list *params = fp->Base.Base.Parameters;
>  
> -   st_upload_constants( st, params, PIPE_SHADER_FRAGMENT );
> +   st_upload_constants( st, params, MESA_SHADER_FRAGMENT );
>  }
>  
>  
> @@ -185,7 +188,7 @@ static void update_gs_constants(struct st_context *st )
>  
>     if (gp) {
>        params = gp->Base.Base.Parameters;
> -      st_upload_constants( st, params, PIPE_SHADER_GEOMETRY );
> +      st_upload_constants( st, params, MESA_SHADER_GEOMETRY );
>     }
>  }
>  
> @@ -207,7 +210,7 @@ static void update_tcs_constants(struct st_context *st )
>  
>     if (tcp) {
>        params = tcp->Base.Base.Parameters;
> -      st_upload_constants( st, params, PIPE_SHADER_TESS_CTRL );
> +      st_upload_constants( st, params, MESA_SHADER_TESS_CTRL );
>     }
>  }
>  
> @@ -229,7 +232,7 @@ static void update_tes_constants(struct st_context *st )
>  
>     if (tep) {
>        params = tep->Base.Base.Parameters;
> -      st_upload_constants( st, params, PIPE_SHADER_TESS_EVAL );
> +      st_upload_constants( st, params, MESA_SHADER_TESS_EVAL );
>     }
>  }
>  
> @@ -251,7 +254,7 @@ static void update_cs_constants(struct st_context *st )
>  
>     if (cp) {
>        params = cp->Base.Base.Parameters;
> -      st_upload_constants( st, params, PIPE_SHADER_COMPUTE );
> +      st_upload_constants( st, params, MESA_SHADER_COMPUTE );
>     }
>  }
>  
> diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c
> index b4d04b4..d062907 100644
> --- a/src/mesa/state_tracker/st_cb_bitmap.c
> +++ b/src/mesa/state_tracker/st_cb_bitmap.c
> @@ -212,7 +212,7 @@ setup_render_state(struct gl_context *ctx,
>        COPY_4V(colorSave, ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);
>        COPY_4V(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], color);
>        st_upload_constants(st, st->fp->Base.Base.Parameters,
> -                          PIPE_SHADER_FRAGMENT);
> +                          MESA_SHADER_FRAGMENT);
>        COPY_4V(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], colorSave);
>     }
>  
> diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
> index 311ba25..0411156 100644
> --- a/src/mesa/state_tracker/st_cb_drawpixels.c
> +++ b/src/mesa/state_tracker/st_cb_drawpixels.c
> @@ -1121,7 +1121,7 @@ st_DrawPixels(struct gl_context *ctx, GLint x, GLint y,
>         * into the constant buffer, we need to update them
>         */
>        st_upload_constants(st, st->fp->Base.Base.Parameters,
> -                          PIPE_SHADER_FRAGMENT);
> +                          MESA_SHADER_FRAGMENT);
>     }
>  
>     /* Put glDrawPixels image into a texture */
> @@ -1481,7 +1481,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
>         * into the constant buffer, we need to update them
>         */
>        st_upload_constants(st, st->fp->Base.Base.Parameters,
> -                          PIPE_SHADER_FRAGMENT);
> +                          MESA_SHADER_FRAGMENT);
>     }
>     else {
>        assert(type == GL_DEPTH);

Other than the small nitpick, this is:

Acked-by: Andres Gomez <agomez at igalia.com>

-- 

Br,

Andres


More information about the mesa-dev mailing list