i965: Always compile fp64 funcs when needed
authorMatt Turner <mattst88@gmail.com>
Fri, 25 Jan 2019 20:27:08 +0000 (12:27 -0800)
committerMatt Turner <mattst88@gmail.com>
Sat, 26 Jan 2019 18:33:22 +0000 (10:33 -0800)
commita7d629a59021cb1a013a8a58acd9187ca0b6c9ce
tree8130297f9a5f2772ab2450f8ec7521f2c7b9e112
parent18b467c0661d873554df0f6b1b359aa3459d25ca
i965: Always compile fp64 funcs when needed

Compilation of user-specified shaders with software fp64 works by
compiling on demand an "fp64-funcs" shader implementing various fp64
operations and then linking it into the "user shader".

In

   commit 64b8c86d37ebb1e1d286c69d642d52b7bcf051d3
   Author: Timothy Arceri <tarceri@itsqueeze.com>
   Date:   Thu Jan 17 17:16:29 2019 +1100

       glsl: be much more aggressive when skipping shader compilation

we changed the behavior of the shader cache to skip compilation earlier
when we get a cache hit.

After the aforementioned commit, compiling a user program using fp64
would store into the cache an entry for the fp64-funcs shader.
Subsequent compilations of uncached user shaders using fp64 would fail
in compile_fp64_funcs() after finding a cache entry for the fp64-funcs,
but being unprepared to read from the cache.

It's unclear to me how to retrieve the cached NIR of the fp64-funcs (if
it even is cached), so just call _mesa_glsl_compile_shader() with
force_recompile=true in order to ensure we generate the fp64-funcs
successfully.

Tested-by: Mark Janes <mark.a.janes@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_program.c