dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/5] drm/msm/dpu: Remove unused format tables.
@ 2018-12-11 18:42 Fritz Koenig
  2018-12-11 18:42 ` [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init Fritz Koenig
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Fritz Koenig @ 2018-12-11 18:42 UTC (permalink / raw)
  To: dri-devel; +Cc: Fritz Koenig, sean

Signed-off-by: Fritz Koenig <frkoenig@google.com>
---
 .../drm/msm/disp/dpu1/dpu_hw_catalog_format.h | 73 -------------------
 1 file changed, 73 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
index 3c9f028628ef..c37ba38ac83d 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
@@ -93,76 +93,3 @@ static const struct dpu_format_extended plane_formats_yuv[] = {
 	{DRM_FORMAT_YVU420, 0},
 	{0, 0},
 };
-
-static const struct dpu_format_extended cursor_formats[] = {
-	{DRM_FORMAT_ARGB8888, 0},
-	{DRM_FORMAT_ABGR8888, 0},
-	{DRM_FORMAT_RGBA8888, 0},
-	{DRM_FORMAT_BGRA8888, 0},
-	{DRM_FORMAT_XRGB8888, 0},
-	{DRM_FORMAT_ARGB1555, 0},
-	{DRM_FORMAT_ABGR1555, 0},
-	{DRM_FORMAT_RGBA5551, 0},
-	{DRM_FORMAT_BGRA5551, 0},
-	{DRM_FORMAT_ARGB4444, 0},
-	{DRM_FORMAT_ABGR4444, 0},
-	{DRM_FORMAT_RGBA4444, 0},
-	{DRM_FORMAT_BGRA4444, 0},
-	{0, 0},
-};
-
-static const struct dpu_format_extended wb2_formats[] = {
-	{DRM_FORMAT_RGB565, 0},
-	{DRM_FORMAT_BGR565, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_RGB888, 0},
-	{DRM_FORMAT_ARGB8888, 0},
-	{DRM_FORMAT_RGBA8888, 0},
-	{DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_XRGB8888, 0},
-	{DRM_FORMAT_RGBX8888, 0},
-	{DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_ARGB1555, 0},
-	{DRM_FORMAT_RGBA5551, 0},
-	{DRM_FORMAT_XRGB1555, 0},
-	{DRM_FORMAT_RGBX5551, 0},
-	{DRM_FORMAT_ARGB4444, 0},
-	{DRM_FORMAT_RGBA4444, 0},
-	{DRM_FORMAT_RGBX4444, 0},
-	{DRM_FORMAT_XRGB4444, 0},
-
-	{DRM_FORMAT_BGR565, 0},
-	{DRM_FORMAT_BGR888, 0},
-	{DRM_FORMAT_ABGR8888, 0},
-	{DRM_FORMAT_BGRA8888, 0},
-	{DRM_FORMAT_BGRX8888, 0},
-	{DRM_FORMAT_XBGR8888, 0},
-	{DRM_FORMAT_ABGR1555, 0},
-	{DRM_FORMAT_BGRA5551, 0},
-	{DRM_FORMAT_XBGR1555, 0},
-	{DRM_FORMAT_BGRX5551, 0},
-	{DRM_FORMAT_ABGR4444, 0},
-	{DRM_FORMAT_BGRA4444, 0},
-	{DRM_FORMAT_BGRX4444, 0},
-	{DRM_FORMAT_XBGR4444, 0},
-
-	{DRM_FORMAT_YUV420, 0},
-	{DRM_FORMAT_NV12, 0},
-	{DRM_FORMAT_NV12, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_NV16, 0},
-	{DRM_FORMAT_YUYV, 0},
-
-	{0, 0},
-};
-
-static const struct dpu_format_extended rgb_10bit_formats[] = {
-	{DRM_FORMAT_BGRA1010102, 0},
-	{DRM_FORMAT_BGRX1010102, 0},
-	{DRM_FORMAT_RGBA1010102, 0},
-	{DRM_FORMAT_RGBX1010102, 0},
-	{DRM_FORMAT_ABGR2101010, 0},
-	{DRM_FORMAT_ABGR2101010, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_XBGR2101010, 0},
-	{DRM_FORMAT_XBGR2101010, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_ARGB2101010, 0},
-	{DRM_FORMAT_XRGB2101010, 0},
-};
-- 
2.20.0.rc2.403.gdbc3b29805-goog

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init
  2018-12-11 18:42 [PATCH 1/5] drm/msm/dpu: Remove unused format tables Fritz Koenig
@ 2018-12-11 18:42 ` Fritz Koenig
  2018-12-12 16:08   ` Sean Paul
  2018-12-11 18:42 ` [PATCH 3/5] drm/msm/dpu: Plane helper for modifiers Fritz Koenig
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Fritz Koenig @ 2018-12-11 18:42 UTC (permalink / raw)
  To: dri-devel; +Cc: Fritz Koenig, sean

Simplify the initilization of a list of formats
by passing the list in directly instead of copying
it from one structure to another.

Signed-off-by: Fritz Koenig <frkoenig@google.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c   |  33 ----
 drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h   |  14 --
 .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c    |   4 +
 .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h    |  19 +--
 .../drm/msm/disp/dpu1/dpu_hw_catalog_format.h | 151 +++++++++---------
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h   |   1 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     |  25 ++-
 7 files changed, 93 insertions(+), 154 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
index 0874f0a53bf9..d53abc8ce670 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
@@ -1137,36 +1137,3 @@ const struct msm_format *dpu_get_msm_format(
 		return &fmt->base;
 	return NULL;
 }
-
-uint32_t dpu_populate_formats(
-		const struct dpu_format_extended *format_list,
-		uint32_t *pixel_formats,
-		uint64_t *pixel_modifiers,
-		uint32_t pixel_formats_max)
-{
-	uint32_t i, fourcc_format;
-
-	if (!format_list || !pixel_formats)
-		return 0;
-
-	for (i = 0, fourcc_format = 0;
-			format_list->fourcc_format && i < pixel_formats_max;
-			++format_list) {
-		/* verify if listed format is in dpu_format_map? */
-
-		/* optionally return modified formats */
-		if (pixel_modifiers) {
-			/* assume same modifier for all fb planes */
-			pixel_formats[i] = format_list->fourcc_format;
-			pixel_modifiers[i++] = format_list->modifier;
-		} else {
-			/* assume base formats grouped together */
-			if (fourcc_format != format_list->fourcc_format) {
-				fourcc_format = format_list->fourcc_format;
-				pixel_formats[i++] = fourcc_format;
-			}
-		}
-	}
-
-	return i;
-}
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
index a54451d8d011..c02c81e7a667 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
@@ -40,20 +40,6 @@ const struct msm_format *dpu_get_msm_format(
 		const uint32_t format,
 		const uint64_t modifiers);
 
-/**
- * dpu_populate_formats - populate the given array with fourcc codes supported
- * @format_list:       pointer to list of possible formats
- * @pixel_formats:     array to populate with fourcc codes
- * @pixel_modifiers:   array to populate with drm modifiers, can be NULL
- * @pixel_formats_max: length of pixel formats array
- * Return: number of elements populated
- */
-uint32_t dpu_populate_formats(
-		const struct dpu_format_extended *format_list,
-		uint32_t *pixel_formats,
-		uint64_t *pixel_modifiers,
-		uint32_t pixel_formats_max);
-
 /**
  * dpu_format_check_modified_format - validate format and buffers for
  *                   dpu non-standard, i.e. modified format
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
index 512ac0834d2b..df6852cc98b9 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
@@ -151,7 +151,9 @@ static const struct dpu_sspp_blks_common sdm845_sspp_common = {
 		.id = DPU_SSPP_CSC_10BIT, \
 		.base = 0x1a00, .len = 0x100,}, \
 	.format_list = plane_formats_yuv, \
+	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
 	.virt_format_list = plane_formats, \
+	.virt_num_formats = ARRAY_SIZE(plane_formats), \
 	}
 
 #define _DMA_SBLK(num, sdma_pri) \
@@ -163,7 +165,9 @@ static const struct dpu_sspp_blks_common sdm845_sspp_common = {
 	.src_blk = {.name = STRCAT("sspp_src_", num), \
 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
 	.format_list = plane_formats, \
+	.num_formats = ARRAY_SIZE(plane_formats), \
 	.virt_format_list = plane_formats, \
+	.virt_num_formats = ARRAY_SIZE(plane_formats), \
 	}
 
 static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = _VIG_SBLK("0", 5);
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
index 144358a3d0fb..a55653b2e466 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
@@ -251,17 +251,6 @@ struct dpu_pp_blk {
 	u32 version;
 };
 
-/**
- * struct dpu_format_extended - define dpu specific pixel format+modifier
- * @fourcc_format: Base FOURCC pixel format code
- * @modifier: 64-bit drm format modifier, same modifier must be applied to all
- *            framebuffer planes
- */
-struct dpu_format_extended {
-	uint32_t fourcc_format;
-	uint64_t modifier;
-};
-
 /**
  * enum dpu_qos_lut_usage - define QoS LUT use cases
  */
@@ -348,7 +337,9 @@ struct dpu_sspp_blks_common {
  * @pcc_blk:
  * @igc_blk:
  * @format_list: Pointer to list of supported formats
+ * @num_formats: Number of supported formats
  * @virt_format_list: Pointer to list of supported formats for virtual planes
+ * @virt_num_formats: Number of supported formats for virtual planes
  */
 struct dpu_sspp_sub_blks {
 	const struct dpu_sspp_blks_common *common;
@@ -366,8 +357,10 @@ struct dpu_sspp_sub_blks {
 	struct dpu_pp_blk pcc_blk;
 	struct dpu_pp_blk igc_blk;
 
-	const struct dpu_format_extended *format_list;
-	const struct dpu_format_extended *virt_format_list;
+	const u32 *format_list;
+	u32 num_formats;
+	const u32 *virt_format_list;
+	u32 virt_num_formats;
 };
 
 /**
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
index c37ba38ac83d..d09730985951 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
@@ -12,84 +12,81 @@
 
 #include "dpu_hw_mdss.h"
 
-static const struct dpu_format_extended plane_formats[] = {
-	{DRM_FORMAT_ARGB8888, 0},
-	{DRM_FORMAT_ABGR8888, 0},
-	{DRM_FORMAT_RGBA8888, 0},
-	{DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_BGRA8888, 0},
-	{DRM_FORMAT_XRGB8888, 0},
-	{DRM_FORMAT_RGBX8888, 0},
-	{DRM_FORMAT_BGRX8888, 0},
-	{DRM_FORMAT_XBGR8888, 0},
-	{DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_RGB888, 0},
-	{DRM_FORMAT_BGR888, 0},
-	{DRM_FORMAT_RGB565, 0},
-	{DRM_FORMAT_BGR565, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_BGR565, 0},
-	{DRM_FORMAT_ARGB1555, 0},
-	{DRM_FORMAT_ABGR1555, 0},
-	{DRM_FORMAT_RGBA5551, 0},
-	{DRM_FORMAT_BGRA5551, 0},
-	{DRM_FORMAT_XRGB1555, 0},
-	{DRM_FORMAT_XBGR1555, 0},
-	{DRM_FORMAT_RGBX5551, 0},
-	{DRM_FORMAT_BGRX5551, 0},
-	{DRM_FORMAT_ARGB4444, 0},
-	{DRM_FORMAT_ABGR4444, 0},
-	{DRM_FORMAT_RGBA4444, 0},
-	{DRM_FORMAT_BGRA4444, 0},
-	{DRM_FORMAT_XRGB4444, 0},
-	{DRM_FORMAT_XBGR4444, 0},
-	{DRM_FORMAT_RGBX4444, 0},
-	{DRM_FORMAT_BGRX4444, 0},
-	{0, 0},
+static const uint32_t qcom_compressed_supported_formats[] = {
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_BGR565,
 };
 
-static const struct dpu_format_extended plane_formats_yuv[] = {
-	{DRM_FORMAT_ARGB8888, 0},
-	{DRM_FORMAT_ABGR8888, 0},
-	{DRM_FORMAT_RGBA8888, 0},
-	{DRM_FORMAT_BGRX8888, 0},
-	{DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_BGRA8888, 0},
-	{DRM_FORMAT_XRGB8888, 0},
-	{DRM_FORMAT_XBGR8888, 0},
-	{DRM_FORMAT_RGBX8888, 0},
-	{DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_RGB888, 0},
-	{DRM_FORMAT_BGR888, 0},
-	{DRM_FORMAT_RGB565, 0},
-	{DRM_FORMAT_BGR565, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_BGR565, 0},
-	{DRM_FORMAT_ARGB1555, 0},
-	{DRM_FORMAT_ABGR1555, 0},
-	{DRM_FORMAT_RGBA5551, 0},
-	{DRM_FORMAT_BGRA5551, 0},
-	{DRM_FORMAT_XRGB1555, 0},
-	{DRM_FORMAT_XBGR1555, 0},
-	{DRM_FORMAT_RGBX5551, 0},
-	{DRM_FORMAT_BGRX5551, 0},
-	{DRM_FORMAT_ARGB4444, 0},
-	{DRM_FORMAT_ABGR4444, 0},
-	{DRM_FORMAT_RGBA4444, 0},
-	{DRM_FORMAT_BGRA4444, 0},
-	{DRM_FORMAT_XRGB4444, 0},
-	{DRM_FORMAT_XBGR4444, 0},
-	{DRM_FORMAT_RGBX4444, 0},
-	{DRM_FORMAT_BGRX4444, 0},
+static const uint32_t plane_formats[] = {
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_RGBA8888,
+	DRM_FORMAT_BGRA8888,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_RGBX8888,
+	DRM_FORMAT_BGRX8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_RGB888,
+	DRM_FORMAT_BGR888,
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_BGR565,
+	DRM_FORMAT_ARGB1555,
+	DRM_FORMAT_ABGR1555,
+	DRM_FORMAT_RGBA5551,
+	DRM_FORMAT_BGRA5551,
+	DRM_FORMAT_XRGB1555,
+	DRM_FORMAT_XBGR1555,
+	DRM_FORMAT_RGBX5551,
+	DRM_FORMAT_BGRX5551,
+	DRM_FORMAT_ARGB4444,
+	DRM_FORMAT_ABGR4444,
+	DRM_FORMAT_RGBA4444,
+	DRM_FORMAT_BGRA4444,
+	DRM_FORMAT_XRGB4444,
+	DRM_FORMAT_XBGR4444,
+	DRM_FORMAT_RGBX4444,
+	DRM_FORMAT_BGRX4444,
+};
+
+static const uint32_t plane_formats_yuv[] = {
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_RGBA8888,
+	DRM_FORMAT_BGRX8888,
+	DRM_FORMAT_BGRA8888,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_RGBX8888,
+	DRM_FORMAT_RGB888,
+	DRM_FORMAT_BGR888,
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_BGR565,
+	DRM_FORMAT_ARGB1555,
+	DRM_FORMAT_ABGR1555,
+	DRM_FORMAT_RGBA5551,
+	DRM_FORMAT_BGRA5551,
+	DRM_FORMAT_XRGB1555,
+	DRM_FORMAT_XBGR1555,
+	DRM_FORMAT_RGBX5551,
+	DRM_FORMAT_BGRX5551,
+	DRM_FORMAT_ARGB4444,
+	DRM_FORMAT_ABGR4444,
+	DRM_FORMAT_RGBA4444,
+	DRM_FORMAT_BGRA4444,
+	DRM_FORMAT_XRGB4444,
+	DRM_FORMAT_XBGR4444,
+	DRM_FORMAT_RGBX4444,
+	DRM_FORMAT_BGRX4444,
 
-	{DRM_FORMAT_NV12, 0},
-	{DRM_FORMAT_NV12, DRM_FORMAT_MOD_QCOM_COMPRESSED},
-	{DRM_FORMAT_NV21, 0},
-	{DRM_FORMAT_NV16, 0},
-	{DRM_FORMAT_NV61, 0},
-	{DRM_FORMAT_VYUY, 0},
-	{DRM_FORMAT_UYVY, 0},
-	{DRM_FORMAT_YUYV, 0},
-	{DRM_FORMAT_YVYU, 0},
-	{DRM_FORMAT_YUV420, 0},
-	{DRM_FORMAT_YVU420, 0},
-	{0, 0},
+	DRM_FORMAT_NV12,
+	DRM_FORMAT_NV21,
+	DRM_FORMAT_NV16,
+	DRM_FORMAT_NV61,
+	DRM_FORMAT_VYUY,
+	DRM_FORMAT_UYVY,
+	DRM_FORMAT_YUYV,
+	DRM_FORMAT_YVYU,
+	DRM_FORMAT_YUV420,
+	DRM_FORMAT_YVU420,
 };
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
index 321fc64ddd0e..efe70c508ee0 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
@@ -18,7 +18,6 @@
 #include "dpu_hw_mdss.h"
 
 #define REG_MASK(n)                     ((BIT(n)) - 1)
-struct dpu_format_extended;
 
 /*
  * This is the common struct maintained by each sub block
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index 688233dbd597..6a49c253bbdc 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -95,8 +95,6 @@ struct dpu_plane {
 
 	enum dpu_sspp pipe;
 	uint32_t features;      /* capabilities from catalog */
-	uint32_t nformats;
-	uint32_t formats[64];
 
 	struct dpu_hw_pipe *pipe_hw;
 	struct dpu_hw_pipe_cfg pipe_cfg;
@@ -1446,11 +1444,12 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
 		unsigned long possible_crtcs, u32 master_plane_id)
 {
 	struct drm_plane *plane = NULL, *master_plane = NULL;
-	const struct dpu_format_extended *format_list;
+	const uint32_t *format_list;
 	struct dpu_plane *pdpu;
 	struct msm_drm_private *priv = dev->dev_private;
 	struct dpu_kms *kms = to_dpu_kms(priv->kms);
 	int zpos_max = DPU_ZPOS_MAX;
+	uint32_t num_formats;
 	int ret = -EINVAL;
 
 	/* create and zero local structure */
@@ -1493,23 +1492,17 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
 		goto clean_sspp;
 	}
 
-	if (!master_plane_id)
-		format_list = pdpu->pipe_sblk->format_list;
-	else
+	if (pdpu->is_virtual) {
 		format_list = pdpu->pipe_sblk->virt_format_list;
-
-	pdpu->nformats = dpu_populate_formats(format_list,
-				pdpu->formats,
-				0,
-				ARRAY_SIZE(pdpu->formats));
-
-	if (!pdpu->nformats) {
-		DPU_ERROR("[%u]no valid formats for plane\n", pipe);
-		goto clean_sspp;
+		num_formats = pdpu->pipe_sblk->virt_num_formats;
+	}
+	else {
+		format_list = pdpu->pipe_sblk->format_list;
+		num_formats = pdpu->pipe_sblk->num_formats;
 	}
 
 	ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs,
-				pdpu->formats, pdpu->nformats,
+				format_list, num_formats,
 				NULL, type, NULL);
 	if (ret)
 		goto clean_sspp;
-- 
2.20.0.rc2.403.gdbc3b29805-goog

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/5] drm/msm/dpu: Plane helper for modifiers
  2018-12-11 18:42 [PATCH 1/5] drm/msm/dpu: Remove unused format tables Fritz Koenig
  2018-12-11 18:42 ` [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init Fritz Koenig
@ 2018-12-11 18:42 ` Fritz Koenig
  2018-12-12 16:11   ` Sean Paul
  2018-12-11 18:42 ` [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers Fritz Koenig
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Fritz Koenig @ 2018-12-11 18:42 UTC (permalink / raw)
  To: dri-devel; +Cc: Fritz Koenig, sean

Filter planes based on the supported modifiers

Signed-off-by: Fritz Koenig <frkoenig@google.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index 6a49c253bbdc..9381c8af76d7 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -1410,6 +1410,23 @@ static void dpu_plane_early_unregister(struct drm_plane *plane)
 	debugfs_remove_recursive(pdpu->debugfs_root);
 }
 
+static bool dpu_plane_format_mod_supported(struct drm_plane *plane,
+		uint32_t format, uint64_t modifier)
+{
+	if (modifier == DRM_FORMAT_MOD_LINEAR)
+		return true;
+
+	if (modifier == DRM_FORMAT_MOD_QCOM_COMPRESSED) {
+		int i;
+		for (i = 0; i < ARRAY_SIZE(qcom_compressed_supported_formats); i++) {
+			if (format == qcom_compressed_supported_formats[i])
+				return true;
+		}
+	}
+
+	return false;
+}
+
 static const struct drm_plane_funcs dpu_plane_funcs = {
 		.update_plane = drm_atomic_helper_update_plane,
 		.disable_plane = drm_atomic_helper_disable_plane,
@@ -1419,6 +1436,7 @@ static const struct drm_plane_funcs dpu_plane_funcs = {
 		.atomic_destroy_state = dpu_plane_destroy_state,
 		.late_register = dpu_plane_late_register,
 		.early_unregister = dpu_plane_early_unregister,
+		.format_mod_supported = dpu_plane_format_mod_supported,
 };
 
 static const struct drm_plane_helper_funcs dpu_plane_helper_funcs = {
-- 
2.20.0.rc2.403.gdbc3b29805-goog

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers
  2018-12-11 18:42 [PATCH 1/5] drm/msm/dpu: Remove unused format tables Fritz Koenig
  2018-12-11 18:42 ` [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init Fritz Koenig
  2018-12-11 18:42 ` [PATCH 3/5] drm/msm/dpu: Plane helper for modifiers Fritz Koenig
@ 2018-12-11 18:42 ` Fritz Koenig
  2018-12-12 16:12   ` Sean Paul
  2018-12-11 18:42 ` [PATCH 5/5] drm/msm/dpu: Correct initialization of modifiers Fritz Koenig
  2018-12-12 16:05 ` [PATCH 1/5] drm/msm/dpu: Remove unused format tables Sean Paul
  4 siblings, 1 reply; 12+ messages in thread
From: Fritz Koenig @ 2018-12-11 18:42 UTC (permalink / raw)
  To: dri-devel; +Cc: Fritz Koenig, sean

Pass list of supported modifiers to plane init.

Signed-off-by: Fritz Koenig <frkoenig@google.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index 9381c8af76d7..d2d4720f6f8c 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -119,6 +119,12 @@ struct dpu_plane {
 	bool debugfs_default_scale;
 };
 
+static const uint64_t supported_format_modifiers[] = {
+	DRM_FORMAT_MOD_QCOM_COMPRESSED,
+	DRM_FORMAT_MOD_LINEAR,
+	DRM_FORMAT_MOD_INVALID
+};
+
 #define to_dpu_plane(x) container_of(x, struct dpu_plane, base)
 
 static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane)
@@ -1521,7 +1527,7 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
 
 	ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs,
 				format_list, num_formats,
-				NULL, type, NULL);
+				supported_format_modifiers, type, NULL);
 	if (ret)
 		goto clean_sspp;
 
-- 
2.20.0.rc2.403.gdbc3b29805-goog

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 5/5] drm/msm/dpu: Correct initialization of modifiers
  2018-12-11 18:42 [PATCH 1/5] drm/msm/dpu: Remove unused format tables Fritz Koenig
                   ` (2 preceding siblings ...)
  2018-12-11 18:42 ` [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers Fritz Koenig
@ 2018-12-11 18:42 ` Fritz Koenig
  2018-12-12 16:13   ` Sean Paul
  2018-12-12 16:05 ` [PATCH 1/5] drm/msm/dpu: Remove unused format tables Sean Paul
  4 siblings, 1 reply; 12+ messages in thread
From: Fritz Koenig @ 2018-12-11 18:42 UTC (permalink / raw)
  To: dri-devel; +Cc: Fritz Koenig, sean

allow_fb_modifiers needs to be set before drm_universal_plane_init
is called.

Signed-off-by: Fritz Koenig <frkoenig@google.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 4d67b3c96702..56555c3a750a 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -926,16 +926,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 		goto hw_intr_init_err;
 	}
 
-	/*
-	 * _dpu_kms_drm_obj_init should create the DRM related objects
-	 * i.e. CRTCs, planes, encoders, connectors and so forth
-	 */
-	rc = _dpu_kms_drm_obj_init(dpu_kms);
-	if (rc) {
-		DPU_ERROR("modeset init failed: %d\n", rc);
-		goto drm_obj_init_err;
-	}
-
 	dev->mode_config.min_width = 0;
 	dev->mode_config.min_height = 0;
 
@@ -952,6 +942,16 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 	 */
 	dev->mode_config.allow_fb_modifiers = true;
 
+	/*
+	 * _dpu_kms_drm_obj_init should create the DRM related objects
+	 * i.e. CRTCs, planes, encoders, connectors and so forth
+	 */
+	rc = _dpu_kms_drm_obj_init(dpu_kms);
+	if (rc) {
+		DPU_ERROR("modeset init failed: %d\n", rc);
+		goto drm_obj_init_err;
+	}
+
 	dpu_vbif_init_memtypes(dpu_kms);
 
 	pm_runtime_put_sync(&dpu_kms->pdev->dev);
-- 
2.20.0.rc2.403.gdbc3b29805-goog

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/5] drm/msm/dpu: Remove unused format tables.
  2018-12-11 18:42 [PATCH 1/5] drm/msm/dpu: Remove unused format tables Fritz Koenig
                   ` (3 preceding siblings ...)
  2018-12-11 18:42 ` [PATCH 5/5] drm/msm/dpu: Correct initialization of modifiers Fritz Koenig
@ 2018-12-12 16:05 ` Sean Paul
  4 siblings, 0 replies; 12+ messages in thread
From: Sean Paul @ 2018-12-12 16:05 UTC (permalink / raw)
  To: Fritz Koenig; +Cc: sean, dri-devel

On Tue, Dec 11, 2018 at 10:42:20AM -0800, Fritz Koenig wrote:
> Signed-off-by: Fritz Koenig <frkoenig@google.com>

In future, can you please cc freedreno@lists.freedesktop.org and
linux-arm-msm@vger.kernel.org on msm patches?

Reviewed-by: Sean Paul <sean@poorly.run>



> ---
>  .../drm/msm/disp/dpu1/dpu_hw_catalog_format.h | 73 -------------------
>  1 file changed, 73 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> index 3c9f028628ef..c37ba38ac83d 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> @@ -93,76 +93,3 @@ static const struct dpu_format_extended plane_formats_yuv[] = {
>  	{DRM_FORMAT_YVU420, 0},
>  	{0, 0},
>  };
> -
> -static const struct dpu_format_extended cursor_formats[] = {
> -	{DRM_FORMAT_ARGB8888, 0},
> -	{DRM_FORMAT_ABGR8888, 0},
> -	{DRM_FORMAT_RGBA8888, 0},
> -	{DRM_FORMAT_BGRA8888, 0},
> -	{DRM_FORMAT_XRGB8888, 0},
> -	{DRM_FORMAT_ARGB1555, 0},
> -	{DRM_FORMAT_ABGR1555, 0},
> -	{DRM_FORMAT_RGBA5551, 0},
> -	{DRM_FORMAT_BGRA5551, 0},
> -	{DRM_FORMAT_ARGB4444, 0},
> -	{DRM_FORMAT_ABGR4444, 0},
> -	{DRM_FORMAT_RGBA4444, 0},
> -	{DRM_FORMAT_BGRA4444, 0},
> -	{0, 0},
> -};
> -
> -static const struct dpu_format_extended wb2_formats[] = {
> -	{DRM_FORMAT_RGB565, 0},
> -	{DRM_FORMAT_BGR565, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_RGB888, 0},
> -	{DRM_FORMAT_ARGB8888, 0},
> -	{DRM_FORMAT_RGBA8888, 0},
> -	{DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_XRGB8888, 0},
> -	{DRM_FORMAT_RGBX8888, 0},
> -	{DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_ARGB1555, 0},
> -	{DRM_FORMAT_RGBA5551, 0},
> -	{DRM_FORMAT_XRGB1555, 0},
> -	{DRM_FORMAT_RGBX5551, 0},
> -	{DRM_FORMAT_ARGB4444, 0},
> -	{DRM_FORMAT_RGBA4444, 0},
> -	{DRM_FORMAT_RGBX4444, 0},
> -	{DRM_FORMAT_XRGB4444, 0},
> -
> -	{DRM_FORMAT_BGR565, 0},
> -	{DRM_FORMAT_BGR888, 0},
> -	{DRM_FORMAT_ABGR8888, 0},
> -	{DRM_FORMAT_BGRA8888, 0},
> -	{DRM_FORMAT_BGRX8888, 0},
> -	{DRM_FORMAT_XBGR8888, 0},
> -	{DRM_FORMAT_ABGR1555, 0},
> -	{DRM_FORMAT_BGRA5551, 0},
> -	{DRM_FORMAT_XBGR1555, 0},
> -	{DRM_FORMAT_BGRX5551, 0},
> -	{DRM_FORMAT_ABGR4444, 0},
> -	{DRM_FORMAT_BGRA4444, 0},
> -	{DRM_FORMAT_BGRX4444, 0},
> -	{DRM_FORMAT_XBGR4444, 0},
> -
> -	{DRM_FORMAT_YUV420, 0},
> -	{DRM_FORMAT_NV12, 0},
> -	{DRM_FORMAT_NV12, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_NV16, 0},
> -	{DRM_FORMAT_YUYV, 0},
> -
> -	{0, 0},
> -};
> -
> -static const struct dpu_format_extended rgb_10bit_formats[] = {
> -	{DRM_FORMAT_BGRA1010102, 0},
> -	{DRM_FORMAT_BGRX1010102, 0},
> -	{DRM_FORMAT_RGBA1010102, 0},
> -	{DRM_FORMAT_RGBX1010102, 0},
> -	{DRM_FORMAT_ABGR2101010, 0},
> -	{DRM_FORMAT_ABGR2101010, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_XBGR2101010, 0},
> -	{DRM_FORMAT_XBGR2101010, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_ARGB2101010, 0},
> -	{DRM_FORMAT_XRGB2101010, 0},
> -};
> -- 
> 2.20.0.rc2.403.gdbc3b29805-goog
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init
  2018-12-11 18:42 ` [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init Fritz Koenig
@ 2018-12-12 16:08   ` Sean Paul
  0 siblings, 0 replies; 12+ messages in thread
From: Sean Paul @ 2018-12-12 16:08 UTC (permalink / raw)
  To: Fritz Koenig; +Cc: sean, dri-devel

On Tue, Dec 11, 2018 at 10:42:21AM -0800, Fritz Koenig wrote:
> Simplify the initilization of a list of formats
> by passing the list in directly instead of copying
> it from one structure to another.

I have notes on at least a few other instances of passing a struct of
parameters instead of just passing stuff directly. Definitely a nice change that
simplifies things for casual readers like us. Thanks!

Reviewed-by: Sean Paul <sean@poorly.run>


> 
> Signed-off-by: Fritz Koenig <frkoenig@google.com>
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c   |  33 ----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h   |  14 --
>  .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c    |   4 +
>  .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h    |  19 +--
>  .../drm/msm/disp/dpu1/dpu_hw_catalog_format.h | 151 +++++++++---------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h   |   1 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     |  25 ++-
>  7 files changed, 93 insertions(+), 154 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
> index 0874f0a53bf9..d53abc8ce670 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
> @@ -1137,36 +1137,3 @@ const struct msm_format *dpu_get_msm_format(
>  		return &fmt->base;
>  	return NULL;
>  }
> -
> -uint32_t dpu_populate_formats(
> -		const struct dpu_format_extended *format_list,
> -		uint32_t *pixel_formats,
> -		uint64_t *pixel_modifiers,
> -		uint32_t pixel_formats_max)
> -{
> -	uint32_t i, fourcc_format;
> -
> -	if (!format_list || !pixel_formats)
> -		return 0;
> -
> -	for (i = 0, fourcc_format = 0;
> -			format_list->fourcc_format && i < pixel_formats_max;
> -			++format_list) {
> -		/* verify if listed format is in dpu_format_map? */
> -
> -		/* optionally return modified formats */
> -		if (pixel_modifiers) {
> -			/* assume same modifier for all fb planes */
> -			pixel_formats[i] = format_list->fourcc_format;
> -			pixel_modifiers[i++] = format_list->modifier;
> -		} else {
> -			/* assume base formats grouped together */
> -			if (fourcc_format != format_list->fourcc_format) {
> -				fourcc_format = format_list->fourcc_format;
> -				pixel_formats[i++] = fourcc_format;
> -			}
> -		}
> -	}
> -
> -	return i;
> -}
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
> index a54451d8d011..c02c81e7a667 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
> @@ -40,20 +40,6 @@ const struct msm_format *dpu_get_msm_format(
>  		const uint32_t format,
>  		const uint64_t modifiers);
>  
> -/**
> - * dpu_populate_formats - populate the given array with fourcc codes supported
> - * @format_list:       pointer to list of possible formats
> - * @pixel_formats:     array to populate with fourcc codes
> - * @pixel_modifiers:   array to populate with drm modifiers, can be NULL
> - * @pixel_formats_max: length of pixel formats array
> - * Return: number of elements populated
> - */
> -uint32_t dpu_populate_formats(
> -		const struct dpu_format_extended *format_list,
> -		uint32_t *pixel_formats,
> -		uint64_t *pixel_modifiers,
> -		uint32_t pixel_formats_max);
> -
>  /**
>   * dpu_format_check_modified_format - validate format and buffers for
>   *                   dpu non-standard, i.e. modified format
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> index 512ac0834d2b..df6852cc98b9 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> @@ -151,7 +151,9 @@ static const struct dpu_sspp_blks_common sdm845_sspp_common = {
>  		.id = DPU_SSPP_CSC_10BIT, \
>  		.base = 0x1a00, .len = 0x100,}, \
>  	.format_list = plane_formats_yuv, \
> +	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
>  	.virt_format_list = plane_formats, \
> +	.virt_num_formats = ARRAY_SIZE(plane_formats), \
>  	}
>  
>  #define _DMA_SBLK(num, sdma_pri) \
> @@ -163,7 +165,9 @@ static const struct dpu_sspp_blks_common sdm845_sspp_common = {
>  	.src_blk = {.name = STRCAT("sspp_src_", num), \
>  		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
>  	.format_list = plane_formats, \
> +	.num_formats = ARRAY_SIZE(plane_formats), \
>  	.virt_format_list = plane_formats, \
> +	.virt_num_formats = ARRAY_SIZE(plane_formats), \
>  	}
>  
>  static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = _VIG_SBLK("0", 5);
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
> index 144358a3d0fb..a55653b2e466 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
> @@ -251,17 +251,6 @@ struct dpu_pp_blk {
>  	u32 version;
>  };
>  
> -/**
> - * struct dpu_format_extended - define dpu specific pixel format+modifier
> - * @fourcc_format: Base FOURCC pixel format code
> - * @modifier: 64-bit drm format modifier, same modifier must be applied to all
> - *            framebuffer planes
> - */
> -struct dpu_format_extended {
> -	uint32_t fourcc_format;
> -	uint64_t modifier;
> -};
> -
>  /**
>   * enum dpu_qos_lut_usage - define QoS LUT use cases
>   */
> @@ -348,7 +337,9 @@ struct dpu_sspp_blks_common {
>   * @pcc_blk:
>   * @igc_blk:
>   * @format_list: Pointer to list of supported formats
> + * @num_formats: Number of supported formats
>   * @virt_format_list: Pointer to list of supported formats for virtual planes
> + * @virt_num_formats: Number of supported formats for virtual planes
>   */
>  struct dpu_sspp_sub_blks {
>  	const struct dpu_sspp_blks_common *common;
> @@ -366,8 +357,10 @@ struct dpu_sspp_sub_blks {
>  	struct dpu_pp_blk pcc_blk;
>  	struct dpu_pp_blk igc_blk;
>  
> -	const struct dpu_format_extended *format_list;
> -	const struct dpu_format_extended *virt_format_list;
> +	const u32 *format_list;
> +	u32 num_formats;
> +	const u32 *virt_format_list;
> +	u32 virt_num_formats;
>  };
>  
>  /**
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> index c37ba38ac83d..d09730985951 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> @@ -12,84 +12,81 @@
>  
>  #include "dpu_hw_mdss.h"
>  
> -static const struct dpu_format_extended plane_formats[] = {
> -	{DRM_FORMAT_ARGB8888, 0},
> -	{DRM_FORMAT_ABGR8888, 0},
> -	{DRM_FORMAT_RGBA8888, 0},
> -	{DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_BGRA8888, 0},
> -	{DRM_FORMAT_XRGB8888, 0},
> -	{DRM_FORMAT_RGBX8888, 0},
> -	{DRM_FORMAT_BGRX8888, 0},
> -	{DRM_FORMAT_XBGR8888, 0},
> -	{DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_RGB888, 0},
> -	{DRM_FORMAT_BGR888, 0},
> -	{DRM_FORMAT_RGB565, 0},
> -	{DRM_FORMAT_BGR565, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_BGR565, 0},
> -	{DRM_FORMAT_ARGB1555, 0},
> -	{DRM_FORMAT_ABGR1555, 0},
> -	{DRM_FORMAT_RGBA5551, 0},
> -	{DRM_FORMAT_BGRA5551, 0},
> -	{DRM_FORMAT_XRGB1555, 0},
> -	{DRM_FORMAT_XBGR1555, 0},
> -	{DRM_FORMAT_RGBX5551, 0},
> -	{DRM_FORMAT_BGRX5551, 0},
> -	{DRM_FORMAT_ARGB4444, 0},
> -	{DRM_FORMAT_ABGR4444, 0},
> -	{DRM_FORMAT_RGBA4444, 0},
> -	{DRM_FORMAT_BGRA4444, 0},
> -	{DRM_FORMAT_XRGB4444, 0},
> -	{DRM_FORMAT_XBGR4444, 0},
> -	{DRM_FORMAT_RGBX4444, 0},
> -	{DRM_FORMAT_BGRX4444, 0},
> -	{0, 0},
> +static const uint32_t qcom_compressed_supported_formats[] = {
> +	DRM_FORMAT_ABGR8888,
> +	DRM_FORMAT_XBGR8888,
> +	DRM_FORMAT_BGR565,
>  };
>  
> -static const struct dpu_format_extended plane_formats_yuv[] = {
> -	{DRM_FORMAT_ARGB8888, 0},
> -	{DRM_FORMAT_ABGR8888, 0},
> -	{DRM_FORMAT_RGBA8888, 0},
> -	{DRM_FORMAT_BGRX8888, 0},
> -	{DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_BGRA8888, 0},
> -	{DRM_FORMAT_XRGB8888, 0},
> -	{DRM_FORMAT_XBGR8888, 0},
> -	{DRM_FORMAT_RGBX8888, 0},
> -	{DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_RGB888, 0},
> -	{DRM_FORMAT_BGR888, 0},
> -	{DRM_FORMAT_RGB565, 0},
> -	{DRM_FORMAT_BGR565, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_BGR565, 0},
> -	{DRM_FORMAT_ARGB1555, 0},
> -	{DRM_FORMAT_ABGR1555, 0},
> -	{DRM_FORMAT_RGBA5551, 0},
> -	{DRM_FORMAT_BGRA5551, 0},
> -	{DRM_FORMAT_XRGB1555, 0},
> -	{DRM_FORMAT_XBGR1555, 0},
> -	{DRM_FORMAT_RGBX5551, 0},
> -	{DRM_FORMAT_BGRX5551, 0},
> -	{DRM_FORMAT_ARGB4444, 0},
> -	{DRM_FORMAT_ABGR4444, 0},
> -	{DRM_FORMAT_RGBA4444, 0},
> -	{DRM_FORMAT_BGRA4444, 0},
> -	{DRM_FORMAT_XRGB4444, 0},
> -	{DRM_FORMAT_XBGR4444, 0},
> -	{DRM_FORMAT_RGBX4444, 0},
> -	{DRM_FORMAT_BGRX4444, 0},
> +static const uint32_t plane_formats[] = {
> +	DRM_FORMAT_ARGB8888,
> +	DRM_FORMAT_ABGR8888,
> +	DRM_FORMAT_RGBA8888,
> +	DRM_FORMAT_BGRA8888,
> +	DRM_FORMAT_XRGB8888,
> +	DRM_FORMAT_RGBX8888,
> +	DRM_FORMAT_BGRX8888,
> +	DRM_FORMAT_XBGR8888,
> +	DRM_FORMAT_RGB888,
> +	DRM_FORMAT_BGR888,
> +	DRM_FORMAT_RGB565,
> +	DRM_FORMAT_BGR565,
> +	DRM_FORMAT_ARGB1555,
> +	DRM_FORMAT_ABGR1555,
> +	DRM_FORMAT_RGBA5551,
> +	DRM_FORMAT_BGRA5551,
> +	DRM_FORMAT_XRGB1555,
> +	DRM_FORMAT_XBGR1555,
> +	DRM_FORMAT_RGBX5551,
> +	DRM_FORMAT_BGRX5551,
> +	DRM_FORMAT_ARGB4444,
> +	DRM_FORMAT_ABGR4444,
> +	DRM_FORMAT_RGBA4444,
> +	DRM_FORMAT_BGRA4444,
> +	DRM_FORMAT_XRGB4444,
> +	DRM_FORMAT_XBGR4444,
> +	DRM_FORMAT_RGBX4444,
> +	DRM_FORMAT_BGRX4444,
> +};
> +
> +static const uint32_t plane_formats_yuv[] = {
> +	DRM_FORMAT_ARGB8888,
> +	DRM_FORMAT_ABGR8888,
> +	DRM_FORMAT_RGBA8888,
> +	DRM_FORMAT_BGRX8888,
> +	DRM_FORMAT_BGRA8888,
> +	DRM_FORMAT_XRGB8888,
> +	DRM_FORMAT_XBGR8888,
> +	DRM_FORMAT_RGBX8888,
> +	DRM_FORMAT_RGB888,
> +	DRM_FORMAT_BGR888,
> +	DRM_FORMAT_RGB565,
> +	DRM_FORMAT_BGR565,
> +	DRM_FORMAT_ARGB1555,
> +	DRM_FORMAT_ABGR1555,
> +	DRM_FORMAT_RGBA5551,
> +	DRM_FORMAT_BGRA5551,
> +	DRM_FORMAT_XRGB1555,
> +	DRM_FORMAT_XBGR1555,
> +	DRM_FORMAT_RGBX5551,
> +	DRM_FORMAT_BGRX5551,
> +	DRM_FORMAT_ARGB4444,
> +	DRM_FORMAT_ABGR4444,
> +	DRM_FORMAT_RGBA4444,
> +	DRM_FORMAT_BGRA4444,
> +	DRM_FORMAT_XRGB4444,
> +	DRM_FORMAT_XBGR4444,
> +	DRM_FORMAT_RGBX4444,
> +	DRM_FORMAT_BGRX4444,
>  
> -	{DRM_FORMAT_NV12, 0},
> -	{DRM_FORMAT_NV12, DRM_FORMAT_MOD_QCOM_COMPRESSED},
> -	{DRM_FORMAT_NV21, 0},
> -	{DRM_FORMAT_NV16, 0},
> -	{DRM_FORMAT_NV61, 0},
> -	{DRM_FORMAT_VYUY, 0},
> -	{DRM_FORMAT_UYVY, 0},
> -	{DRM_FORMAT_YUYV, 0},
> -	{DRM_FORMAT_YVYU, 0},
> -	{DRM_FORMAT_YUV420, 0},
> -	{DRM_FORMAT_YVU420, 0},
> -	{0, 0},
> +	DRM_FORMAT_NV12,
> +	DRM_FORMAT_NV21,
> +	DRM_FORMAT_NV16,
> +	DRM_FORMAT_NV61,
> +	DRM_FORMAT_VYUY,
> +	DRM_FORMAT_UYVY,
> +	DRM_FORMAT_YUYV,
> +	DRM_FORMAT_YVYU,
> +	DRM_FORMAT_YUV420,
> +	DRM_FORMAT_YVU420,
>  };
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> index 321fc64ddd0e..efe70c508ee0 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> @@ -18,7 +18,6 @@
>  #include "dpu_hw_mdss.h"
>  
>  #define REG_MASK(n)                     ((BIT(n)) - 1)
> -struct dpu_format_extended;
>  
>  /*
>   * This is the common struct maintained by each sub block
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> index 688233dbd597..6a49c253bbdc 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> @@ -95,8 +95,6 @@ struct dpu_plane {
>  
>  	enum dpu_sspp pipe;
>  	uint32_t features;      /* capabilities from catalog */
> -	uint32_t nformats;
> -	uint32_t formats[64];
>  
>  	struct dpu_hw_pipe *pipe_hw;
>  	struct dpu_hw_pipe_cfg pipe_cfg;
> @@ -1446,11 +1444,12 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
>  		unsigned long possible_crtcs, u32 master_plane_id)
>  {
>  	struct drm_plane *plane = NULL, *master_plane = NULL;
> -	const struct dpu_format_extended *format_list;
> +	const uint32_t *format_list;
>  	struct dpu_plane *pdpu;
>  	struct msm_drm_private *priv = dev->dev_private;
>  	struct dpu_kms *kms = to_dpu_kms(priv->kms);
>  	int zpos_max = DPU_ZPOS_MAX;
> +	uint32_t num_formats;
>  	int ret = -EINVAL;
>  
>  	/* create and zero local structure */
> @@ -1493,23 +1492,17 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
>  		goto clean_sspp;
>  	}
>  
> -	if (!master_plane_id)
> -		format_list = pdpu->pipe_sblk->format_list;
> -	else
> +	if (pdpu->is_virtual) {
>  		format_list = pdpu->pipe_sblk->virt_format_list;
> -
> -	pdpu->nformats = dpu_populate_formats(format_list,
> -				pdpu->formats,
> -				0,
> -				ARRAY_SIZE(pdpu->formats));
> -
> -	if (!pdpu->nformats) {
> -		DPU_ERROR("[%u]no valid formats for plane\n", pipe);
> -		goto clean_sspp;
> +		num_formats = pdpu->pipe_sblk->virt_num_formats;
> +	}
> +	else {
> +		format_list = pdpu->pipe_sblk->format_list;
> +		num_formats = pdpu->pipe_sblk->num_formats;
>  	}
>  
>  	ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs,
> -				pdpu->formats, pdpu->nformats,
> +				format_list, num_formats,
>  				NULL, type, NULL);
>  	if (ret)
>  		goto clean_sspp;
> -- 
> 2.20.0.rc2.403.gdbc3b29805-goog
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/5] drm/msm/dpu: Plane helper for modifiers
  2018-12-11 18:42 ` [PATCH 3/5] drm/msm/dpu: Plane helper for modifiers Fritz Koenig
@ 2018-12-12 16:11   ` Sean Paul
  0 siblings, 0 replies; 12+ messages in thread
From: Sean Paul @ 2018-12-12 16:11 UTC (permalink / raw)
  To: Fritz Koenig; +Cc: sean, dri-devel

On Tue, Dec 11, 2018 at 10:42:22AM -0800, Fritz Koenig wrote:
> Filter planes based on the supported modifiers
> 
> Signed-off-by: Fritz Koenig <frkoenig@google.com>

Reviewed-by: Sean Paul <sean@poorly.run>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> index 6a49c253bbdc..9381c8af76d7 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> @@ -1410,6 +1410,23 @@ static void dpu_plane_early_unregister(struct drm_plane *plane)
>  	debugfs_remove_recursive(pdpu->debugfs_root);
>  }
>  
> +static bool dpu_plane_format_mod_supported(struct drm_plane *plane,
> +		uint32_t format, uint64_t modifier)
> +{
> +	if (modifier == DRM_FORMAT_MOD_LINEAR)
> +		return true;
> +
> +	if (modifier == DRM_FORMAT_MOD_QCOM_COMPRESSED) {
> +		int i;
> +		for (i = 0; i < ARRAY_SIZE(qcom_compressed_supported_formats); i++) {
> +			if (format == qcom_compressed_supported_formats[i])
> +				return true;
> +		}
> +	}
> +
> +	return false;

nit: You could have removed the top conditional and just do
        return modifier == DRM_FORMAT_MOD_LINEAR; 
     here, but this is cool too.

> +}
> +
>  static const struct drm_plane_funcs dpu_plane_funcs = {
>  		.update_plane = drm_atomic_helper_update_plane,
>  		.disable_plane = drm_atomic_helper_disable_plane,
> @@ -1419,6 +1436,7 @@ static const struct drm_plane_funcs dpu_plane_funcs = {
>  		.atomic_destroy_state = dpu_plane_destroy_state,
>  		.late_register = dpu_plane_late_register,
>  		.early_unregister = dpu_plane_early_unregister,
> +		.format_mod_supported = dpu_plane_format_mod_supported,
>  };
>  
>  static const struct drm_plane_helper_funcs dpu_plane_helper_funcs = {
> -- 
> 2.20.0.rc2.403.gdbc3b29805-goog
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers
  2018-12-11 18:42 ` [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers Fritz Koenig
@ 2018-12-12 16:12   ` Sean Paul
  2018-12-12 18:02     ` Fritz Koenig
  0 siblings, 1 reply; 12+ messages in thread
From: Sean Paul @ 2018-12-12 16:12 UTC (permalink / raw)
  To: Fritz Koenig; +Cc: sean, dri-devel

On Tue, Dec 11, 2018 at 10:42:23AM -0800, Fritz Koenig wrote:
> Pass list of supported modifiers to plane init.
> 
> Signed-off-by: Fritz Koenig <frkoenig@google.com>
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> index 9381c8af76d7..d2d4720f6f8c 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> @@ -119,6 +119,12 @@ struct dpu_plane {
>  	bool debugfs_default_scale;
>  };
>  
> +static const uint64_t supported_format_modifiers[] = {
> +	DRM_FORMAT_MOD_QCOM_COMPRESSED,

Did you confirm that all the planes support this?

Change is

Reviewed-by: Sean Paul <sean@poorly.run>


> +	DRM_FORMAT_MOD_LINEAR,
> +	DRM_FORMAT_MOD_INVALID
> +};
> +
>  #define to_dpu_plane(x) container_of(x, struct dpu_plane, base)
>  
>  static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane)
> @@ -1521,7 +1527,7 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
>  
>  	ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs,
>  				format_list, num_formats,
> -				NULL, type, NULL);
> +				supported_format_modifiers, type, NULL);
>  	if (ret)
>  		goto clean_sspp;
>  
> -- 
> 2.20.0.rc2.403.gdbc3b29805-goog
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 5/5] drm/msm/dpu: Correct initialization of modifiers
  2018-12-11 18:42 ` [PATCH 5/5] drm/msm/dpu: Correct initialization of modifiers Fritz Koenig
@ 2018-12-12 16:13   ` Sean Paul
  0 siblings, 0 replies; 12+ messages in thread
From: Sean Paul @ 2018-12-12 16:13 UTC (permalink / raw)
  To: Fritz Koenig; +Cc: sean, dri-devel

On Tue, Dec 11, 2018 at 10:42:24AM -0800, Fritz Koenig wrote:
> allow_fb_modifiers needs to be set before drm_universal_plane_init
> is called.
> 
> Signed-off-by: Fritz Koenig <frkoenig@google.com>

Reviewed-by: Sean Paul <sean@poorly.run>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index 4d67b3c96702..56555c3a750a 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -926,16 +926,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
>  		goto hw_intr_init_err;
>  	}
>  
> -	/*
> -	 * _dpu_kms_drm_obj_init should create the DRM related objects
> -	 * i.e. CRTCs, planes, encoders, connectors and so forth
> -	 */
> -	rc = _dpu_kms_drm_obj_init(dpu_kms);
> -	if (rc) {
> -		DPU_ERROR("modeset init failed: %d\n", rc);
> -		goto drm_obj_init_err;
> -	}
> -
>  	dev->mode_config.min_width = 0;
>  	dev->mode_config.min_height = 0;
>  
> @@ -952,6 +942,16 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
>  	 */
>  	dev->mode_config.allow_fb_modifiers = true;
>  
> +	/*
> +	 * _dpu_kms_drm_obj_init should create the DRM related objects
> +	 * i.e. CRTCs, planes, encoders, connectors and so forth
> +	 */
> +	rc = _dpu_kms_drm_obj_init(dpu_kms);
> +	if (rc) {
> +		DPU_ERROR("modeset init failed: %d\n", rc);
> +		goto drm_obj_init_err;
> +	}
> +
>  	dpu_vbif_init_memtypes(dpu_kms);
>  
>  	pm_runtime_put_sync(&dpu_kms->pdev->dev);
> -- 
> 2.20.0.rc2.403.gdbc3b29805-goog
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers
  2018-12-12 16:12   ` Sean Paul
@ 2018-12-12 18:02     ` Fritz Koenig
  2018-12-12 20:35       ` Sean Paul
  0 siblings, 1 reply; 12+ messages in thread
From: Fritz Koenig @ 2018-12-12 18:02 UTC (permalink / raw)
  To: sean; +Cc: dri-devel

On Wed, Dec 12, 2018 at 8:12 AM Sean Paul <sean@poorly.run> wrote:
>
> On Tue, Dec 11, 2018 at 10:42:23AM -0800, Fritz Koenig wrote:
> > Pass list of supported modifiers to plane init.
> >
> > Signed-off-by: Fritz Koenig <frkoenig@google.com>
> > ---
> >  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> > index 9381c8af76d7..d2d4720f6f8c 100644
> > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> > @@ -119,6 +119,12 @@ struct dpu_plane {
> >       bool debugfs_default_scale;
> >  };
> >
> > +static const uint64_t supported_format_modifiers[] = {
> > +     DRM_FORMAT_MOD_QCOM_COMPRESSED,
>
> Did you confirm that all the planes support this?
>

I have not confirmed that all planes support this.  My testing has
been mostly with null_platform_test.  There are a few comments on in
the code that seem to indicate to me that the same modifier must be
used on all planes.

from dpu_formats.c
/*
* Currently only support exactly zero or one modifier.
* All planes use the same modifier.
*/

from dpu_hw_catalog.h
/**
 * struct dpu_format_extended - define dpu specific pixel format+modifier
 * @fourcc_format: Base FOURCC pixel format code
 * @modifier: 64-bit drm format modifier, same modifier must be applied to all
 *            framebuffer planes
 */

> Change is
>
> Reviewed-by: Sean Paul <sean@poorly.run>
>
>
> > +     DRM_FORMAT_MOD_LINEAR,
> > +     DRM_FORMAT_MOD_INVALID
> > +};
> > +
> >  #define to_dpu_plane(x) container_of(x, struct dpu_plane, base)
> >
> >  static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane)
> > @@ -1521,7 +1527,7 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
> >
> >       ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs,
> >                               format_list, num_formats,
> > -                             NULL, type, NULL);
> > +                             supported_format_modifiers, type, NULL);
> >       if (ret)
> >               goto clean_sspp;
> >
> > --
> > 2.20.0.rc2.403.gdbc3b29805-goog
> >
>
> --
> Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers
  2018-12-12 18:02     ` Fritz Koenig
@ 2018-12-12 20:35       ` Sean Paul
  0 siblings, 0 replies; 12+ messages in thread
From: Sean Paul @ 2018-12-12 20:35 UTC (permalink / raw)
  To: Fritz Koenig; +Cc: sean, dri-devel

On Wed, Dec 12, 2018 at 10:02:26AM -0800, Fritz Koenig wrote:
> On Wed, Dec 12, 2018 at 8:12 AM Sean Paul <sean@poorly.run> wrote:
> >
> > On Tue, Dec 11, 2018 at 10:42:23AM -0800, Fritz Koenig wrote:
> > > Pass list of supported modifiers to plane init.
> > >
> > > Signed-off-by: Fritz Koenig <frkoenig@google.com>
> > > ---
> > >  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 8 +++++++-
> > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> > > index 9381c8af76d7..d2d4720f6f8c 100644
> > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> > > @@ -119,6 +119,12 @@ struct dpu_plane {
> > >       bool debugfs_default_scale;
> > >  };
> > >
> > > +static const uint64_t supported_format_modifiers[] = {
> > > +     DRM_FORMAT_MOD_QCOM_COMPRESSED,
> >
> > Did you confirm that all the planes support this?
> >
> 
> I have not confirmed that all planes support this.  My testing has
> been mostly with null_platform_test.  There are a few comments on in
> the code that seem to indicate to me that the same modifier must be
> used on all planes.
> 
> from dpu_formats.c
> /*
> * Currently only support exactly zero or one modifier.
> * All planes use the same modifier.
> */
> 
> from dpu_hw_catalog.h
> /**
>  * struct dpu_format_extended - define dpu specific pixel format+modifier
>  * @fourcc_format: Base FOURCC pixel format code
>  * @modifier: 64-bit drm format modifier, same modifier must be applied to all
>  *            framebuffer planes
>  */

Ah cool, that's good enough for me. I'll pick these into dpu-staging.

Sean

> 
> > Change is
> >
> > Reviewed-by: Sean Paul <sean@poorly.run>
> >
> >
> > > +     DRM_FORMAT_MOD_LINEAR,
> > > +     DRM_FORMAT_MOD_INVALID
> > > +};
> > > +
> > >  #define to_dpu_plane(x) container_of(x, struct dpu_plane, base)
> > >
> > >  static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane)
> > > @@ -1521,7 +1527,7 @@ struct drm_plane *dpu_plane_init(struct drm_device *dev,
> > >
> > >       ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs,
> > >                               format_list, num_formats,
> > > -                             NULL, type, NULL);
> > > +                             supported_format_modifiers, type, NULL);
> > >       if (ret)
> > >               goto clean_sspp;
> > >
> > > --
> > > 2.20.0.rc2.403.gdbc3b29805-goog
> > >
> >
> > --
> > Sean Paul, Software Engineer, Google / Chromium OS

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-12-12 20:35 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-11 18:42 [PATCH 1/5] drm/msm/dpu: Remove unused format tables Fritz Koenig
2018-12-11 18:42 ` [PATCH 2/5] drm/msm/dpu: Use simple list for plane format init Fritz Koenig
2018-12-12 16:08   ` Sean Paul
2018-12-11 18:42 ` [PATCH 3/5] drm/msm/dpu: Plane helper for modifiers Fritz Koenig
2018-12-12 16:11   ` Sean Paul
2018-12-11 18:42 ` [PATCH 4/5] drm/msm/dpu: Initialize supported modifiers Fritz Koenig
2018-12-12 16:12   ` Sean Paul
2018-12-12 18:02     ` Fritz Koenig
2018-12-12 20:35       ` Sean Paul
2018-12-11 18:42 ` [PATCH 5/5] drm/msm/dpu: Correct initialization of modifiers Fritz Koenig
2018-12-12 16:13   ` Sean Paul
2018-12-12 16:05 ` [PATCH 1/5] drm/msm/dpu: Remove unused format tables Sean Paul

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).