summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nv50/nv50_program.c
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2012-01-11 18:50:15 +0100
committerChristoph Bumiller <[email protected]>2012-01-11 20:26:47 +0100
commitf6b994b3058d1c6cd7c28eef522c08df3d83bea7 (patch)
tree4cccab3923631e35b2208050d434c459f45ac0ce /src/gallium/drivers/nv50/nv50_program.c
parent58dc1b28d1ef4d1931c52b079d304f2e1546329d (diff)
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).
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_program.c')
-rw-r--r--src/gallium/drivers/nv50/nv50_program.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index c8b708c02b4..c141a91eec2 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -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;
}