summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@armlinux.org.uk>2016-11-27 15:02:32 +0000
committerRussell King <rmk@armlinux.org.uk>2016-11-27 15:02:32 +0000
commit3080f6afb5ae162f54490ac8f041f0d07a5f3d0f (patch)
treeab00dfd819c05cf601356f5f4070c6bbbf431289
parent1859319b32edcce06aa0bc6b751e5f031def8c2a (diff)
etnaviv: split blend modes from the alpha mode
Split the individual blend modes from the combined alpha mode to allow easier testing and updating these modes. Signed-off-by: Russell King <rmk@armlinux.org.uk>
-rw-r--r--etnaviv/etnaviv_op.c7
-rw-r--r--etnaviv/etnaviv_op.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/etnaviv/etnaviv_op.c b/etnaviv/etnaviv_op.c
index 838438a..53d0c05 100644
--- a/etnaviv/etnaviv_op.c
+++ b/etnaviv/etnaviv_op.c
@@ -190,12 +190,17 @@ static void etnaviv_set_blend(struct etnaviv *etnaviv,
EL(VIVS_DE_ALPHA_CONTROL_ENABLE_OFF);
} else {
Bool pe20 = VIV_FEATURE(etnaviv->conn, chipMinorFeatures0, 2DPE20);
+ uint32_t alpha_mode;
+
+ alpha_mode = op->alpha_mode |
+ VIVS_DE_ALPHA_MODES_SRC_BLENDING_MODE(op->src_mode) |
+ VIVS_DE_ALPHA_MODES_DST_BLENDING_MODE(op->dst_mode);
EL(LOADSTATE(VIVS_DE_ALPHA_CONTROL, 2));
EL(VIVS_DE_ALPHA_CONTROL_ENABLE_ON |
VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA(op->src_alpha) |
VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA(op->dst_alpha));
- EL(op->alpha_mode);
+ EL(alpha_mode);
EL_ALIGN();
if (pe20) {
diff --git a/etnaviv/etnaviv_op.h b/etnaviv/etnaviv_op.h
index 19e0063..7f95c29 100644
--- a/etnaviv/etnaviv_op.h
+++ b/etnaviv/etnaviv_op.h
@@ -28,6 +28,8 @@ struct etnaviv_format {
struct etnaviv_blend_op {
uint32_t alpha_mode;
+ uint8_t src_mode; /* DE_BLENDMODE_xx */
+ uint8_t dst_mode; /* DE_BLENDMODE_xx */
uint8_t src_alpha;
uint8_t dst_alpha;
};