From 42aee8f4f68d9fd3ece5ece57f23f63a60e7d1fa Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 17 May 2018 19:57:21 -0600 Subject: [PATCH] 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 --- src/gallium/drivers/llvmpipe/lp_state_fs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 && -- 2.30.2