v3d: fill logicop_func in the fragment shader key when precompiling shaders
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 19 Jul 2019 07:54:54 +0000 (09:54 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Mon, 22 Jul 2019 06:05:59 +0000 (08:05 +0200)
Since logicop_func 0 is PIPE_LOGIOP_CLEAR, we were trigger lowerinng
of logic ops on precompiled shaders, which we don't want to do. Also, this
had the side effect of making shader-db crash, as during this lowering we
would try to read the color format swizzle information from the fragment shader
key that we don't populate in precompiled shaders because right now we only
need it when logic operations are enabled.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/v3d/v3d_program.c

index 78c41c8efd1227aa012fd58f51083ef141ea1008..bfd1ebdf7def1f95b540e18622ddb6b6a5b35f92 100644 (file)
@@ -200,6 +200,8 @@ v3d_shader_precompile(struct v3d_context *v3d,
                         }
                 }
 
+                key.logicop_func = PIPE_LOGICOP_COPY;
+
                 v3d_setup_shared_precompile_key(so, &key.base);
                 v3d_get_compiled_shader(v3d, &key.base, sizeof(key));
         } else {