summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/state_tracker/st_glsl_to_tgsi.cpp20
-rw-r--r--src/mesa/state_tracker/st_glsl_to_tgsi.h7
-rw-r--r--src/mesa/state_tracker/st_program.c19
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);
}
/**