From cc6aa1d161280f10ded7834d1ec2413bc97589fe Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Thu, 3 Nov 2016 09:18:17 +1100 Subject: st/mesa/r200/i915/i965: use rzalloc() to create gl_program This allows us to use ralloc_parent() to see which data structure owns shader_info which allows us to fix a regression in nir_sweep(). This will also allow us to move some fields from gl_linked_shader to gl_program, which will allow us to do some clean-ups like storing gl_program directly in the CurrentProgram array in gl_pipeline_object enabling some small validation optimisations at draw time. Also it is error prone to depend on the gl_linked_shader for programs in current use because a failed linking attempt will free infomation about the current program. In i965 we could be trying to recompile a shader variant but may have lost some required fields. Reviewed-by: Eric Anholt --- src/mesa/drivers/dri/r200/r200_vertprog.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers/dri/r200') diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.c b/src/mesa/drivers/dri/r200/r200_vertprog.c index 3f1d53e7270..5965c6e8048 100644 --- a/src/mesa/drivers/dri/r200/r200_vertprog.c +++ b/src/mesa/drivers/dri/r200/r200_vertprog.c @@ -1203,11 +1203,12 @@ r200NewProgram(struct gl_context *ctx, GLenum target, GLuint id) { switch(target){ case GL_VERTEX_PROGRAM_ARB: { - struct r200_vertex_program *vp = CALLOC_STRUCT(r200_vertex_program); + struct r200_vertex_program *vp = rzalloc(NULL, + struct r200_vertex_program); return _mesa_init_gl_program(&vp->mesa_program, target, id); } case GL_FRAGMENT_PROGRAM_ARB: { - struct gl_program *prog = CALLOC_STRUCT(gl_program); + struct gl_program *prog = rzalloc(NULL, struct gl_program); return _mesa_init_gl_program(prog, target, id); } default: -- cgit v1.2.3