diff options
-rw-r--r-- | src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 20 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_glsl_to_tgsi.h | 7 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_program.c | 19 |
3 files changed, 15 insertions, 31 deletions
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 5322903b93a..cf45a72c0c4 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -7470,25 +7470,17 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) } void -st_translate_stream_output_info(glsl_to_tgsi_visitor *glsl_to_tgsi, - const ubyte outputMapping[], - struct pipe_stream_output_info *so) -{ - if (!glsl_to_tgsi->shader_program->last_vert_prog) - return; - - struct gl_transform_feedback_info *info = - glsl_to_tgsi->shader_program->last_vert_prog->sh.LinkedTransformFeedback; - st_translate_stream_output_info2(info, outputMapping, so); -} - -void -st_translate_stream_output_info2(struct gl_transform_feedback_info *info, +st_translate_stream_output_info(struct gl_transform_feedback_info *info, const ubyte outputMapping[], struct pipe_stream_output_info *so) { unsigned i; + if (!info) { + so->num_outputs = 0; + return; + } + for (i = 0; i < info->NumOutputs; i++) { so->output[i].register_index = outputMapping[info->Outputs[i].OutputRegister]; diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.h b/src/mesa/state_tracker/st_glsl_to_tgsi.h index 277bc947e25..c8a87abca41 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.h +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.h @@ -61,12 +61,7 @@ void free_glsl_to_tgsi_visitor(struct glsl_to_tgsi_visitor *v); GLboolean st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog); void -st_translate_stream_output_info(struct glsl_to_tgsi_visitor *glsl_to_tgsi, - const ubyte outputMapping[], - struct pipe_stream_output_info *so); - -void -st_translate_stream_output_info2(struct gl_transform_feedback_info *info, +st_translate_stream_output_info(struct gl_transform_feedback_info *info, const ubyte outputMapping[], struct pipe_stream_output_info *so); diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index af86c47b945..3bc7b0649c4 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -458,12 +458,9 @@ st_translate_vertex_program(struct st_context *st, } if (stvp->shader_program) { - struct gl_program *prog = stvp->shader_program->last_vert_prog; - if (prog) { - st_translate_stream_output_info2(prog->sh.LinkedTransformFeedback, - stvp->result_to_output, - &stvp->tgsi.stream_output); - } + st_translate_stream_output_info(stvp->Base.sh.LinkedTransformFeedback, + stvp->result_to_output, + &stvp->tgsi.stream_output); st_store_ir_in_disk_cache(st, &stvp->Base, true); return true; @@ -505,7 +502,7 @@ st_translate_vertex_program(struct st_context *st, output_semantic_name, output_semantic_index); - st_translate_stream_output_info(stvp->glsl_to_tgsi, + st_translate_stream_output_info(stvp->Base.sh.LinkedTransformFeedback, stvp->result_to_output, &stvp->tgsi.stream_output); @@ -1417,7 +1414,7 @@ st_translate_program_common(struct st_context *st, } ureg_destroy(ureg); - st_translate_stream_output_info(glsl_to_tgsi, + st_translate_stream_output_info(prog->sh.LinkedTransformFeedback, outputMapping, &out_state->stream_output); @@ -1464,9 +1461,9 @@ st_translate_program_stream_output(struct gl_program *prog, } } - st_translate_stream_output_info2(prog->sh.LinkedTransformFeedback, - outputMapping, - stream_output); + st_translate_stream_output_info(prog->sh.LinkedTransformFeedback, + outputMapping, + stream_output); } /** |