From 6a332a389ad05da2793475f05564250c0c4f3af5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 7 Jun 2016 15:25:58 +1000 Subject: [PATCH] st/mesa: use the new subroutine index upload API. This plugs the new API into the gallium state tracker. Signed-off-by: Dave Airlie Acked-by: Andres Gomez --- src/mesa/state_tracker/st_atom_constbuf.c | 20 ++++++++++++-------- src/mesa/state_tracker/st_atom_constbuf.h | 4 +++- src/mesa/state_tracker/st_cb_bitmap.c | 2 +- src/mesa/state_tracker/st_cb_drawpixels.c | 4 ++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c index 8ffb6c3db4f..a5d60257d0d 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) { + 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,8 @@ void st_upload_constants( struct st_context *st, if (params->StateFlags) _mesa_load_state_parameters(st->ctx, params); + _mesa_shader_write_subroutine_indices(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 +144,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 ); } @@ -158,7 +162,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 ); } @@ -175,7 +179,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 ); } } @@ -192,7 +196,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 ); } } @@ -209,7 +213,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 ); } } @@ -226,7 +230,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_atom_constbuf.h b/src/mesa/state_tracker/st_atom_constbuf.h index 9b3f84455ee..df60a627624 100644 --- a/src/mesa/state_tracker/st_atom_constbuf.h +++ b/src/mesa/state_tracker/st_atom_constbuf.h @@ -29,13 +29,15 @@ #ifndef ST_ATOM_CONSTBUF_H #define ST_ATOM_CONSTBUF_H +#include "compiler/shader_enums.h" + struct gl_program_parameter_list; struct st_context; void st_upload_constants( struct st_context *st, struct gl_program_parameter_list *params, - unsigned id); + gl_shader_stage stage); #endif /* ST_ATOM_CONSTBUF_H */ diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c index 0ee19fd2c62..a7d269b82e6 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 d2b964e6614..b5f4227f6dd 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -1123,7 +1123,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 */ @@ -1487,7 +1487,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); -- 2.30.2