st/xorg: fix most of the composition modes
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user