Filter planes based on the supported modifiers

Signed-off-by: Fritz Koenig <frkoe...@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

Reply via email to