drm/msm/dpu: Plane helper for modifiers
authorFritz Koenig <frkoenig@google.com>
Tue, 11 Dec 2018 18:42:22 +0000 (10:42 -0800)
committerSean Paul <seanpaul@chromium.org>
Fri, 1 Feb 2019 15:35:54 +0000 (10:35 -0500)
Filter planes based on the supported modifiers

Signed-off-by: Fritz Koenig <frkoenig@google.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c

index ee5f484937b9e1fbdd14212a42d4a456704e9047..020a23ca606a44080da2653ddc22da33905546e0 100644 (file)
@@ -1408,6 +1408,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,
@@ -1417,6 +1434,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 = {