[v2 15/25] drm/i915/color: Add framework to set colorop
Uma Shankar
uma.shankar at intel.com
Tue Nov 26 13:27:20 UTC 2024
From: Chaitanya Kumar Borah <chaitanya.kumar.borah at intel.com>
Add infrastructure to set colorop. We iterate through all the color ops
in a selected COLOR PIPELINE and set them one by one.
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah at intel.com>
Signed-off-by: Uma Shankar <uma.shankar at intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 31 ++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_color.h | 3 +++
2 files changed, 34 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 8bbaca9b3e9d..01bd5820a12b 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -4083,6 +4083,37 @@ struct intel_plane_colorop *intel_plane_colorop_create(enum intel_color_block id
return colorop;
}
+static void apply_colorop(const struct drm_plane_state *plane_state,
+ struct drm_colorop *colorop,
+ u32 *plane_color_ctl)
+{
+}
+
+void intel_program_pipeline(const struct drm_plane_state *plane_state, u32 *plane_color_ctl)
+{
+ struct drm_colorop *colorop;
+
+ colorop = plane_state->color_pipeline;
+
+ while (colorop) {
+ struct drm_colorop_state *colorop_state;
+
+ if (!colorop)
+ return;
+
+ /* TODO this is probably wrong */
+ colorop_state = colorop->state;
+
+ if (!colorop_state)
+ return;
+
+ if (!colorop_state->bypass)
+ apply_colorop(plane_state, colorop, plane_color_ctl);
+
+ colorop = colorop->next;
+ }
+}
+
int intel_plane_tf_pipeline_init(struct drm_plane *plane, struct drm_prop_enum_list *list)
{
struct intel_plane_colorop *colorop;
diff --git a/drivers/gpu/drm/i915/display/intel_color.h b/drivers/gpu/drm/i915/display/intel_color.h
index 8a3bf5b79e39..7be2453eee0a 100644
--- a/drivers/gpu/drm/i915/display/intel_color.h
+++ b/drivers/gpu/drm/i915/display/intel_color.h
@@ -15,6 +15,7 @@ struct intel_display;
struct intel_dsb;
struct drm_property_blob;
struct drm_plane;
+struct drm_plane_state;
struct drm_prop_enum_list;
enum intel_color_block;
@@ -47,5 +48,7 @@ struct intel_plane_colorop *intel_colorop_alloc(void);
struct intel_plane_colorop *intel_plane_colorop_create(enum intel_color_block id);
int intel_plane_tf_pipeline_init(struct drm_plane *plane, struct drm_prop_enum_list *list);
int intel_plane_color_init(struct drm_plane *plane);
+void intel_program_pipeline(const struct drm_plane_state *plane_state,
+ u32 *plane_color_ctl);
#endif /* __INTEL_COLOR_H__ */
--
2.42.0
More information about the dri-devel
mailing list