diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/tnl/t_vb_arbprogram.c | 4 | ||||
-rw-r--r-- | src/mesa/tnl/t_vp_build.c | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/mesa/tnl/t_vb_arbprogram.c b/src/mesa/tnl/t_vb_arbprogram.c index cb7639c33d..3be82c7298 100644 --- a/src/mesa/tnl/t_vb_arbprogram.c +++ b/src/mesa/tnl/t_vb_arbprogram.c @@ -1383,7 +1383,7 @@ run_arb_vertex_program(GLcontext *ctx, struct tnl_pipeline_stage *stage) { struct vertex_program *program = (ctx->VertexProgram._Enabled ? ctx->VertexProgram.Current : - &ctx->_TnlProgram); + ctx->_TnlProgram); struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct arb_vp_machine *m = ARB_VP_MACHINE(stage); GLuint i, j, outputs = program->OutputsWritten; @@ -1479,7 +1479,7 @@ validate_vertex_program( GLcontext *ctx, struct tnl_pipeline_stage *stage ) #if TNL_FIXED_FUNCTION_PROGRAM if (!program) { - program = &ctx->_TnlProgram; + program = ctx->_TnlProgram; } #endif diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c index 9034fc7712..22dc595abb 100644 --- a/src/mesa/tnl/t_vp_build.c +++ b/src/mesa/tnl/t_vp_build.c @@ -1097,10 +1097,14 @@ void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx ) if (ctx->VertexProgram._Enabled) return; + + if (!ctx->_TnlProgram) + ctx->_TnlProgram = (struct vertex_program *) + ctx->Driver.NewProgram(ctx, GL_VERTEX_PROGRAM_ARB, 0); memset(&p, 0, sizeof(p)); p.ctx = ctx; - p.program = &ctx->_TnlProgram; + p.program = ctx->_TnlProgram; p.eye_position = undef; p.eye_position_normalized = undef; @@ -1122,7 +1126,7 @@ void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx ) p.program->Base.NumAttributes = p.program->Base.NumAddressRegs = 0; if (p.program->Parameters) _mesa_free_parameter_list(p.program->Parameters); - p.program->Parameters = _mesa_new_parameter_list (); + p.program->Parameters = _mesa_new_parameter_list(); p.program->InputsRead = 0; p.program->OutputsWritten = 0; |