r300-gallium: duplicate tokens in create_fs_state

This was all phoenix64's idea. Credit goes to him
This commit is contained in:
Joakim Sindholt 2009-05-12 21:41:48 +02:00
parent 723bc9452f
commit 62c0c7d81a

View file

@ -289,6 +289,7 @@ static void* r300_create_fs_state(struct pipe_context* pipe,
/* Copy state directly into shader. */
fs->state = *shader;
fs->state.tokens = tgsi_dup_tokens(shader->tokens);
tgsi_scan_shader(shader->tokens, &fs->info);
@ -317,6 +318,8 @@ static void r300_bind_fs_state(struct pipe_context* pipe, void* shader)
/* Delete fragment shader state. */
static void r300_delete_fs_state(struct pipe_context* pipe, void* shader)
{
struct r3xx_fragment_shader* fs = (struct r3xx_fragment_shader*)shader
FREE(fs->state.tokens);
FREE(shader);
}