Skip to content
/ linux Public
forked from torvalds/linux

Commit

Permalink
drm/atomic: If margins are updated, update all planes.
Browse files Browse the repository at this point in the history
Margins may be implemented by scaling the planes, but as there
is no way of intercepting the set_property for a standard property,
and all planes are checked in drm_atomic_check_only before the
connectors, there's now way to add the planes into the state
from the driver.

If the margin properties change, add all corresponding planes to
the state.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
  • Loading branch information
6by9 authored and mripard committed Oct 17, 2022
1 parent bd3ce10 commit bf84409
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/gpu/drm/drm_atomic_uapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,7 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
{
struct drm_device *dev = connector->dev;
struct drm_mode_config *config = &dev->mode_config;
bool margins_updated = false;
bool replaced = false;
int ret;

Expand All @@ -698,12 +699,16 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
state->tv.subconnector = val;
} else if (property == config->tv_left_margin_property) {
state->tv.margins.left = val;
margins_updated = true;
} else if (property == config->tv_right_margin_property) {
state->tv.margins.right = val;
margins_updated = true;
} else if (property == config->tv_top_margin_property) {
state->tv.margins.top = val;
margins_updated = true;
} else if (property == config->tv_bottom_margin_property) {
state->tv.margins.bottom = val;
margins_updated = true;
} else if (property == config->tv_mode_property) {
state->tv.mode = val;
} else if (property == config->tv_brightness_property) {
Expand Down Expand Up @@ -784,6 +789,12 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
return -EINVAL;
}

if (margins_updated && state->crtc) {
ret = drm_atomic_add_affected_planes(state->state, state->crtc);

return ret;
}

return 0;
}

Expand Down

0 comments on commit bf84409

Please sign in to comment.