{
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;
#if TNL_FIXED_FUNCTION_PROGRAM
if (!program) {
- program = &ctx->_TnlProgram;
+ program = ctx->_TnlProgram;
}
#endif
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;
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;