nv50,nvc0: zero out program struct on program_destroy

Prevent any state from carrying over to a new translation in cases
where we assume that data is still zero from initial calloc (these
would require us to do individual zeroing before translation which
would be more code).
This commit is contained in:
Christoph Bumiller 2012-01-11 18:50:15 +01:00
parent 58dc1b28d1
commit f6b994b305
2 changed files with 13 additions and 3 deletions

View file

@ -677,6 +677,9 @@ out:
void
nv50_program_destroy(struct nv50_context *nv50, struct nv50_program *p)
{
const struct pipe_shader_state pipe = p->pipe;
const ubyte type = p->type;
if (p->res)
nouveau_resource_free(&p->res);
@ -686,5 +689,8 @@ nv50_program_destroy(struct nv50_context *nv50, struct nv50_program *p)
if (p->fixups)
FREE(p->fixups);
p->translated = FALSE;
memset(p, 0, sizeof(*p));
p->pipe = pipe;
p->type = type;
}

View file

@ -711,6 +711,9 @@ nvc0_program_library_upload(struct nvc0_context *nvc0)
void
nvc0_program_destroy(struct nvc0_context *nvc0, struct nvc0_program *prog)
{
const struct pipe_shader_state pipe = prog->pipe;
const ubyte type = prog->type;
if (prog->res)
nouveau_resource_free(&prog->res);
@ -726,7 +729,8 @@ nvc0_program_destroy(struct nvc0_context *nvc0, struct nvc0_program *prog)
FREE(prog->tfb);
}
memset(prog->hdr, 0, sizeof(prog->hdr));
memset(prog, 0, sizeof(*prog));
prog->translated = FALSE;
prog->pipe = pipe;
prog->type = type;
}