llvmpipe: fix check for a no-op shader
authorBrian Paul <brianp@vmware.com>
Fri, 18 May 2018 01:57:21 +0000 (19:57 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 18 May 2018 15:09:41 +0000 (09:09 -0600)
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 <sroland@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/drivers/llvmpipe/lp_state_fs.c

index 74b8d4dd96eeb46c6ad013bdadee99a774d11935..91b68e7c96e7ab2106d67bfa44ce72485b2e9500 100644 (file)
@@ -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 &&