Commit e5fba1ad authored by Dmitry Baryshkov's avatar Dmitry Baryshkov
Browse files

Revert "drm: Introduce solid fill DRM plane property"



This reverts commit 85863a4e.

Although the Solid Fill planes patchset got all reviews and
acknowledgements, it doesn't fulfill requirements for the new uABI. It
has neither corresponding open-source userspace implementation nor the
IGT tests coverage. Reverting this patchset until userspace obligations
are fulfilled.

Acked-by: default avatarSimon Ser <contact@emersion.fr>
Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20231204131455.19023-7-dmitry.baryshkov@linaro.org
parent 5fb1ad3f
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -254,11 +254,6 @@ void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *plane_state,
	plane_state->pixel_blend_mode = DRM_MODE_BLEND_PREMULTI;
	plane_state->pixel_source = DRM_PLANE_PIXEL_SOURCE_FB;

	if (plane_state->solid_fill_blob) {
		drm_property_blob_put(plane_state->solid_fill_blob);
		plane_state->solid_fill_blob = NULL;
	}

	if (plane->color_encoding_property) {
		if (!drm_object_property_get_default_value(&plane->base,
							   plane->color_encoding_property,
@@ -355,9 +350,6 @@ void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
	if (state->fb)
		drm_framebuffer_get(state->fb);

	if (state->solid_fill_blob)
		drm_property_blob_get(state->solid_fill_blob);

	state->fence = NULL;
	state->commit = NULL;
	state->fb_damage_clips = NULL;
@@ -407,7 +399,6 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
		drm_crtc_commit_put(state->commit);

	drm_property_blob_put(state->fb_damage_clips);
	drm_property_blob_put(state->solid_fill_blob);
}
EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);

+0 −26
Original line number Diff line number Diff line
@@ -316,20 +316,6 @@ drm_atomic_set_crtc_for_connector(struct drm_connector_state *conn_state,
}
EXPORT_SYMBOL(drm_atomic_set_crtc_for_connector);

static void drm_atomic_set_solid_fill_prop(struct drm_plane_state *state)
{
	struct drm_mode_solid_fill *user_info;

	if (!state->solid_fill_blob)
		return;

	user_info = (struct drm_mode_solid_fill *)state->solid_fill_blob->data;

	state->solid_fill.r = user_info->r;
	state->solid_fill.g = user_info->g;
	state->solid_fill.b = user_info->b;
}

static void set_out_fence_for_crtc(struct drm_atomic_state *state,
				   struct drm_crtc *crtc, s32 __user *fence_ptr)
{
@@ -578,15 +564,6 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
		state->src_h = val;
	} else if (property == plane->pixel_source_property) {
		state->pixel_source = val;
	} else if (property == plane->solid_fill_property) {
		ret = drm_atomic_replace_property_blob_from_id(dev,
				&state->solid_fill_blob,
				val, sizeof(struct drm_mode_solid_fill),
				-1, &replaced);
		if (ret)
			return ret;

		drm_atomic_set_solid_fill_prop(state);
	} else if (property == plane->alpha_property) {
		state->alpha = val;
	} else if (property == plane->blend_mode_property) {
@@ -677,9 +654,6 @@ drm_atomic_plane_get_property(struct drm_plane *plane,
		*val = state->src_h;
	} else if (property == plane->pixel_source_property) {
		*val = state->pixel_source;
	} else if (property == plane->solid_fill_property) {
		*val = state->solid_fill_blob ?
			state->solid_fill_blob->base.id : 0;
	} else if (property == plane->alpha_property) {
		*val = state->alpha;
	} else if (property == plane->blend_mode_property) {
+0 −30
Original line number Diff line number Diff line
@@ -204,10 +204,6 @@
 *	"FB":
 *		Framebuffer source set by the "FB_ID" property.
 *
 * solid_fill:
 *	solid_fill is set up with drm_plane_create_solid_fill_property(). It
 *	contains pixel data that drivers can use to fill a plane.
 *
 * Note that all the property extensions described here apply either to the
 * plane or the CRTC (e.g. for the background color, which currently is not
 * exposed and assumed to be black).
@@ -713,29 +709,3 @@ int drm_plane_create_pixel_source_property(struct drm_plane *plane,
	return 0;
}
EXPORT_SYMBOL(drm_plane_create_pixel_source_property);

/**
 * drm_plane_create_solid_fill_property - create a new solid_fill property
 * @plane: drm plane
 *
 * This creates a new property blob that holds pixel data for solid fill planes.
 * The property is exposed to userspace as a property blob called "solid_fill".
 *
 * For information on what the blob contains, see `drm_mode_solid_fill`.
 */
int drm_plane_create_solid_fill_property(struct drm_plane *plane)
{
	struct drm_property *prop;

	prop = drm_property_create(plane->dev,
			DRM_MODE_PROP_ATOMIC | DRM_MODE_PROP_BLOB,
			"solid_fill", 0);
	if (!prop)
		return -ENOMEM;

	drm_object_attach_property(&plane->base, prop, 0);
	plane->solid_fill_property = prop;

	return 0;
}
EXPORT_SYMBOL(drm_plane_create_solid_fill_property);
+0 −1
Original line number Diff line number Diff line
@@ -60,5 +60,4 @@ int drm_plane_create_blend_mode_property(struct drm_plane *plane,
					 unsigned int supported_modes);
int drm_plane_create_pixel_source_property(struct drm_plane *plane,
					   unsigned long extra_sources);
int drm_plane_create_solid_fill_property(struct drm_plane *plane);
#endif
+0 −36
Original line number Diff line number Diff line
@@ -46,18 +46,6 @@ enum drm_plane_pixel_source {
	DRM_PLANE_PIXEL_SOURCE_MAX
};

/**
 * struct solid_fill_property - RGB values for solid fill plane
 *
 * TODO: Add solid fill source and corresponding pixel source
 *       that supports RGBA color
 */
struct drm_solid_fill {
	uint32_t r;
	uint32_t g;
	uint32_t b;
};

/**
 * struct drm_plane_state - mutable plane state
 *
@@ -146,23 +134,6 @@ struct drm_plane_state {
	 */
	enum drm_plane_pixel_source pixel_source;

	/**
	 * @solid_fill_blob:
	 *
	 * Blob containing relevant information for a solid fill plane
	 * including RGB color values. See
	 * drm_plane_create_solid_fill_property() for more details.
	 */
	struct drm_property_blob *solid_fill_blob;

	/**
	 * @solid_fill:
	 *
	 * Pixel data for solid fill planes. See
	 * drm_plane_create_solid_fill_property() for more details.
	 */
	struct drm_solid_fill solid_fill;

	/**
	 * @alpha:
	 * Opacity of the plane with 0 as completely transparent and 0xffff as
@@ -763,13 +734,6 @@ struct drm_plane {
	 */
	struct drm_property *pixel_source_property;

	/**
	 * @solid_fill_property:
	 * Optional solid_fill property for this plane. See
	 * drm_plane_create_solid_fill_property().
	 */
	struct drm_property *solid_fill_property;

	/**
	 * @alpha_property:
	 * Optional alpha property for this plane. See
Loading