summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/msm/sde/sde_hw_catalog.h2
-rw-r--r--drivers/gpu/drm/msm/sde/sde_hw_wb.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_hw_catalog.h b/drivers/gpu/drm/msm/sde/sde_hw_catalog.h
index 85aa6b671258..91e7b90cbc76 100644
--- a/drivers/gpu/drm/msm/sde/sde_hw_catalog.h
+++ b/drivers/gpu/drm/msm/sde/sde_hw_catalog.h
@@ -174,6 +174,7 @@ enum {
* support
* @SDE_WB_WBWC_1_5 UBWC 1.5 support
* @SDE_WB_YUV_CONFIG Writeback supports output of YUV colorspace
+ * @SDE_WB_PIPE_ALPHA Writeback supports pipe alpha
* @SDE_WB_MAX maximum value
*/
enum {
@@ -187,6 +188,7 @@ enum {
SDE_WB_TRAFFIC_SHAPER,
SDE_WB_UBWC_1_0,
SDE_WB_YUV_CONFIG,
+ SDE_WB_PIPE_ALPHA,
SDE_WB_MAX
};
diff --git a/drivers/gpu/drm/msm/sde/sde_hw_wb.c b/drivers/gpu/drm/msm/sde/sde_hw_wb.c
index a776d5538d83..60141dcf9be5 100644
--- a/drivers/gpu/drm/msm/sde/sde_hw_wb.c
+++ b/drivers/gpu/drm/msm/sde/sde_hw_wb.c
@@ -96,7 +96,8 @@ static void sde_hw_wb_setup_format(struct sde_hw_wb *ctx,
if (fmt->bits[C3_ALPHA] || fmt->alpha_enable) {
dst_format |= BIT(8); /* DSTC3_EN */
- if (!fmt->alpha_enable)
+ if (!fmt->alpha_enable ||
+ !(ctx->caps->features & BIT(SDE_WB_PIPE_ALPHA)))
dst_format |= BIT(14); /* DST_ALPHA_X */
}