From 549ae5f84375dfadb86cfd465f0103acfae3249f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 28 Sep 2020 18:18:43 -0400 Subject: [PATCH] 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 Part-of: --- src/mesa/state_tracker/st_glsl_to_nir.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index 451ec07..91eaf8e 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -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); -- 2.7.4