summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
};