st/xorg: fix most of the composition modes

This commit is contained in:
Zack Rusin
2009-10-11 06:08:42 -04:00
parent a82fc97c64
commit 074e069910
@@ -22,7 +22,7 @@ struct xorg_composite_blend {
#define BLEND_OP_OVER 3
static const struct xorg_composite_blend xorg_blends[] = {
{ PictOpClear,
PIPE_BLENDFACTOR_CONST_COLOR, PIPE_BLENDFACTOR_CONST_ALPHA,
PIPE_BLENDFACTOR_ZERO, PIPE_BLENDFACTOR_ZERO,
PIPE_BLENDFACTOR_ZERO, PIPE_BLENDFACTOR_ZERO },
{ PictOpSrc,
@@ -34,20 +34,44 @@ static const struct xorg_composite_blend xorg_blends[] = {
PIPE_BLENDFACTOR_ONE, PIPE_BLENDFACTOR_ONE },
{ PictOpOver,
PIPE_BLENDFACTOR_SRC_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_ONE, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_INV_SRC_ALPHA, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpOverReverse,
PIPE_BLENDFACTOR_SRC_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_INV_SRC_ALPHA, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
PIPE_BLENDFACTOR_INV_DST_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_ONE, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpIn,
PIPE_BLENDFACTOR_DST_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_ZERO, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpInReverse,
PIPE_BLENDFACTOR_ZERO, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_SRC_ALPHA, PIPE_BLENDFACTOR_ONE },
{ PictOpOut,
PIPE_BLENDFACTOR_INV_DST_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_ZERO, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpOutReverse,
PIPE_BLENDFACTOR_SRC_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_ZERO, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_INV_SRC_ALPHA, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpAdd,
PIPE_BLENDFACTOR_SRC_ALPHA, PIPE_BLENDFACTOR_ONE,
{ PictOpAtop,
PIPE_BLENDFACTOR_DST_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_INV_SRC_ALPHA, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpAtopReverse,
PIPE_BLENDFACTOR_INV_DST_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_SRC_ALPHA, PIPE_BLENDFACTOR_INV_SRC_ALPHA },
{ PictOpXor,
PIPE_BLENDFACTOR_INV_DST_ALPHA, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_INV_SRC_ALPHA, PIPE_BLENDFACTOR_ONE },
{ PictOpAdd,
PIPE_BLENDFACTOR_ONE, PIPE_BLENDFACTOR_ONE,
PIPE_BLENDFACTOR_ONE, PIPE_BLENDFACTOR_ONE },
};
@@ -164,7 +188,7 @@ bind_blend_state(struct exa_context *exa, int op,
blend_opt = blend_for_op(op);
memset(&blend, 0, sizeof(struct pipe_blend_state));
memset(&blend, 0, sizeof(struct pipe_blend_state));
blend.blend_enable = 1;
blend.colormask |= PIPE_MASK_RGBA;