Mesa (master): st/mesa: use the new subroutine index upload API.
Dave Airlie
airlied at kemper.freedesktop.org
Tue Aug 23 01:04:15 UTC 2016
Module: Mesa
Branch: master
Commit: 6a332a389ad05da2793475f05564250c0c4f3af5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a332a389ad05da2793475f05564250c0c4f3af5
Author: Dave Airlie <airlied at redhat.com>
Date: Tue Jun 7 15:25:58 2016 +1000
st/mesa: use the new subroutine index upload API.
This plugs the new API into the gallium state tracker.
Signed-off-by: Dave Airlie <airlied at redhat.com>
Acked-by: Andres Gomez <agomez at igalia.com>
---
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 8ffb6c3..a5d6025 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 9b3f844..df60a62 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 0ee19fd..a7d269b 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 d2b964e..b5f4227 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);
More information about the mesa-commit
mailing list