st/mesa: make sure prog->info is up to date for NIR (v2)

so that info changes from pipe_screem::finalize_nir are reflected
in gl_program

v2: don't call nir_shader_gather_info again, because it crashes with freedreno

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6950>
This commit is contained in:
Marek Olšák 2020-09-28 18:18:43 -04:00 committed by Marge Bot
parent 1126b5cd2f
commit 549ae5f843

View file

@ -829,6 +829,17 @@ st_link_nir(struct gl_context *ctx,
struct gl_program *prog = shader->Program;
struct st_program *stp = st_program(prog);
/* Make sure that prog->info is in sync with nir->info, but st/mesa
* expects some of the values to be from before lowering.
*/
shader_info old_info = prog->info;
prog->info = prog->nir->info;
prog->info.num_ssbos = old_info.num_ssbos;
prog->info.num_ubos = old_info.num_ubos;
prog->info.num_abos = old_info.num_abos;
if (prog->info.stage == MESA_SHADER_VERTEX)
prog->info.inputs_read = old_info.inputs_read;
/* Initialize st_vertex_program members. */
if (shader->Stage == MESA_SHADER_VERTEX)
st_prepare_vertex_program(stp);