summaryrefslogtreecommitdiffstats
path: root/src/mesa/tnl/t_pipeline.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/tnl/t_pipeline.c')
-rw-r--r--src/mesa/tnl/t_pipeline.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/mesa/tnl/t_pipeline.c b/src/mesa/tnl/t_pipeline.c
index 82867605218..6b0ea815e2b 100644
--- a/src/mesa/tnl/t_pipeline.c
+++ b/src/mesa/tnl/t_pipeline.c
@@ -38,6 +38,7 @@
#include "t_context.h"
#include "t_pipeline.h"
#include "t_vp_build.h"
+#include "t_vertex.h"
void _tnl_install_pipeline( GLcontext *ctx,
const struct tnl_pipeline_stage **stages )
@@ -93,7 +94,7 @@ static GLuint check_input_changes( GLcontext *ctx )
}
-static void check_output_changes( GLcontext *ctx )
+static GLuint check_output_changes( GLcontext *ctx )
{
#if 0
TNLcontext *tnl = TNL_CONTEXT(ctx);
@@ -109,6 +110,10 @@ static void check_output_changes( GLcontext *ctx )
if (tnl->pipeline.output_changes)
tnl->Driver.NotifyOutputChanges( ctx, tnl->pipeline.output_changes );
+
+ return tnl->pipeline.output_changes;
+#else
+ return ~0;
#endif
}
@@ -138,10 +143,15 @@ void _tnl_run_pipeline( GLcontext *ctx )
tnl->pipeline.new_state = 0;
tnl->pipeline.input_changes = 0;
- check_output_changes( ctx );
+
+ /* Pipeline can only change its output in response to either a
+ * statechange or an input size/stride change. No other changes
+ * are allowed.
+ */
+ if (check_output_changes( ctx ))
+ _tnl_notify_pipeline_output_change( ctx );
}
-
START_FAST_MATH(__tmp);
for (i = 0; i < tnl->pipeline.nr_stages ; i++) {