mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
draw: Make copy of the TGSI tokens.
There is no guarantee that the tokens TGSI will persist beyond the create_fs_state. The pipe driver (and therefore the draw module) is responsible for making copies of the TGSI tokens when it needs them. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
06ae4a62b1
commit
fc31f9a3f2
2 changed files with 6 additions and 2 deletions
|
|
@ -848,7 +848,7 @@ aaline_create_fs_state(struct pipe_context *pipe,
|
|||
if (aafs == NULL)
|
||||
return NULL;
|
||||
|
||||
aafs->state = *fs;
|
||||
aafs->state.tokens = tgsi_dup_tokens(fs->tokens);
|
||||
|
||||
/* pass-through */
|
||||
aafs->driver_fs = aaline->driver_create_fs_state(pipe, fs);
|
||||
|
|
@ -882,6 +882,8 @@ aaline_delete_fs_state(struct pipe_context *pipe, void *fs)
|
|||
if (aafs->aaline_fs)
|
||||
aaline->driver_delete_fs_state(pipe, aafs->aaline_fs);
|
||||
|
||||
FREE((void*)aafs->state.tokens);
|
||||
|
||||
FREE(aafs);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -834,7 +834,7 @@ aapoint_create_fs_state(struct pipe_context *pipe,
|
|||
if (aafs == NULL)
|
||||
return NULL;
|
||||
|
||||
aafs->state = *fs;
|
||||
aafs->state.tokens = tgsi_dup_tokens(fs->tokens);
|
||||
|
||||
/* pass-through */
|
||||
aafs->driver_fs = aapoint->driver_create_fs_state(pipe, fs);
|
||||
|
|
@ -868,6 +868,8 @@ aapoint_delete_fs_state(struct pipe_context *pipe, void *fs)
|
|||
if (aafs->aapoint_fs)
|
||||
aapoint->driver_delete_fs_state(pipe, aafs->aapoint_fs);
|
||||
|
||||
FREE((void*)aafs->state.tokens);
|
||||
|
||||
FREE(aafs);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue