mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 13:28:06 +02:00
nir: fix nir_opt_copy_prop_vars() for arrays of arrays
Previously we only incremented the guide for a single
dimension/wildcard.
V2: rework logic to avoid code duplication
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit 3f0fb23b03)
This commit is contained in:
parent
29e816b9f2
commit
ca17d32544
1 changed files with 6 additions and 6 deletions
|
|
@ -469,8 +469,8 @@ specialize_wildcards(nir_deref_var *deref,
|
||||||
nir_deref_var *ret = nir_deref_var_create(mem_ctx, deref->var);
|
nir_deref_var *ret = nir_deref_var_create(mem_ctx, deref->var);
|
||||||
|
|
||||||
nir_deref *deref_tail = deref->deref.child;
|
nir_deref *deref_tail = deref->deref.child;
|
||||||
nir_deref *guide_tail = guide->deref.child;
|
nir_deref *guide_tail = &guide->deref;
|
||||||
nir_deref *spec_tail = specific->deref.child;
|
nir_deref *spec_tail = &specific->deref;
|
||||||
nir_deref *ret_tail = &ret->deref;
|
nir_deref *ret_tail = &ret->deref;
|
||||||
while (deref_tail) {
|
while (deref_tail) {
|
||||||
switch (deref_tail->deref_type) {
|
switch (deref_tail->deref_type) {
|
||||||
|
|
@ -495,14 +495,14 @@ specialize_wildcards(nir_deref_var *deref,
|
||||||
* the entry deref to find its corresponding wildcard and fill
|
* the entry deref to find its corresponding wildcard and fill
|
||||||
* this slot in with the value from the src.
|
* this slot in with the value from the src.
|
||||||
*/
|
*/
|
||||||
while (guide_tail) {
|
while (guide_tail->child) {
|
||||||
|
guide_tail = guide_tail->child;
|
||||||
|
spec_tail = spec_tail->child;
|
||||||
|
|
||||||
if (guide_tail->deref_type == nir_deref_type_array &&
|
if (guide_tail->deref_type == nir_deref_type_array &&
|
||||||
nir_deref_as_array(guide_tail)->deref_array_type ==
|
nir_deref_as_array(guide_tail)->deref_array_type ==
|
||||||
nir_deref_array_type_wildcard)
|
nir_deref_array_type_wildcard)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
guide_tail = guide_tail->child;
|
|
||||||
spec_tail = spec_tail->child;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nir_deref_array *spec_arr = nir_deref_as_array(spec_tail);
|
nir_deref_array *spec_arr = nir_deref_as_array(spec_tail);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue