summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker/st_cb_feedback.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/state_tracker/st_cb_feedback.c')
-rw-r--r--src/mesa/state_tracker/st_cb_feedback.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_cb_feedback.c b/src/mesa/state_tracker/st_cb_feedback.c
index db682cc..d624d9f 100644
--- a/src/mesa/state_tracker/st_cb_feedback.c
+++ b/src/mesa/state_tracker/st_cb_feedback.c
@@ -46,6 +46,7 @@
#include "st_context.h"
#include "st_draw.h"
#include "st_cb_feedback.h"
+#include "st_program.h"
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
@@ -291,13 +292,16 @@ st_RenderMode(struct gl_context *ctx, GLenum newMode )
vbo_set_draw_func(ctx, st_feedback_draw_vbo);
}
else {
+ struct gl_vertex_program *vp = st->ctx->VertexProgram._Current;
+
if (!st->feedback_stage)
st->feedback_stage = draw_glfeedback_stage(ctx, draw);
draw_set_rasterize_stage(draw, st->feedback_stage);
/* Plug in new vbo draw function */
vbo_set_draw_func(ctx, st_feedback_draw_vbo);
/* need to generate/use a vertex program that emits pos/color/tex */
- st->dirty |= ST_NEW_VERTEX_PROGRAM(st);
+ if (vp)
+ st->dirty |= ST_NEW_VERTEX_PROGRAM(st, st_vertex_program(vp));
}
}