r600: Fix ordering of SSBO loads versus texturing.

The two types of instructions get added to the same CF list, but not the
same instr list within the CF list.  So, if you SSBO fetched your
texcoord, the emission of the SSBO fetch would come *after* the texcoord
fetch.

Avoids regressions when NIR-to-TGSI starts optimizing more.

Cc: mesa-stable
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14429>
This commit is contained in:
Emma Anholt 2022-01-05 14:53:42 -08:00
parent 6d6043e628
commit ef151d24ab

View file

@ -1462,6 +1462,12 @@ int r600_bytecode_add_tex(struct r600_bytecode *bc, const struct r600_bytecode_t
break; break;
} }
} }
/* vtx instrs get inserted after tex, so make sure we aren't moving the tex
* before (say) the instr fetching the texcoord.
*/
if (!list_is_empty(&bc->cf_last->vtx))
bc->force_add_cf = 1;
/* slight hack to make gradients always go into same cf */ /* slight hack to make gradients always go into same cf */
if (ntex->op == FETCH_OP_SET_GRADIENTS_H) if (ntex->op == FETCH_OP_SET_GRADIENTS_H)
bc->force_add_cf = 1; bc->force_add_cf = 1;