mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
synced 2026-04-18 06:34:27 -04:00
drm: Introduce solid fill DRM plane property
Document and add support for solid_fill property to drm_plane. In
addition, add support for setting and getting the values for solid_fill.
To enable solid fill planes, userspace must assign a property blob to
the "solid_fill" plane property containing the following information:
struct drm_mode_solid_fill {
u32 r, g, b, pad;
};
Acked-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Sebastian Wick <sebastian@sebastianwick.net>
Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20231027-solid-fill-v7-2-780188bfa7b2@quicinc.com
This commit is contained in:
committed by
Dmitry Baryshkov
parent
e50e5fed41
commit
85863a4e16
@@ -316,6 +316,20 @@ 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)
|
||||
{
|
||||
@@ -564,6 +578,15 @@ 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) {
|
||||
@@ -654,6 +677,9 @@ 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) {
|
||||
|
||||
Reference in New Issue
Block a user