From afce8654df32756a36a728aa367008340b3b350f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 20 Dec 2021 16:15:22 +1000 Subject: [PATCH] mesa/st: move st_vertex_program to gl_vertex_program in mesa Reviewed-by: Kristian H. Kristensen Part-of: --- src/mesa/main/shader_types.h | 14 ++++++++++++++ src/mesa/state_tracker/st_atom.h | 6 +++--- src/mesa/state_tracker/st_atom_array.cpp | 8 ++++---- src/mesa/state_tracker/st_cb_feedback.c | 2 +- src/mesa/state_tracker/st_cb_program.c | 2 +- src/mesa/state_tracker/st_cb_rasterpos.c | 2 +- src/mesa/state_tracker/st_draw_feedback.c | 4 ++-- src/mesa/state_tracker/st_program.c | 12 ++++++------ src/mesa/state_tracker/st_program.h | 11 ----------- src/mesa/state_tracker/st_shader_cache.c | 20 ++++++++++---------- 10 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/mesa/main/shader_types.h b/src/mesa/main/shader_types.h index 117c357d8d3..f2f1656ba30 100644 --- a/src/mesa/main/shader_types.h +++ b/src/mesa/main/shader_types.h @@ -706,6 +706,20 @@ struct gl_program }; }; +/* + * State/IR translators needs to store some extra vp info. + */ +struct gl_vertex_program +{ + struct gl_program Base; + + uint32_t vert_attrib_mask; /**< mask of sourced vertex attribs */ + ubyte num_inputs; + + /** Maps VARYING_SLOT_x to slot */ + ubyte result_to_output[VARYING_SLOT_MAX]; +}; + /** * Structure that represents a reference to an atomic buffer from some * shader program. diff --git a/src/mesa/state_tracker/st_atom.h b/src/mesa/state_tracker/st_atom.h index df2d68318f1..b20b8288460 100644 --- a/src/mesa/state_tracker/st_atom.h +++ b/src/mesa/state_tracker/st_atom.h @@ -41,7 +41,7 @@ extern "C" { #endif struct st_context; -struct st_vertex_program; +struct gl_vertex_program; struct st_common_variant; struct pipe_vertex_buffer; struct pipe_vertex_element; @@ -66,7 +66,7 @@ void st_update_edgeflags(struct st_context *st, bool per_vertex_edgeflags); void st_setup_arrays(struct st_context *st, - const struct st_vertex_program *vp, + const struct gl_vertex_program *vp, const struct st_common_variant *vp_variant, struct cso_velems_state *velements, struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers, @@ -74,7 +74,7 @@ st_setup_arrays(struct st_context *st, void st_setup_current_user(struct st_context *st, - const struct st_vertex_program *vp, + const struct gl_vertex_program *vp, const struct st_common_variant *vp_variant, struct cso_velems_state *velements, struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers); diff --git a/src/mesa/state_tracker/st_atom_array.cpp b/src/mesa/state_tracker/st_atom_array.cpp index a46701b9538..4ed0d488068 100644 --- a/src/mesa/state_tracker/st_atom_array.cpp +++ b/src/mesa/state_tracker/st_atom_array.cpp @@ -180,7 +180,7 @@ setup_arrays(struct st_context *st, /* Only used by the select/feedback mode. */ void st_setup_arrays(struct st_context *st, - const struct st_vertex_program *vp, + const struct gl_vertex_program *vp, const struct st_common_variant *vp_variant, struct cso_velems_state *velements, struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers, @@ -203,7 +203,7 @@ st_setup_arrays(struct st_context *st, */ template void ALWAYS_INLINE st_setup_current(struct st_context *st, - const struct st_vertex_program *vp, + const struct gl_vertex_program *vp, const struct st_common_variant *vp_variant, struct cso_velems_state *velements, struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers) @@ -267,7 +267,7 @@ st_setup_current(struct st_context *st, /* Only used by the select/feedback mode. */ void st_setup_current_user(struct st_context *st, - const struct st_vertex_program *vp, + const struct gl_vertex_program *vp, const struct st_common_variant *vp_variant, struct cso_velems_state *velements, struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers) @@ -303,7 +303,7 @@ st_update_array_templ(struct st_context *st) /* vertex program validation must be done before this */ /* _NEW_PROGRAM, ST_NEW_VS_STATE */ - const struct st_vertex_program *vp = (struct st_vertex_program *)st->vp; + const struct gl_vertex_program *vp = (struct gl_vertex_program *)st->vp; const struct st_common_variant *vp_variant = st->vp_variant; struct pipe_vertex_buffer vbuffer[PIPE_MAX_ATTRIBS]; diff --git a/src/mesa/state_tracker/st_cb_feedback.c b/src/mesa/state_tracker/st_cb_feedback.c index d2bde2a9382..c5e6f779cd0 100644 --- a/src/mesa/state_tracker/st_cb_feedback.c +++ b/src/mesa/state_tracker/st_cb_feedback.c @@ -87,7 +87,7 @@ feedback_vertex(struct gl_context *ctx, const struct draw_context *draw, const struct vertex_header *v) { const struct st_context *st = st_context(ctx); - struct st_vertex_program *stvp = (struct st_vertex_program *)st->vp; + struct gl_vertex_program *stvp = (struct gl_vertex_program *)st->vp; GLfloat win[4]; const GLfloat *color, *texcoord; ubyte slot; diff --git a/src/mesa/state_tracker/st_cb_program.c b/src/mesa/state_tracker/st_cb_program.c index 6dc8722f9c7..2d0670365c0 100644 --- a/src/mesa/state_tracker/st_cb_program.c +++ b/src/mesa/state_tracker/st_cb_program.c @@ -61,7 +61,7 @@ st_new_program(struct gl_context *ctx, gl_shader_stage stage, GLuint id, switch (stage) { case MESA_SHADER_VERTEX: - prog = (struct gl_program*)rzalloc(NULL, struct st_vertex_program); + prog = (struct gl_program*)rzalloc(NULL, struct gl_vertex_program); break; default: prog = rzalloc(NULL, struct gl_program); diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c index 692f1aa98c6..0dd84fc745d 100644 --- a/src/mesa/state_tracker/st_cb_rasterpos.c +++ b/src/mesa/state_tracker/st_cb_rasterpos.c @@ -142,7 +142,7 @@ rastpos_point(struct draw_stage *stage, struct prim_header *prim) struct gl_context *ctx = rs->ctx; struct st_context *st = st_context(ctx); const GLfloat height = (GLfloat) ctx->DrawBuffer->Height; - struct st_vertex_program *stvp = (struct st_vertex_program *)st->vp; + struct gl_vertex_program *stvp = (struct gl_vertex_program *)st->vp; const ubyte *outputMapping = stvp->result_to_output; const GLfloat *pos; GLuint i; diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index b2fee7d70b9..6c46fbb6992 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -107,7 +107,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; struct draw_context *draw = st_get_draw_context(st); - const struct st_vertex_program *vp; + const struct gl_vertex_program *vp; struct st_common_variant *vp_variant; struct pipe_vertex_buffer vbuffers[PIPE_MAX_SHADER_INPUTS]; unsigned num_vbuffers = 0; @@ -144,7 +144,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, memcpy(&key, &st->vp_variant->key, sizeof(key)); key.is_draw_shader = true; - vp = (struct st_vertex_program *)st->vp; + vp = (struct gl_vertex_program *)st->vp; vp_variant = st_get_common_variant(st, st->vp, &key); /* diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 9d28fbce529..36ff3c8eb8e 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -424,7 +424,7 @@ st_translate_prog_to_nir(struct st_context *st, struct gl_program *prog, void st_prepare_vertex_program(struct gl_program *prog, uint8_t *out_attrib_to_index) { - struct st_vertex_program *stvp = (struct st_vertex_program *)prog; + struct gl_vertex_program *stvp = (struct gl_vertex_program *)prog; uint8_t attrib_to_index[VERT_ATTRIB_MAX] = {0}; stvp->num_inputs = 0; @@ -652,7 +652,7 @@ st_translate_vertex_program(struct st_context *st, debug_printf("\n"); } - struct st_vertex_program *stvp = (struct st_vertex_program *)prog; + struct gl_vertex_program *vp = (struct gl_vertex_program *)prog; error = st_translate_program(st->ctx, PIPE_SHADER_VERTEX, @@ -660,7 +660,7 @@ st_translate_vertex_program(struct st_context *st, prog->glsl_to_tgsi, prog, /* inputs */ - stvp->num_inputs, + vp->num_inputs, input_to_index, NULL, /* inputSlotToAttr */ NULL, /* input semantic name */ @@ -668,7 +668,7 @@ st_translate_vertex_program(struct st_context *st, NULL, /* interp mode */ /* outputs */ num_outputs, - stvp->result_to_output, + vp->result_to_output, output_semantic_name, output_semantic_index); @@ -976,10 +976,10 @@ st_get_common_variant(struct st_context *st, v->base.st = key->st; if (prog->info.stage == MESA_SHADER_VERTEX) { - struct st_vertex_program *stvp = (struct st_vertex_program *)prog; + struct gl_vertex_program *vp = (struct gl_vertex_program *)prog; v->vert_attrib_mask = - stvp->vert_attrib_mask | + vp->vert_attrib_mask | (key->passthrough_edgeflags ? VERT_BIT_EDGEFLAG : 0); } diff --git a/src/mesa/state_tracker/st_program.h b/src/mesa/state_tracker/st_program.h index 9f1eac30e80..9ee2a9485f4 100644 --- a/src/mesa/state_tracker/st_program.h +++ b/src/mesa/state_tracker/st_program.h @@ -247,17 +247,6 @@ struct st_common_variant GLbitfield vert_attrib_mask; }; -struct st_vertex_program -{ - struct gl_program Base; - - uint32_t vert_attrib_mask; /**< mask of sourced vertex attribs */ - ubyte num_inputs; - - /** Maps VARYING_SLOT_x to slot */ - ubyte result_to_output[VARYING_SLOT_MAX]; -}; - static inline struct st_common_variant * st_common_variant(struct st_variant *v) { diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c index 93c236ab781..965379763a4 100644 --- a/src/mesa/state_tracker/st_shader_cache.c +++ b/src/mesa/state_tracker/st_shader_cache.c @@ -94,12 +94,12 @@ st_serialise_ir_program(struct gl_context *ctx, struct gl_program *prog, blob_init(&blob); if (prog->info.stage == MESA_SHADER_VERTEX) { - struct st_vertex_program *stvp = (struct st_vertex_program *)prog; + struct gl_vertex_program *vp = (struct gl_vertex_program *)prog; - blob_write_uint32(&blob, stvp->num_inputs); - blob_write_uint32(&blob, stvp->vert_attrib_mask); - blob_write_bytes(&blob, stvp->result_to_output, - sizeof(stvp->result_to_output)); + blob_write_uint32(&blob, vp->num_inputs); + blob_write_uint32(&blob, vp->vert_attrib_mask); + blob_write_bytes(&blob, vp->result_to_output, + sizeof(vp->result_to_output)); } if (prog->info.stage == MESA_SHADER_VERTEX || @@ -189,11 +189,11 @@ st_deserialise_ir_program(struct gl_context *ctx, st_release_variants(st, prog); if (prog->info.stage == MESA_SHADER_VERTEX) { - struct st_vertex_program *stvp = (struct st_vertex_program *)prog; - stvp->num_inputs = blob_read_uint32(&blob_reader); - stvp->vert_attrib_mask = blob_read_uint32(&blob_reader); - blob_copy_bytes(&blob_reader, (uint8_t *) stvp->result_to_output, - sizeof(stvp->result_to_output)); + struct gl_vertex_program *vp = (struct gl_vertex_program *)prog; + vp->num_inputs = blob_read_uint32(&blob_reader); + vp->vert_attrib_mask = blob_read_uint32(&blob_reader); + blob_copy_bytes(&blob_reader, (uint8_t *) vp->result_to_output, + sizeof(vp->result_to_output)); } if (prog->info.stage == MESA_SHADER_VERTEX ||