i965: Serialize nir later in the linking process
Fixes MESA_GLSL=cache_fb with piglit
tests/spec/glsl-1.50/execution/geometry/clip-distance-vs-gs-out.shader_test
Fixes: 0610a624a1
i965/link: Serialize program to nir after linking for shader cache
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103988
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
d93fabb013
commit
fc033742d2
|
@ -302,15 +302,6 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
|
|||
NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo,
|
||||
prog->nir->info.num_abos);
|
||||
|
||||
if (brw->ctx.Cache) {
|
||||
struct blob writer;
|
||||
blob_init(&writer);
|
||||
nir_serialize(&writer, prog->nir);
|
||||
prog->driver_cache_blob = ralloc_size(NULL, writer.size);
|
||||
memcpy(prog->driver_cache_blob, writer.data, writer.size);
|
||||
prog->driver_cache_blob_size = writer.size;
|
||||
}
|
||||
|
||||
infos[stage] = &prog->nir->info;
|
||||
|
||||
update_xfb_info(prog->sh.LinkedTransformFeedback, infos[stage]);
|
||||
|
@ -357,6 +348,22 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
|
|||
}
|
||||
}
|
||||
|
||||
if (brw->ctx.Cache) {
|
||||
for (stage = 0; stage < ARRAY_SIZE(shProg->_LinkedShaders); stage++) {
|
||||
struct gl_linked_shader *shader = shProg->_LinkedShaders[stage];
|
||||
if (!shader)
|
||||
continue;
|
||||
|
||||
struct gl_program *prog = shader->Program;
|
||||
struct blob writer;
|
||||
blob_init(&writer);
|
||||
nir_serialize(&writer, prog->nir);
|
||||
prog->driver_cache_blob = ralloc_size(NULL, writer.size);
|
||||
memcpy(prog->driver_cache_blob, writer.data, writer.size);
|
||||
prog->driver_cache_blob_size = writer.size;
|
||||
}
|
||||
}
|
||||
|
||||
if (brw->precompile && !brw_shader_precompile(ctx, shProg))
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Reference in New Issue