diff options
Diffstat (limited to 'src/gallium/drivers/r300/r300_vs_draw.c')
-rw-r--r-- | src/gallium/drivers/r300/r300_vs_draw.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/gallium/drivers/r300/r300_vs_draw.c b/src/gallium/drivers/r300/r300_vs_draw.c index 0975e86fa6f..73002da648d 100644 --- a/src/gallium/drivers/r300/r300_vs_draw.c +++ b/src/gallium/drivers/r300/r300_vs_draw.c @@ -314,7 +314,7 @@ void r300_draw_init_vertex_shader(struct r300_context *r300, struct draw_context *draw = r300->draw; struct tgsi_shader_info info; struct vs_transform_context transform; - const uint newLen = tgsi_num_tokens(vs->state.tokens) + 100 /* XXX */; + const uint newLen = tgsi_num_tokens(vs->state.tokens) + 100; struct pipe_shader_state new_vs = { .type = PIPE_SHADER_IR_TGSI, .tokens = tgsi_alloc_tokens(newLen) @@ -323,9 +323,6 @@ void r300_draw_init_vertex_shader(struct r300_context *r300, tgsi_scan_shader(vs->state.tokens, &info); - if (new_vs.tokens == NULL) - return; - memset(&transform, 0, sizeof(transform)); for (i = 0; i < ARRAY_SIZE(transform.out_remap); i++) { transform.out_remap[i] = i; @@ -350,9 +347,9 @@ void r300_draw_init_vertex_shader(struct r300_context *r300, } } - tgsi_transform_shader(vs->state.tokens, - (struct tgsi_token*)new_vs.tokens, - newLen, &transform.base); + new_vs.tokens = tgsi_transform_shader(vs->state.tokens, newLen, &transform.base); + if (!new_vs.tokens) + return; #if 0 printf("----------------------------------------------\norig shader:\n"); |