static void build_new_tnl_program( const struct state_key *key, struct gl_vertex_program *program, GLuint max_temps) { struct tnl_program p; _mesa_memset(&p, 0, sizeof(p)); p.state = key; p.program = program; p.eye_position = undef; p.eye_position_normalized = undef; p.eye_normal = undef; p.identity = undef; p.temp_in_use = 0; p.nr_instructions = 16; if (max_temps >= sizeof(int) * 8) p.temp_reserved = 0; else p.temp_reserved = ~((1<<max_temps)-1); p.program->Base.Instructions = _mesa_malloc(sizeof(struct prog_instruction) * p.nr_instructions); p.program->Base.String = 0; p.program->Base.NumInstructions = p.program->Base.NumTemporaries = p.program->Base.NumParameters = p.program->Base.NumAttributes = p.program->Base.NumAddressRegs = 0; p.program->Base.Parameters = _mesa_new_parameter_list(); p.program->Base.InputsRead = 0; p.program->Base.OutputsWritten = 0; build_tnl_program( &p ); }
static void create_new_program( const struct state_key *key, struct gl_program *program, GLboolean mvp_with_dp4, GLuint max_temps) { struct tnl_program p; memset(&p, 0, sizeof(p)); p.state = key; p.program = program; p.eye_position = undef; p.eye_position_z = undef; p.eye_position_normalized = undef; p.transformed_normal = undef; p.identity = undef; p.temp_in_use = 0; p.mvp_with_dp4 = mvp_with_dp4; if (max_temps >= sizeof(int) * 8) p.temp_reserved = 0; else p.temp_reserved = ~((1<<max_temps)-1); /* Start by allocating 32 instructions. * If we need more, we'll grow the instruction array as needed. */ p.max_inst = 32; p.program->arb.Instructions = rzalloc_array(program, struct prog_instruction, p.max_inst); p.program->String = NULL; p.program->arb.NumInstructions = p.program->arb.NumTemporaries = p.program->arb.NumParameters = p.program->arb.NumAttributes = p.program->arb.NumAddressRegs = 0; p.program->Parameters = _mesa_new_parameter_list(); p.program->info.inputs_read = 0; p.program->info.outputs_written = 0; build_tnl_program( &p ); }