From: Brian Paul Date: Fri, 18 May 2018 01:57:21 +0000 (-0600) Subject: llvmpipe: fix check for a no-op shader X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=42aee8f4f68d9fd3ece5ece57f23f63a60e7d1fa;p=mesa.git llvmpipe: fix check for a no-op shader The tgsi_info.num_tokens fix broke llvmpipe's detection of no-op shaders. Fix the code to check for num_instructions <= 1 instead. Fixes: 8fde9429c36b75 ("tgsi: fix incorrect tgsi_shader_info::num_tokens computation") Tested-by: Roland Scheidegger Reviewed-by: Roland Scheidegger --- diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 74b8d4dd96e..91b68e7c96e 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -2843,7 +2843,8 @@ generate_variant(struct llvmpipe_context *lp, !shader->info.base.writes_samplemask ? TRUE : FALSE; - if ((shader->info.base.num_tokens <= 1) && + /* if num_instructions == 1, it's a nop shader with only an END instruction */ + if ((shader->info.base.num_instructions <= 1) && !key->depth.enabled && !key->stencil[0].enabled) { variant->ps_inv_multiplier = 0; } else { @@ -3478,7 +3479,8 @@ llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe) boolean llvmpipe_rasterization_disabled(struct llvmpipe_context *lp) { - boolean null_fs = !lp->fs || lp->fs->info.base.num_tokens <= 1; + /* if num_instructions == 1, it's a nop shader with only an END instruction */ + boolean null_fs = !lp->fs || lp->fs->info.base.num_instructions <= 1; return (null_fs && !lp->depth_stencil->depth.enabled &&