summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/xorg/xorg_composite.c
diff options
context:
space:
mode:
authorZack Rusin <zackr@vmware.com>2009-11-11 19:52:08 -0500
committerZack Rusin <zackr@vmware.com>2009-11-11 19:55:50 -0500
commit2cfbbc76e445d88bdac7dd4dd22aaf36bbc8e4cc (patch)
tree3e5160e4fa0fc0c4334d7161771a0e9bbd2299d0 /src/gallium/state_trackers/xorg/xorg_composite.c
parent493d599af4f617d52323e0368e65da29ba4638aa (diff)
st/xorg: implement repeatnone and make some code smell less like ass
Diffstat (limited to 'src/gallium/state_trackers/xorg/xorg_composite.c')
-rw-r--r--src/gallium/state_trackers/xorg/xorg_composite.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_composite.c b/src/gallium/state_trackers/xorg/xorg_composite.c
index 2689daed5f..02dc949c93 100644
--- a/src/gallium/state_trackers/xorg/xorg_composite.c
+++ b/src/gallium/state_trackers/xorg/xorg_composite.c
@@ -199,10 +199,6 @@ boolean xorg_composite_accelerated(int op,
op);
}
}
- if ((pSrcPicture && pSrcPicture->repeatType == RepeatNone) ||
- (pMaskPicture && pMaskPicture->repeatType == RepeatNone)) {
- XORG_FALLBACK("RepeatNone is not supported");
- }
return TRUE;
}
@@ -243,6 +239,9 @@ bind_shaders(struct exa_context *exa, int op,
exa->has_solid_color = FALSE;
if (pSrcPicture) {
+ if (pSrcPicture->repeatType == RepeatNone && pSrcPicture->transform)
+ fs_traits |= FS_SRC_REPEAT_NONE;
+
if (pSrcPicture->pSourcePict) {
if (pSrcPicture->pSourcePict->type == SourcePictTypeSolidFill) {
fs_traits |= FS_SOLID_FILL;
@@ -263,6 +262,8 @@ bind_shaders(struct exa_context *exa, int op,
if (pMaskPicture) {
vs_traits |= VS_MASK;
fs_traits |= FS_MASK;
+ if (pMaskPicture->repeatType == RepeatNone && pMaskPicture->transform)
+ fs_traits |= FS_MASK_REPEAT_NONE;
if (pMaskPicture->componentAlpha) {
struct xorg_composite_blend blend;
blend_for_op(&blend, op,