memset(&prog, 0, sizeof(prog));
memset(&state, 0, sizeof(state));
state.prog = &prog;
+ state.mem_ctx = program;
if (!_mesa_parse_arb_program(ctx, target, (const GLubyte*) str, len,
&state)) {
return;
}
- free(program->String);
+ ralloc_free(program->String);
/* Copy the relevant contents of the arb_program struct into the
* fragment_program struct.
program->SamplersUsed |= (1 << i);
}
program->ShadowSamplers = prog.ShadowSamplers;
- program->OriginUpperLeft = state.option.OriginUpperLeft;
- program->PixelCenterInteger = state.option.PixelCenterInteger;
+ program->info.fs.origin_upper_left = state.option.OriginUpperLeft;
+ program->info.fs.pixel_center_integer = state.option.PixelCenterInteger;
program->info.fs.uses_discard = state.fragment.UsesKill;
- free(program->arb.Instructions);
+ ralloc_free(program->arb.Instructions);
program->arb.Instructions = prog.arb.Instructions;
if (program->Parameters)
if (!_mesa_parse_arb_program(ctx, target, (const GLubyte*) str, len,
&state)) {
- ralloc_free(prog.arb.Instructions);
- ralloc_free(prog.String);
_mesa_error(ctx, GL_INVALID_OPERATION, "glProgramString(bad program)");
return;
}
- if ((ctx->_Shader->Flags & GLSL_NO_OPT) == 0)
- _mesa_optimize_program(ctx, &prog, program);
+ _mesa_optimize_program(&prog, program);
ralloc_free(program->String);