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@redhat.com> Acked-by: Andres Gomez <agomez@igalia.com>
This commit is contained in:
parent
4adad99cfb
commit
6a332a389a
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue