projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pan/mdg: Mask spills from texture write
[mesa.git]
/
src
/
panfrost
/
midgard
/
midgard_ra.c
diff --git
a/src/panfrost/midgard/midgard_ra.c
b/src/panfrost/midgard/midgard_ra.c
index 1b8c8c3d2de79ee32052324025f72f466ca8ba99..b06eb97ab8ec77f96e3126fc9bb0416a8fb9ca1a 100644
(file)
--- a/
src/panfrost/midgard/midgard_ra.c
+++ b/
src/panfrost/midgard/midgard_ra.c
@@
-855,9
+855,17
@@
mir_spill_register(
midgard_instruction st;
midgard_instruction st;
+ /* Note: it's important to match the mask of the spill
+ * with the mask of the instruction whose destination
+ * we're spilling, or otherwise we'll read invalid
+ * components and can fail RA in a subsequent iteration
+ */
+
if (is_special_w) {
st = v_mov(spill_node, spill_slot);
st.no_spill |= (1 << spill_class);
if (is_special_w) {
st = v_mov(spill_node, spill_slot);
st.no_spill |= (1 << spill_class);
+ st.mask = ins->mask;
+ st.dest_type = st.src_types[0] = ins->dest_type;
} else {
ins->dest = spill_index++;
ins->no_spill |= (1 << spill_class);
} else {
ins->dest = spill_index++;
ins->no_spill |= (1 << spill_class);