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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user