X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fllvmpipe%2Flp_state_vs.c;h=96a00189b55af59d7a43e421e4e74e1fb94a7a10;hb=8147c4a4a58a9328a07fd358b54622de0d01c374;hp=7efb81b5535882672b3fb958c91d0645e065cca7;hpb=877128505431adaf817dc8069172ebe4a1cdf5d8;p=mesa.git diff --git a/src/gallium/drivers/llvmpipe/lp_state_vs.c b/src/gallium/drivers/llvmpipe/lp_state_vs.c index 7efb81b5535..96a00189b55 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_vs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_vs.c @@ -43,36 +43,19 @@ llvmpipe_create_vs_state(struct pipe_context *pipe, const struct pipe_shader_state *templ) { struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe); - struct lp_vertex_shader *state; + struct draw_vertex_shader *vs; - state = CALLOC_STRUCT(lp_vertex_shader); - if (state == NULL ) - goto fail; - - /* copy shader tokens, the ones passed in will go away. - */ - state->shader.tokens = tgsi_dup_tokens(templ->tokens); - if (state->shader.tokens == NULL) - goto fail; - - state->draw_data = draw_create_vertex_shader(llvmpipe->draw, templ); - if (state->draw_data == NULL) - goto fail; + vs = draw_create_vertex_shader(llvmpipe->draw, templ); + if (!vs) { + return NULL; + } if (LP_DEBUG & DEBUG_TGSI) { - debug_printf("llvmpipe: Create vertex shader %p:\n", (void *) state); + debug_printf("llvmpipe: Create vertex shader %p:\n", (void *) vs); tgsi_dump(templ->tokens, 0); } - return state; - -fail: - if (state) { - FREE( (void *)state->shader.tokens ); - FREE( state->draw_data ); - FREE( state ); - } - return NULL; + return vs; } @@ -80,13 +63,12 @@ static void llvmpipe_bind_vs_state(struct pipe_context *pipe, void *_vs) { struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe); - const struct lp_vertex_shader *vs = (const struct lp_vertex_shader *)_vs; + struct draw_vertex_shader *vs = (struct draw_vertex_shader *)_vs; if (llvmpipe->vs == vs) return; - draw_bind_vertex_shader(llvmpipe->draw, - vs ? vs->draw_data : NULL); + draw_bind_vertex_shader(llvmpipe->draw, vs); llvmpipe->vs = vs; @@ -95,16 +77,12 @@ llvmpipe_bind_vs_state(struct pipe_context *pipe, void *_vs) static void -llvmpipe_delete_vs_state(struct pipe_context *pipe, void *vs) +llvmpipe_delete_vs_state(struct pipe_context *pipe, void *_vs) { struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe); + struct draw_vertex_shader *vs = (struct draw_vertex_shader *)_vs; - struct lp_vertex_shader *state = - (struct lp_vertex_shader *)vs; - - draw_delete_vertex_shader(llvmpipe->draw, state->draw_data); - FREE( (void *)state->shader.tokens ); - FREE( state ); + draw_delete_vertex_shader(llvmpipe->draw, vs); }