summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/xorg/xorg_exa_tgsi.c
diff options
context:
space:
mode:
authorZack Rusin <zackr@vmware.com>2009-10-10 04:45:41 -0400
committerZack Rusin <zackr@vmware.com>2009-10-13 12:25:13 -0400
commit89bb33fb20e69d9fa5325da10abf31d61d51d371 (patch)
tree10ddee2def6dfc0071eb186658869b228c2fe745 /src/gallium/state_trackers/xorg/xorg_exa_tgsi.c
parenteefecf5d2a5bf9fc0f0f7919faf1747b0add8d6f (diff)
st/xorg: fix and enable by default xrender acceleration
src in mask was broken
Diffstat (limited to 'src/gallium/state_trackers/xorg/xorg_exa_tgsi.c')
-rw-r--r--src/gallium/state_trackers/xorg/xorg_exa_tgsi.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_exa_tgsi.c b/src/gallium/state_trackers/xorg/xorg_exa_tgsi.c
index 8ce06e374a..8c9b674b4b 100644
--- a/src/gallium/state_trackers/xorg/xorg_exa_tgsi.c
+++ b/src/gallium/state_trackers/xorg/xorg_exa_tgsi.c
@@ -67,9 +67,19 @@ src_in_mask(struct ureg_program *ureg,
struct ureg_src src,
struct ureg_src mask)
{
- /* MUL dst, src, mask.wwww */
+#if 0
+ /* MUL dst, src, mask.a */
ureg_MUL(ureg, dst, src,
ureg_scalar(mask, TGSI_SWIZZLE_W));
+#else
+ /* MOV dst, src */
+ /* MUL dst.a, src.a, mask.a */
+ ureg_MOV(ureg, dst, src);
+ ureg_MUL(ureg,
+ ureg_writemask(dst, TGSI_WRITEMASK_W),
+ ureg_scalar(src, TGSI_SWIZZLE_W),
+ ureg_scalar(mask, TGSI_SWIZZLE_W));
+#endif
}
static struct ureg_src
@@ -271,7 +281,7 @@ create_vs(struct pipe_context *pipe,
if (has_mask) {
src = ureg_DECL_vs_input(ureg, input_slot++);
- dst = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 2);
+ dst = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 1);
ureg_MOV(ureg, dst, src);
}