Commit e5fba1ad authored by Dmitry Baryshkov's avatar Dmitry Baryshkov

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
......@@ -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);
......
......@@ -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) {
......
......@@ -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);
......@@ -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
......@@ -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
......
......@@ -259,30 +259,6 @@ struct drm_mode_modeinfo {
char name[DRM_DISPLAY_MODE_LEN];
};
/**
* struct drm_mode_solid_fill - User info for solid fill planes
*
* This is the userspace API solid fill information structure.
*
* Userspace can enable solid fill planes by assigning the plane "solid_fill"
* property to a blob containing a single drm_mode_solid_fill struct populated with an RGB323232
* color and setting the pixel source to "SOLID_FILL".
*
* For information on the plane property, see drm_plane_create_solid_fill_property()
*
* @r: Red color value of single pixel
* @g: Green color value of single pixel
* @b: Blue color value of single pixel
* @pad: padding, must be zero
*/
struct drm_mode_solid_fill {
__u32 r;
__u32 g;
__u32 b;
__u32 pad;
};
struct drm_mode_card_res {
__u64 fb_id_ptr;
__u64 crtc_id_ptr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment