summaryrefslogtreecommitdiff
path: root/src/exa_wm_write.g4a
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2008-04-09 09:30:35 -0500
committerKeith Packard <keithp@keithp.com>2008-04-10 16:58:11 -0500
commitb01d582e23fc99e32bc47a395e9caa366731372a (patch)
treec5b5fbb2e92f92dc85fe638686dbc81afd848583 /src/exa_wm_write.g4a
parent3fc3d1a701bae257b70aa7b7654c722f30e71399 (diff)
Revert "Compute pixel values directly into data port"
This reverts commit 346cf57deabb4c336612df4c13650a87b5ef6775. Mixing randr transforms and video caused screen corruption for Render operations. No, I don't understand why.
Diffstat (limited to 'src/exa_wm_write.g4a')
-rw-r--r--src/exa_wm_write.g4a18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/exa_wm_write.g4a b/src/exa_wm_write.g4a
index c46023e8..b16e6497 100644
--- a/src/exa_wm_write.g4a
+++ b/src/exa_wm_write.g4a
@@ -27,6 +27,24 @@
include(`exa_wm.g4i')
+/*
+ * Prepare data in m2-m5 for subspan(1,0), m6-m9 for subspan(3,2),
+ *
+ * Note that the SIMD16 write message takes data for the first
+ * two sub-spans followed by the data for the second two sub-spans
+ * instead of having the two sub-spans interleaved by channel. Weird.
+ */
+
+mov (8) data_port_r_01<1>F src_sample_r_01<8,8,1>F { align1 };
+mov (8) data_port_g_01<1>F src_sample_g_01<8,8,1>F { align1 };
+mov (8) data_port_b_01<1>F src_sample_b_01<8,8,1>F { align1 };
+mov (8) data_port_a_01<1>F src_sample_a_01<8,8,1>F { align1 };
+
+mov (8) data_port_r_23<1>F src_sample_r_23<8,8,1>F { align1 };
+mov (8) data_port_g_23<1>F src_sample_g_23<8,8,1>F { align1 };
+mov (8) data_port_b_23<1>F src_sample_b_23<8,8,1>F { align1 };
+mov (8) data_port_a_23<1>F src_sample_a_23<8,8,1>F { align1 };
+
/* m0, m1 are all direct passed by PS thread payload */
mov (8) data_port_msg_1<1>UD g1<8,8,1>UD { align1 };