Module: Mesa Branch: master Commit: 54de7099115502c561f5f51095e08dc0a52c71b7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=54de7099115502c561f5f51095e08dc0a52c71b7
Author: Marek Olšák <[email protected]> Date: Tue Sep 30 16:25:18 2014 +0200 radeonsi: always compile shaders on demand The first compiled shader is sometimes useless, because the key doesn't match the key for the draw call where it's used. Reviewed-by: Michel Dänzer <[email protected]> --- src/gallium/drivers/radeonsi/si_state.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index eb25606..da5fcb0 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -2305,19 +2305,12 @@ static void *si_create_shader_state(struct pipe_context *ctx, unsigned pipe_shader_type) { struct si_shader_selector *sel = CALLOC_STRUCT(si_shader_selector); - int r; sel->type = pipe_shader_type; sel->tokens = tgsi_dup_tokens(state->tokens); sel->so = state->stream_output; tgsi_scan_shader(state->tokens, &sel->info); - r = si_shader_select(ctx, sel); - if (r) { - free(sel); - return NULL; - } - return sel; } @@ -2344,10 +2337,7 @@ static void si_bind_vs_shader(struct pipe_context *ctx, void *state) struct si_context *sctx = (struct si_context *)ctx; struct si_shader_selector *sel = state; - if (sctx->vs_shader == sel) - return; - - if (!sel || !sel->current) + if (sctx->vs_shader == sel || !sel) return; sctx->vs_shader = sel; @@ -2373,8 +2363,8 @@ static void si_bind_ps_shader(struct pipe_context *ctx, void *state) if (sctx->ps_shader == sel) return; - /* use dummy shader if supplied shader is corrupt */ - if (!sel || !sel->current) { + /* use a dummy shader if binding a NULL shader */ + if (!sel) { if (!sctx->dummy_pixel_shader) { sctx->dummy_pixel_shader = util_make_fragment_cloneinput_shader(&sctx->b.b, 0, _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
